Настройка NAT и маршрутизации в Linux — дело серьёзное, но кто сказал, что нельзя с юмором? Представьте себе: ваш Linux-сервер — это такой виртуальный швейцарский нож, который умеет не только варить кофе (ну, почти), но и раздавать интернет всем вашим гаджетам. Сегодня мы погрузимся в мир nmtui, sysctl и nftables — трёх мушкетёров сетевых приключений. Приготовьтесь к весёлому путешествию!
Начнём с nmtui — это как текстовый Tinder для ваших сетевых интерфейсов. Вы заходите туда, листаете список адаптеров и выбираете себе пару: кто будет гулять по просторам интернета (WAN), а кто останется дома, в уютной локальной сети (LAN). Например, ens160 — смелый парень с улицы Интернет, а ens192 — домашний уютный диванчик для ваших устройств. Тут же можно переименовывать интерфейсы — потому что «ens160» звучит как пароль от Wi-Fi у соседа, а хочется чего-то попроще.
После того как вы устроили вечеринку сетевых интерфейсов через nmtui, приходит время обновить обстановку. Для этого запускаем exec bash — это как встряхнуть коктейль перед подачей. Не всегда обязательно, но помогает новеньким переменным среды почувствовать себя на высоте и примениться без лишних вопросов.
Далее включаем IP-переадресацию. Это как сказать вашему серверу: «Эй, ты теперь не просто компьютер, ты настоящий почтальон! Пересылай пакеты дальше!» Для этого открываем /etc/sysctl.conf и ставим там net.ipv4.ip_forward = 1. Без этой строчки сервер будет сидеть тихо-тихо и молчать про все запросы из локалки. А с ней он превращается в роутер-мечту! После изменений не забудьте команду sysctl -p — она заставляет настройки вступить в силу быстрее, чем вы успеете сказать «ping».
Теперь самое весёлое — настройка NAT через nftables. Представьте себе маскарадинг как вечеринку в масках: все ваши локальные устройства выходят в интернет под прикрытием IP сервера. Создаём файл /etc/nftables/my_nat.nft и пишем туда волшебные заклинания:
table inet nat {
chain POSTROUTING {
type nat hook postrouting priority srcnat;
oifname «ens160» masquerade
}
}
Если вам кажется, что это выглядит как рецепт борща на эльфийском языке — не волнуйтесь! Главное понять: после этих строчек весь трафик из вашей локалки будет выходить наружу под флагом вашего сервера.
Затем редактируем /etc/sysconfig/nftables.conf: убираем комментарий у строки include «/etc/nftables/main.nft» и меняем путь на наш файл my_nat.nft. Это как пригласить нашего маскарадерского шефа на главный бал nftables.
Не забываем запустить службу nftables командой systemctl enable —now nftables. enable гарантирует автозапуск при старте системы (чтобы сервер не забывал о своих обязанностях после перезагрузки), а —now запускает его сразу же — иначе можно долго ждать чудес.
И вот результат: ваш Linux-сервер теперь пересылает пакеты между интерфейсами (IP forwarding включён), скрывает вашу локалку за своим IP (NAT работает) и играет роль настоящего маршрутизатора! Клиенты LAN отправляют запросы через ens192 к вашему серверу; он ловко меняет адрес на ens160 и отправляет их в интернет; ответы возвращаются назад точно туда же.
Конечно, бывают ошибки — например, забыть включить ip_forward или перепутать интерфейсы. Это всё равно что прийти на вечеринку без приглашения или перепутать входную дверь с кухней. Чтобы проверить свои успехи, используйте команды nft list ruleset для просмотра правил NAT и cat /proc/sys/net/ipv4/ip_forward для проверки маршрутизации (там должно быть «1», иначе ваш сервер стесняется работать).