Назад | Перейти на главную страницу

NAT не работает на CentOS 7 (Firewalld)

Я настроил nat, чтобы превратить мой CentOS 7 в маршрутизатор. Для этого я использовал firewalld. Но, к сожалению, не работает. Понятия не имею, что вызывает проблему. Я попробовал ту же конфигурацию в Virtual Box, и она работает. Если бы я сделал ту же конфигурацию на производственном сервере, это не так.

Eth0 ip– мой статический ip

маска-255.255.252.0

шлюз-мой шлюз провайдера

eth1

ip-192.168.1.30

маска-255.255.255.0

1) Включена пересылка пакетов

vi /etc/sysctl.conf

added “net.ipv4.ip_forward=1”

sysctl –p 

2) Настройка NAT в firewalld

i) Интеграция интерфейса «eth1» во внутреннюю зону

Firewall-cmd --change-interface=eth1 --zone=internal --permanent

• Маскарадинг по умолчанию отключен.

ii) Интеграция интерфейса «eth0» во внешнюю зону

Firewall-cmd --change-interface=eth0 --zone=external --permanent

iii) Изменена «внутренняя зона» как зона по умолчанию.

Firewall-cmd --set-default-sone=internal --permanent

iv) Добавлен DNS для прохождения «внутренней зоны»

Firewall-cmd --zone=internal --add-service=dns –-permanent

3) Сохранена конфигурация межсетевого экрана

Firewall-cmd --reload

Firewall-cmd --complete-reload

4) Тоже пробовал в iptables

Iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE

Iptables –A FORWARD –i eth1 –j ACCEPT

Echo > 1 /proc/sysc/net/ipv4/ip_forward

Service iptables restart

Я не вижу в вашей конфигурации, где вы устанавливаете опцию маскарада для своего внешнего интерфейса.

firewall-cmd --zone=external --add-masquerade --permanent

Это то, что у меня сработало, когда я начал играть с печально известным firewalld

Я думаю, вам нужно настроить маскарад на внутренней зоне, а не на внешней ..

По общему признанию, я еще не понял firewalld, но CentOS 7.3, работающий с IPTables, смог преобразовать внешний запрос на 8806 во внутренний IP-адрес на порт 3306 для соединений mysql со следующей конфигурацией:

[root@firewall-dnat ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Tue Mar 7 20:06:21 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [343:41670]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -o eth1 -j ACCEPT
-A FORWARD -i eth0 -p tcp -m tcp --dport 8806 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Mar 7 20:06:21 2017
# Generated by iptables-save v1.4.21 on Tue Mar 7 20:06:21 2017
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:76]
:POSTROUTING ACCEPT [1:76]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 8806 -j DNAT --to-destination 10.208.135.106:3306
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Tue Mar 7 20:06:21 2017

Обратите внимание, что теперь маскарад установлен на исходящий трафик eth1 (мой внутренний интерфейс).

Вот как выглядела 3-х серверная лаборатория:

[клиент] -> eth0 (общедоступный) -> mysql порт 8806 -> eth0 (общедоступный) [firewall-dnat] eth1 (внутренний) -> mysqlport 3306 -> eth1 (внутренний) db1 (mariadb)

Надеюсь, это поможет.