我想使用 iptables 将 CentOS 变成端口转发 NAT 机器。这是我第一次尝试,我想我可能需要一点帮助。
这是我想要实现的配置。我尝试通过 CentOS 机器在端口 5500 上建立远程桌面连接,并让 CentOS 连接到端口 3389 上的服务器。
192.168.21.11 是客户端,它应该通过连接到 192.168.21.10(CentOS)的端口 5500 来连接到 192.168.9.120 上的端口 3389。
- CentOS eth0 是 192.168.9.20/24
- CentOS eth1 是 192.168.21.10/24
我到目前为止尝试过的:
- 禁用 SELINUX
在 /etc/sysctl.conf 中启用 IPv4 转发
/etc/sysctl.conf net.ipv4.ip_forward = 1
运行以下 iptables 命令
iptables -t nat -A PREROUTING -p tcp -d 192.168.21.10 --dport 5500 -j DNAT --to 192.168.9.120:3389 iptables -A INPUT -i eth1 -p tcp --dport 5500 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 5500 -m state --state ESTABLISHED -j ACCEPT service iptables save
保存此配置后,我无法建立尝试实现的远程桌面连接,那么我的 iptables 规则有什么问题吗?还是我可能遗漏了什么?
答案1
尝试在 /etc/sysconfig/iptables 中添加此规则-A PREROUTING -p tcp -d 192.168.21.10 --dport 5500 -j DNAT --to 192.168.9.120:3389
-A POSTROUTING -d 192.168.9.120 -j MASQUERADE
通过执行“sysctl -a | grep net.ipv4.ip_forward”检查 net.ipv4.ip_forward 是否设置为 1
如果仍然设置在 0 则执行:
sysctl -w net.ipv4.ip_forward=1
答案2
尝试添加:
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT