Интернет шлюз на Ubuntu / Debian


Тематические термины: интернет шлюз, Ubuntu, NAT.
Процесс настройки шлюза включает выполнение нескольких шагов:
- Включение redirect на уровне ядра.
- Настройкой брандмауэра.
- Опционально, настройка проброса портов.
Настройка ядра системы
Открываем следующий файл:
vi /etc/sysctl.d/gateway.conf
Добавляем в него строку:
net.ipv4.ip_forward=1
Применяем настройку:
sysctl -p /etc/sysctl.d/gateway.conf
Если мы получим ошибку sysctl command not found, либо нужно установить пакет:
apt install procps
либо перезайти в режим суперпользователя с загрузкой его окружения:
su -
В случае с единственным сетевым адаптером больше ничего делать не потребуется — Ubuntu начнет работать как Интернет-шлюз.
В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран.
Настройка брандмауэра
Как правило, управление брандмауэром netfilter в Linux на базе Debian выполняется с помощью утилиты iptables.
Iptables
Предположим, что сеть Интернет настроена через интерфейс ens160, а локальная сеть доступна через ens32. Создадим правило:
iptables -t nat -I POSTROUTING -o ens160 -j MASQUERADE
Если на сервере для доступа в локальную и глобальную сети используются разные сетевые интерфейсы, нам может понадобиться создать еще два правила.
iptables -I FORWARD -i ens32 -o ens160 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i ens32 -o ens160 -j ACCEPT
* интерфейс ens160, как условились ранее, используется для доступа в Интернет. Интерфейс ens32 — локальная сеть.
Сохраняем настройки iptables:
apt install iptables-persistent
netfilter-persistent save
Проброс портов (Port Forwarding)
Необходим для перенаправление сетевых запросов на сервер, стоящий за NAT и не имеющий прямого выхода во внешнюю сеть.
Iptables
Настройка выполняется двумя командами:
iptables -t nat -A PREROUTING -p tcp -m tcp -d 10.8.232.111 --dport 25 -j DNAT --to-destination 192.168.0.15:8025
iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.0.15 --sport 8025 -j SNAT --to-source 10.8.232.111:25
или можно так:
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 25 -j DNAT --to-destination 192.168.0.15:8025
iptables -A FORWARD -p tcp -d 192.168.0.15 --dport 8025 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
* где eth0 — внешний сетевой интерфейс.
Разрешаем порт:
iptables -I INPUT 1 -p tcp --dport 8025 -j ACCEPT
* обратите внимание, что мы разрешаем порт, на который переводим запрос, так как цепочки POSTROUTING и PREROUTING работают до цепочки FILTER, а потому открывать нужно не входящий порт (25), а тот, на который назначается пакет (8025).
Не забываем сохранить правила:
netfilter-persistent save