NAT não funciona no CentOS 7 (Firewalld)

1

Eu configurei o nat para tornar o meu CentOS 7 em um roteador. Eu usei o firewalld para fazer isso. Mas infelizmente não funciona. Não tenho ideia do que causa o problema. Eu tentei a mesma configuração no Virtual Box e está funcionando. Se eu fiz a mesma configuração no servidor de produção, não.

Eth0 ip– meu ip estático

mask-255.255.252.0

gateway-meu gateway ISP

eth1

ip-192.168.1.30

mask-255.255.255.0

1) Encaminhamento de pacotes ativado

vi /etc/sysctl.conf

added “net.ipv4.ip_forward=1”

sysctl –p 

2) Configurando o NAT no firewalld

i) Integrando a interface “eth1” à zona interna

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

• O mascaramento estava "desativado" no padrão

ii) Integrando a interface “eth0” à zona externa

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

iii) "zona interna" alterada como a zona padrão

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

iv) Adicionado DNS para passar por "zona interna"

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

3) Salva a configuração do firewall

Firewall-cmd --reload

Firewall-cmd --complete-reload

4) Também tentei no 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
    
por Anbu 07.01.2015 / 10:36

2 respostas

4

Não vejo na sua configuração onde você define a opção de mascarada para a sua interface externa.

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

Isso é o que funcionou para mim quando comecei a jogar com o infame firewalld

    
por 30.01.2015 / 21:14
0

Eu acho que você precisa configurar masquerade na zona interna e não externo.

Admito que eu ainda não descobri o firewalld mas o CentOS 7.3 rodando o IPTables, eu pude NAT um pedido externo para o 8806 no IP interno na porta 3306 para conexões mysql, com a seguinte configuração:

[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

Observe que o mascaramento é definido no tráfego de saída da eth1 (minha interface interna).

Aqui está o tipo de laboratório de 3 servidores:

[cliente] - > eth0 (público) - > porta mysql 8806 - > eth0 (público) [firewall-dnat] eth1 (interno) - > mysqlport 3306 - > eth1 (interno) db1 (mariadb)

Espero que ajude.

    
por 11.03.2017 / 13:57