端口转发正常但不是来自内部 LAN

Port-forwarding fine but not from internal LAN

我对 OpenWRT 的端口转发有疑问。 T 正在端口 443 上进行从 WAN 到 DMZ 的端口转发。它工作正常。此外,当我使用私有 IP 从内部 LAN 访问 DMZ 时,它工作正常(不涉及端口转发)。但是,使用来自内部 LAN 的 public IP 它不起作用。我的连接被拒绝了。

有没有办法让它起作用? (最初我只进行从 WAN 到 DMZ 的端口转发,但有时我在家)

转发前需要在nat-prerouting链中重写目的地址。此外,在发送到 DMZ 之前,您需要伪装 port forwarded LAN 流量。

如果没有伪装,来自 DMZ 主机的数据包将直接发送到 LAN 客户端。 LAN 客户端将丢弃这些未知数据包,因为 LAN 客户端期望回复来自 Public IP 而不是 DMZ IP。

最简单的方法是伪装所有 LAN 流量到 DMZ 网络,如下所示

# Public IP = 208.67.220.220
# Local LAN IP Pool = 192.168.1.0/24
# LAN Interface = 'eth0'
# DMZ Interface = 'eth2'
# DMZ Server IP = 172.16.20.20

iptables -t nat -d 208.67.220.220 -A PREROUTING -i eth0 -j DNAT --to 172.16.20.20
iptables -t nat -s 192.168.1.0/24 -A POSTROUTING -o eth2 -j MASQUERADE

可以即兴创作以仅伪装端口转发的流量。留给楼主吧。