NAT不适用于CentOS 7(Firewalld)

我已经configurationnat,使我的CentOS 7成路由器。 我用firewalld来做到这一点。 但不幸的是,它不工作。 我不知道是什么原因引起的问题。 我在Virtual Box中尝试了相同的configuration,它正在工作。 如果我在生产服务器上做了相同的configuration,它没有。

eth0 ip-我的静态ip

面具255.255.252.0

网关 – 我的ISP网关

ETH1

IP-192.168.1.30

面具255.255.255.0

1)启用分组转发

vi /etc/sysctl.conf added “net.ipv4.ip_forward=1” sysctl –p 

2)在firewalld中configurationNAT

i)将接口“eth1”集成到内部区域

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

•伪装在默认情况下“closures”

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)保存防火墙configuration

 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 

我没有在你的configuration中看到你为外部接口设置了伪装选项。

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

当我开始玩臭名昭着的firewalld时,这就是我的工作

我认为你需要在内部区域设立化装舞会,而不是外部舞台。

不可否认的是,我还没有想到firewalld,但是CentOS 7.3运行IPTables,我能够通过以下configuration将外部请求转发到8806端口3306的内部IP:

 [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 

注意现在masquerade设置在eth1(我的内部接口)的出站stream量上。

下面是3服务器实验室的样子:

[client] – > eth0(public) – > mysql port 8806 – > eth0(public)[firewall-dnat] eth1(internal) – > mysqlport 3306 – > eth1(internal)db1(mariadb)

希望有所帮助。