IPTABLES 转发除 ssh 之外的所有端口

Ave*_*y3R 2 linux iptables

我的 nat 和数据包路由工作得很好,但我想将除 SSH 之外的所有端口转发到静态 ip(192.168.0.3)

执行此操作的正确 iptables 语法是什么?

Mar*_*iae 5

由于iptables规则是按顺序执行的(第一个匹配适用,以下规则甚至没有测试),您可以按如下方式执行:

 iptables -t nat -A PREROUTING -i eth0 -d 192.168.0.2 -j DNAT --to 192.168.0.3
 iptables -t nat -A PREROUTING -i eth0 -d 192.168.0.2 -j DNAT --to 192.168.0.3
 iptables -A FORWARD -i eth0 -d 192.168.0.2 --dport 22 -j REJECT
 iptables -A FORWARD  -i eth0 -d 192.168.0.2 -j ACCEPT
 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

假设您执行此操作的电脑的 IP 地址为 192.168.0.2,否则请相应更改。最后一条规则需要确保 IP 地址为 192.168.0.3 的 PC 的连接性。

  • 前两个命令看起来是相同的;我缺少什么?另外,由于第三个命令使用“--dport”,所以不需要说“-p tcp”(或“-p udp”)吗? (3认同)