А если речь идет о совсем новом ядре - то вам не нужны заголовки.
Посмотрите, как устроен пакет, и соберите пакет под себя.
Ну или просто соберите ядро, пропишите его в загрузчик и перегружайтесь в него.
На kernel.org лежат исходники ядра, там есть все, что необходимо для его сборки.
А в дистрибутиве в пакетах kernel* лежат - само ядро в отдельном пакете (нужно для загрузки), заголовки под это ядро - нужны для сборки остального софта, чтобы не разворачивать на сервере полную среду сборки и т.д.
раз cdrom - то не нашлось драйвера под модем, вот он вам по умолчанию диск с дровами и отдает....
в udev настроить, чтобы правильный драйвер цеплялся...
Изучайте реверс-инжиниринг. Однозначного ответа вам никто не даст.
Смотрите как работает клиент, изучайте какие файлы открываются, читаются, пытайтесь определить структуру.
Дело небыстрое, сложное....
Почему мне захотелось вас в сторону СДСМ отправить...
Если вы сделаете нат в фейковый ип - ответ от сервера прийдет на фейковый ип. И если этот ип не на вашем нате - то вы этот ответ никогда не увидите...
Ну а то, что отправлять в впн туннель только то, что надо - ну это вообще изначально так и делается, я удивлен что это для вас открытие....
Еще раз. Ядро грузится один раз, при загрузке сервера, в память. После этого нахождение его на диске ни на что не влияет. Максимум, что у вас сейчас может пойти не так - это если вы воткнете в сервер новое устройство, его драйвера не будет в памяти и ядро попытается его подгрузить.
Вы обновили систему, установили новое ядро, в загрузчике оно прописалось.
Теперь вам НАДО ребутнуть систему, чтобы оно загрузилось.
Что вам еще непонятно?
eve-ng для моделирования ядра сети и пачка всяких длинков и тплинков для всего остального.
Софт, который сможет симулировать любую железку - не существует. Особенно если надо еще учесть особенности того же длинка или зикселя, в народе именуемые багами....