有两个上游接口的NAT?

几天之后,我将要开发一些现场硬件,包括六台联网的Centos设备,但不包括互联网。 为了完成我的工作(特别是应用更新),我需要暂时将这些小型networking连接到Internet。

最有可能的是,我的向上连接将通过我的Fedora笔记本电脑的WiFi接口(然后通过4G调制解调器)。 总的想法是在我的笔记本电脑上做NAT,使用合适的本地IP将其以太网接口插入现场networking,并暂时将其设置为现场机器上的默认路由

到目前为止这么好,但是一个复杂的事实是,一些更新将需要来自我们公司的networking(通过笔记本电脑上的私有VPN客户端),一些来自公共互联网。 VPN服务器不会将非办公室stream量传递到互联网,客户端只能通过VPN路由“办公室”数据包,并直接发送Internetstream量。

我不是特别擅长路由,iptables等我已经拿起configuration这几乎做我需要的NAT的片段:

iptables -A FORWARD -i $NAT_IF -j ACCEPT iptables -A FORWARD -o $NAT_IF -j ACCEPT iptables -t nat -A POSTROUTING -o $WAN_IF -j MASQUERADE 

$NAT_IF是我的笔记本电脑的以太网端口(本地端), $WAN_IF是WiFi接口或由VPN客户端创build的ppp接口。 所以,我可以让客户机连接到互联网或公司办公室,但不能同时连接。 当一个dnf update命令可能需要同时提取一些公共RPM和一些专有公司的RPM时,这不是很方便。

不幸的是,我现在无法尝试,但也许这就像复制上面的最后一行一样简单,一个使用VPN作为$ WAN_IF和一个WiFi接口。 但是,我怀疑没有,因为它似乎没有做任何事情来指定哪些数据包需要上去的PPP接口(任何东西10.0.0.0/8),哪些指向无线(其他所有)。

我的笔记本电脑(作为路由器)需要做些什么来让本地networking上的机器与办公室和互联网进行通话,两者之间的区别非常适合在笔记本电脑上进行,而不必在设备上进行configuration每个客户?

谢谢你的帮助。

要区分交通路线,您需要添加路线

 ip route add 10.0.0.0/8 dev $VPN_IF 

要么

 ip route add 10.0.0.0/8 via $TUNNEL_REMOTE_IP 

如何添加,取决于你的VPNconfiguration。

例如:您可以在NetworkManager GUI中configuration其他路由


可能你需要伪装成与WAN相同的VPN

 iptables -t nat -A POSTROUTING -o $VPN_IF -j MASQUERADE 

如果你公司的VPN服务器对你的局域网子网一无所知。