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

Используемые термины: интернет шлюз , Ubuntu , NAT .

Процесс настройки шлюза включает выполнение нескольких шагов:

  1. Включение redirect на уровне ядра.
  2. Настройкой брандмауэра.
  3. Опционально, настройка проброса портов.

Настройка ядра системы

Открываем следующий файл:

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 . Для удобства работы создадим переменные:

INTERNET=ens160

LOCAL=ens32

* само собой, у вас это могут быть другие значения.

Теперь создадим правило:

iptables -t nat -I POSTROUTING -o ${INTERNET} -j MASQUERADE

Если на сервере для доступа в локальную и глобальную сети используются разные сетевые интерфейсы, нам может понадобиться создать еще два правила.

iptables -I FORWARD -i ${LOCAL} -o ${INTERNET} -m state —state RELATED,ESTABLISHED -j ACCEPT

iptables -I FORWARD -i ${LOCAL} -o ${INTERNET} -j ACCEPT

* интерфейс ${INTERNET} , как условились ранее, используется для доступа в Интернет. Интерфейс ${LOCAL} — локальная сеть.

Сохраняем настройки iptables:

apt install iptables-persistent

netfilter-persistent save

Проброс портов (Port Forwarding)

Необходим для перенаправление сетевых запросов на сервер, стоящий за NAT и не имеющий прямого выхода во внешнюю сеть.

Iptables

Настройка выполняется двумя командами:

iptables -t nat -I PREROUTING -p tcp -m tcp -d 10.8.232.111 —dport 25 -j DNAT —to-destination 192.168.0.15:8025

iptables -t nat -I POSTROUTING -p tcp -m tcp -s 192.168.0.15 —sport 8025 -j SNAT —to-source 10.8.232.111:25

или можно так:

iptables -t nat -I PREROUTING -p tcp -i eth0 —dport 25 -j DNAT —to-destination 192.168.0.15:8025

iptables -I 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

Шаблон с переменными

Для удобства ввода команд, можно использовать переменные:

Адрес, на который переводим запрос:

IPADDR=192.168.1.10

Порт внешний, на котором слушает NAT:

PORTOUT=443

Порт сервера, куда переводим запрос:

PORTIN=443

Интерфейс NAT, куда приходит запрос:

INT=eth0

Протокол:

PROTO=tcp

И после вводим команды для настройки брандмауэра:

iptables -t nat -I PREROUTING -p ${PROTO} -i ${INT} —dport ${PORTOUT} -j DNAT —to-destination ${IPADDR}:${PORTIN}

iptables -I FORWARD -p ${PROTO} -d ${IPADDR} —dport ${PORTIN} -m state —state NEW,ESTABLISHED,RELATED -j ACCEPT

Не забываем сохранить правила:

netfilter-persistent save

Читайте также

1. Настройка сети в Linux с помощью netplan .

2. Настройка netfilter с помощью iptables .

3. Настройка Интернет шлюза на CentOS .

EnglishRussianUkrainian