端口 80 在使用 DNAT 的客户端之间混淆

Port 80 mixed up among clients using DNAT

我正在尝试建立这样的网络:

...但我遇到了一个问题。

重点是:

如果我尝试从外部访问(例如)mywebsite1.com,它就像一个魅力,它显示了我精彩的网站,但每当我尝试到 运行(例如)apt-get update 从虚拟服务器 2 内部它会抛出一个错误,如“无法连接到 xxx-whatever-website.com 端口 80: 连接被拒绝".

如果我删除主服务器防火墙上的预路由规则,问题就解决了,但是,当然,我无法连接到 mywebsite1.com从外部。如果我将虚拟服务器默认网关更改为 192.168.1.1,情况相同。

我天真地尝试在主服务器上添加一个静态路由(类似于 ip route add 192.168.1.1 via 192.168.1.32)但是,当然,它没有用。我是否应该尝试以某种方式标记数据包,以便识别源客户端?

由于我在我的 DNAT 规则中省略了原始目标目标,它命中了所有原始目标目标。所以,我需要添加 -d 192.168.1.30 到它。

-A PREROUTING -p tcp -m tcp -i vmbr0 -d 192.168.1.30 --dport 80 -j DNAT --to-destination 192.168.1.32:80

现在可以了。