我有一个带 dd-wrt 固件的路由器。我已通过 Iptables 命令设置了第二个 IP 地址,并已将一个端口转发。它工作正常。但是它在内部不起作用。尝试在内部访问 89.25.1.1:443 不起作用。只能在外部访问。
# Ip for INTRANET
ifconfig vlan2:1 89.25.1.1 netmask 255.255.255.248 broadcast 89.25.1.15
# Routes for IIS HTTPS
iptables -t nat -I POSTROUTING -o vlan2 -s 192.168.51.7 -j SNAT --to 89.25.1.1
iptables -t nat -I PREROUTING -i vlan2 -d 89.25.1.1 -p tcp --dport 443 -j DNAT --to 192.168.51.7:443
iptables -I FORWARD -i vlan2 -d 192.168.51.7 -p tcp --dport 443 -j ACCEPT
我该如何修复这个问题以使其在内部也能正常工作?
答案1
我不知道你的接口是什么样子的。我猜vlan2
是你的外部接口,这意味着问题出在这条规则上:
iptables -t nat -I PREROUTING -i vlan2 -d 89.25.1.1 -p tcp --dport 443 -j DNAT --to 192.168.51.7:443
这-i vlan2
意味着规则仅在数据包从接口进入时才匹配vlan2
- 但事实并非如此,数据包是从内部网络进入的,所以这就是vlan1
配置中调用的那个。要拥有相同的 dnat,只需完全忽略参数中的接口限制即可-i
,即只需使用
iptables -t nat -I PREROUTING -d 89.25.1.1 -p tcp --dport 443 -j DNAT --to 192.168.51.7:443