我在使用 TUN 设备时遇到了 OpenVPN 集中器的一些问题。场景是:
OpenVPN Server
VPN Subnet: 10.10.10.1/24
PC1 OpenVPN Client
VPN IP: 10.10.10.50
PC Local subnet/IP: 192.168.20.100
PC2 OpenVPN Client
VPN IP: 10.10.10.60
PC Local subnet/IP: 192.168.30.100
RemoteSite1
VPN IP: 10.10.10.70
Local Subnet: 192.168.80.0/24
RemoteSite2
VPN IP: 10.10.10.80
Local Subnet: 192.168.80.0/24
PC1 连接到 RemoteSite1,PC2 连接到 RemoteSite2,但在使用 iroute 时,其中一台 PC 到达了错误的远程站点。此设置在使用 TAP 设备时完美运行。为了避免 OpenVPN 服务器上的网络冲突,没有远程站点的路由规则,每台 PC 都有一个特定的查找路由表,如下所示:
root@openvpn~ # ip rule sh
0: from all lookup local
1: from 10.10.10.50 lookup 1024
1: from 10.10.10.60 lookup 1034
10: from all to 10.10.10.0/24 lookup main
并在每个表下:root@openvpn~ # ip route show table 1024 192.168.80.0/24 via 10.10.10.70 dev tap0
root@openvpn~ # ip route show table 1034
192.168.80.0/24 via 10.10.10.80 dev tap0
如何使用 TUN 和 iroute 归档相同的设置?
我不认为你能做到这一点。
TUN 是路由的(OSI 第 3 层),并且不可能以这种方式为单个子网拥有两条相同的路由(您至少需要某种度量差异)。TAP 在 OSI 第 2 层运行,在那里可以进行 MAC 查找,这就是您的设置的工作方式(当它工作时)。
为了让 TUN 在这种情况下工作,您最好的选择可能是将您的 /24 分成两个 /25 网络,并为每个位置分配一侧。