Ах, динамическая сетевая трансляция портов или, как её ласково называют в узких кругах — NAPT, Masquerading и просто «превращение локалки в интернет-путешественника через один IP», — это примерно то же самое, что если бы у вас был один паспорт на всю семью. Представьте: мама идёт в магазин, папа — на работу, дети — в школу, а паспорт у всех один! Но никто не переживает — ведь этот паспорт настолько универсален, что каждый получает свою очередь и спокойно попадает туда, куда нужно. Вот и NAT делает то же самое с IP-адресами.
Для начала представим себе сеть с адресами из диапазона 172.16.1.0/24.
Почему именно этот? Ну, это как выбирать между разными видами пирогов: тебя спрашивают «какой хочешь?» — а ты отвечаешь «давайте тот, что по RFC 1918». Это стандартный приватный диапазон, который любят все сетевые администраторы с хорошим вкусом и чувством юмора.
Перед тем как начать веселье с настройкой NAT-сервера, надо понять свои сетевые интерфейсы.
Команда ip -c a покажет вам всю вашу сетевую «живность» с цветами и подробностями. Если кто-то скажет вам: «посмотри на enp0s8», не пугайтесь — это всего лишь имя интерфейса, а не новая модель смартфона.
Дальше по сценарию мы обновляем систему командой sudo apt-get update -y. Тут главное слово «-y» — оно значит «давай без вопросов», потому что иногда система любит спросить: «Ты точно хочешь обновиться?» А вы ей отвечаете твёрдо: «Да-да-да!»
Пакеты для nftables или firewalld ставятся почти как ингредиенты для борща: dnsmasq для DNS-поддержки, tcpdump для подглядывания за пакетиками (чтобы знать всё о гостях вашей сети), traceroute для путешествий по маршрутам пакетов и NetworkManager-tui для управления всем этим хозяйством из консоли.
Настройка WAN-интерфейса (enp0s3) происходит динамически по DHCP — то есть он сам догадается, где ему взять IP-адрес.
А LAN-интерфейс (enp0s8) назначаем вручную статический адрес 172.16.1.1/24 — это как дать своему компьютеру постоянный домик в вашей сети.
Теперь важный момент: IP-форвардинг! Это разрешение ядру Linux пересылать пакеты между интерфейсами. Без него ваш NAT будет работать примерно так же эффективно, как кот у компьютера: много мяукает, но ничего не делает.
Включить форвардинг можно правкой файла sysctl.conf и изменением net.ipv4.ip_forward=0 на 1 — словно говорите системе: «Ну давай уже пересылай эти пакеты!»
Переходим к nftables — современному фильтру пакетов в Linux. Он пришёл на смену старичку iptables и похож на нового начальника офиса: строгий и эффективный. Проверяем установку rpm -q nftables; запускаем службу sudo systemctl enable —now nftables; делаем резервную копию текущих правил (на всякий случай) и создаём таблицу nat со всеми нужными цепочками.
Правила masquerade позволяют внешнему интерфейсу masquerade (маскироваться), чтобы все ваши внутренние устройства выглядели во внешнем мире как один большой дружный человек с одним IP-адресом.
Чтобы разрешить форвардинг между интерфейсами enp0s8 и enp0s3 добавляем соответствующие правила accept — иначе пакеты будут стоять на месте как пробка в час пик.
Сохраняем правила в файл /etc/nftables/nftables.nft c шебангом #!/usr/sbin/nft -f и директивой flush ruleset сверху — чтобы при загрузке всё было чисто и аккуратно.
После настройки проверяем статус службы systemctl status nftables и тестируем подключение пингом к 8.8.8.8 (известному гугловскому DNS-серверу). Если пинг проходит успешно — можно считать себя настоящим сетевым волшебником!
А теперь немного веселого анекдота про сетевиков:…