无法在 SuSE Linux 上正确让 iptables 转发

无法在 SuSE Linux 上正确让 iptables 转发

我正在努力通过 转发端口iptables。我在 Google 上搜索了很多,但尝试过的所有解决方案都不起作用。

同一局域网中的三台计算机的设置非常简单

192.168.0.1 # destination
192.168.0.2 # redirector (only one interface)
192.168.0.3 # source

我的iptables配置也很简单

# iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:192.168.0.1
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443 to:192.168.0.1

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0

# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

根据我所读的内容,这应该可以工作。但实际上不行。我尝试了其他方法,iptables -t nat -I POSTROUTING 1 -p tcp -d 192.168.0.1 --dport 443 -j SNAT --to-source 192.168.0.1但同样不行。而且ip_forward启用了 yes。

浏览到192.168.0.2:80/443应该会返回来自 的内容192.168.0.1,不是吗?有什么想法吗?

答案1

我成功了!正确的规则是

iptables -t nat -A PREROUTING -d 192.168.0.2 ! -s 192.168.0.1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:80
iptables -t nat -A POSTROUTING -d 192.168.0.1 -p tcp --dport 80 -j SNAT --to 192.168.0.2.

添加 -d 即可。

相关内容