使CentOS 7.xa端口转发NAT设备

我想使用iptables使CentOS成为端口转发NAT机器。 这是我第一次尝试这个,我想我可能需要一点帮助。

这是我试图实现的configuration。 我试图通过端口80上的CentOS机器进行远程桌面连接,并且让CentOS连接到端口80上的服务器。

192.168.0.120是通过连接到端口80上的192.168.0.100(CentOS)连接到192.168.30.37端口80的客户端。

  • CentOS的ens160是192.168.0.100/24
  • CentOS的ens192是192.168.30.254/24
  • CentOS的ens224是192.168.40.254/24

我到目前为止所尝试的是:

  1. 禁用SELINUX
  2. 在/etc/sysctl.conf中启用IPv4转发

    /etc/sysctl.conf net.ipv4.ip_forward = 1 
  3. / etc / systemconfig / iptables是

     *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [12:944] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i ens160 -o ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i ens192 -o ens160 -j ACCEPT -A FORWARD -i ens160 -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i ens224 -o ens160 -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT *nat :PREROUTING ACCEPT [4:272] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -i ens160 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.30.37:80 -A POSTROUTING -o ens160 -j MASQUERADE -A POSTROUTING -d 192.168.0.100/32 -j MASQUERADE COMMIT 

那么我的iptables规则有什么问题吗? 还是有什么我可能会失踪?

无论如何,你错过了一个FORWARD规则

 iptables -A FORWARD -i ens160 -o ens192 -p tcp -m tcp -d 192.168.30.37 -m state --state NEW -j ACCEPT 

你需要在这之前插入上面的规则:

 -A FORWARD -j REJECT --reject-with icmp-host-prohibited 

在RedHat Entrprise Linux 7.0(CentOS 7.0的“上游”)中,与iptables交互是通过firewalld 。 如果可能,手动修改iptablesconfiguration不是预期的方法,如果交互。

如果你想直接修改iptablesconfiguration,你可能需要查看关于iptables文档。 你要走正确的道路,但是,例如, -i-o参数意味着表示入口和出口接口( eth0等),而不是主机名。 看起来你只是需要一些背景介绍iptables工作原理。