具有两个上游接口的 NAT?

具有两个上游接口的 NAT?

几天后,我将处理一些现场硬件,这些硬件由六个 Centos 盒子组成,它们联网但不连接到互联网。为了完成我的工作(特别是应用更新),我需要暂时将这些小网络连接到互联网。

最有可能的是,我的上行连接将通过 Fedora 笔记本电脑的 wifi 接口(然后通过 4G 调制解调器继续)。一般的想法是在我的笔记本电脑上进行 NAT,将其以太网接口插入具有合适本地 IP 的现场网络,并暂时将其设置为现场机器上的默认路由。

到目前为止一切顺利,但有些更新需要来自我们公司的网络(通过我笔记本电脑上的专有 VPN 客户端),有些更新需要来自公共互联网,因此出现了一个问题。VPN 服务器不会将非办公室流量转发到互联网,客户端只能通过 VPN 路由“办公室”数据包并直接发送互联网流量。

我并不是特别精通路由、iptables 等。我挑选了这些配置片段,它们几乎可以完成我所需的 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 客户端创建的接口。因此,我可以让客户端计算机连接到互联网或公司办公室,但不能同时连接到两者。当一个命令可能需要同时提取一些公共 RPM 和一些专有公司 RPMppp时,这不是很方便。dnf update

不幸的是,我现在无法尝试,但也许这就像复制上面的最后一行一样简单,其中一行使用 VPN 作为 $WAN_IF,另一行使用 wifi 接口。但是,我怀疑不是,因为它似乎没有做任何事情来指定哪些数据包需要通过 ppp 接口(10.0.0.0/8 的任何内容)以及哪些数据包直接发送到 wifi(其他所有内容)。

我需要在我的笔记本电脑(充当路由器)上做什么才能让本地网络上的机器与办公室和互联网通信,最好在笔记本电脑上区分两者,而不是必须在每个客户端上进行配置?

感谢您的帮助。

答案1

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

ip route add 10.0.0.0/8 dev $VPN_IF

或者

ip route add 10.0.0.0/8 via $TUNNEL_REMOTE_IP

如何添加它取决于您的 vpn 配置。

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


您可能需要对 VPN 进行伪装,就像对 WAN 进行伪装一样

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

如果您公司的 VPN 服务器对您的 LAN 子网一无所知。

相关内容