DNAT通过代理连接到互联网的子网
我想通过代理服务器将子网中的服务器连接到Internet。 但是我不能ping通互联网上的主机(www)。 实际上,子网服务器和代理服务器共享一个通用的专用服务器(使用docker进行虚拟化)。 有两个网卡(代理服务器为eth0,子网服务器为t39)。 所以总体布局是这样的:
互联网<==> 171.16.0.39 | 191.167.1.1 <==> 191.167.1.2
191.167.1.2是子网服务器的内部地址,而171.16.0.39是外部地址,191.167.1.1是代理服务器的内部地址。
首先,我在子网服务器上设置了一条静态路由: ip route add 171.16.0.39 via 191.167.1.1
问题1:我还需要明确地定义一个像这样的默认网关吗? route add default gw 191.167.1.1 eth0或者会select外部地址是正确的方法?
然后我在代理服务器的iptable中设置了一个伪装: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
现在可以从子网服务器ping到代理服务器。 但是我无法从代理服务器ping到互联网(例如8.8.8.8)。
为了解决我的问题,我也考虑像这样(在代理服务器上)build立DNAT: iptables -t nat -A PREROUTING -d 171.16.0.39 -j DNAT --to-destination 191.167.1.2
但是没有解决我的问题。 我仍然无法从子网服务器ping到互联网。
问题3:我需要configurationDNAT与MASQUERADE一起pingnetworking吗? 如果是这样,我select了错误的地址?
最后我听说,在MASQUERADEconfiguration的情况下,SNAT不是必需的。
问题4:即使我已经设置了MASQUERADE,build议configurationSNAT吗?
我真的很困惑,如何处理这个。 虽然它似乎是一个非常普遍的configuration,但我在过去几天对Google的研究并没有让我更接近于解决这个问题。
有任何关于我的问题的提示吗?
所以我解决了这个问题:
正如我已经猜到的,我必须在191.167.1.2上设置一个单独的网关条目: route add default gw 191.167.1.1
现在我通过代理连接子网服务器到www,而MASQUERADE处于活动状态。