Процесс настройки шлюза (NAT) на системах UNIX, обычно, выполняется в несколько команд: включением перенаправления на уровне системы и настройкой firewall.
Настройка системы
Настройка брандмауэра
Проброс портов
Настройка системы
Все что нужно настроить — включить перенаправления на уровне ядра. Для этого открываем следующий файл:
vi /etc/sysctl.conf
И добавляем в него следующую строку:
net.ipv4.ip_forward=1
После применяем настройку:
sysctl -p /etc/sysctl.conf
В случае с единым сетевым интерфейсом больше ничего делать не потребуется — CentOS начнет работать как Интернет-шлюз.
В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран.
Настройка брандмауэра
Рассмотрим настройку фаервола при помощи двух различных популярных утилит — firewalld и iptables.
Firewalld
Настройка выполняется для двух сетевых интерфейсов — ens32 (внутренний) и ens34 (внешний):
firewall-cmd --direct --permanent --add-rule ipv4 nat POSTROUTING 0 -o ens34 -j MASQUERADE
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens32 -o ens34 -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i ens34 -o ens32 -m state --state RELATED,ESTABLISHED -j ACCEPT
systemctl restart firewalld
Iptables
Настройка выполняется из расчета, что внутренняя сеть имеет адресацию 192.168.0.0/24:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
/usr/libexec/iptables/iptables.init save
systemctl restart iptables
Проброс портов (Port Forwarding)
Необходим для перенаправление сетевых запросов на сервер, стоящий за NAT и не имеющий прямого выхода во внешнюю сеть. Настройки отличаются в зависимости от способа управления брандмауэром netfilter.
Firewalld
firewall-cmd --zone=external --permanent --add-forward-port=port=25:proto=tcp:toport=8025:toaddr=192.168.0.15
* где 25 — прослушиваемый внешний порт, для которого сработает перенаправление; tcp — используемый транспортный протокол; 8025 — на какой порт перенаправить запрос; 192.168.0.15 — IP-адрес сервера, на который отправляем запросы.
Разрешаем сам порт:
firewall-cmd --permanent --zone=external --add-port=25/tcp
Чтобы правило вступило в силу:
firewall-cmd --reload
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 1 INPUT -p tcp --dport 25 -j ACCEPT
Не забываем сохранить правила:
/usr/libexec/iptables/iptables.init save
или
service iptables save