我有一个Linux的OpenVPN服务器,有两个客户端,A和B.我已经设置了client-to-client所以他们可以相互交谈。 我想让客户端A作为客户端B的默认路由,以便B可以通过路由访问互联网:B->服务器 – > A-> NAT->互联网。 互联网恰好是A的默认路由,A和B隧道都使用自己的本地默认路由通过互联网。
目前有一个TUN,没有特别的路由指令,我可以从A到服务器,B到服务器和A到B,但是没有超出B的路由。
难点是…已经有一些复杂的路由表(复数)由一堆iptables规则驱动。 我不希望OpenVPN触摸这些,因为它会破坏其他地方的路由。 服务器有一个完全不同的默认路由。 所以我需要告诉:
我想我已经设置了iptables做3.我可以做一些iptables规则来做B转发使用新的路由表…但他们都在一个TUN接口,所以iptables将不会看到他们。 如果我使用iroute它会干扰服务器上的路由。
一个选项是TAP设备 – 跨服务器桥接,然后,而不是NAT,将服务器桥接到B TAP到WAN接口。 我已经有了A-server-B(将所有的东西都开启,没有其他变化),但是当我连接tapB和WAN(closuresNAT之后)时,我就失去了与B的联系。 此外,这也会产生积极的反馈:来自A的WAN接口上的其他通信(ARP请求等)的噪声被隧道传输到TAP中,这会在WAN接口上引起额外的stream量,依此类推。
另一个select是两个TUN设备和它们之间的iptables …这是我最后的手段。
那么…如何告诉OpenVPN在自己的接口中进行数据包转发,而不会干扰OS端路由?