我有一台运行 Ubuntu 22.04 的虚拟机,当 openvpn NordVPN 客户端连接运行时,我在将本地 NFS 共享安装到虚拟机时遇到了一些问题。我认为问题是 NFS 连接的请求是通过 VPN 而不是本地 LAN 连接发出的。有人知道如何将 192.168.8.0/24 子网上的任何请求路由到 LAN 而不是 VPN 接口吗?
我尝试在启动 openvpn 连接时运行以下命令,以确保在本地网络上运行的应用程序不会通过 vpn 路由:
#!/bin/sh
ip rule add from $(ip route get 1 | grep -Po '(?<=src )(\S+)') table 128
ip route add table 128 to $(ip route get 1 | grep -Po '(?<=src )(\S+)')/32 dev $(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)')
ip route add table 128 default via $(ip -4 route ls | grep default | grep -Po '(?<=via )(\S+)')
并且我在 openvpn 启动时运行的 openvpn .conf 文件中还有以下内容:
pull-filter ignore redirect-gateway
route 192.168.8.0 255.255.255.0 net_gateway
有人知道我需要添加/删除什么才能使其正常工作吗?
结论:我正在尝试连接到我的 LAN 上的 NFS 共享,但通过机器上运行的 vpn 客户端将所有其他出站流量路由。
谢谢!
编辑:vpn 客户端启动后ip route
运行后的命令输出。ip route add 192.168.8.0/24 dev eth0
0.0.0.0/1 via 10.8.1.1 dev tun0
default via 192.168.8.1 dev ens18 proto dhcp src 192.168.8.114 metric 100
10.8.1.0/24 dev tun0 proto kernel scope link src 10.8.1.14
128.0.0.0/1 via 10.8.1.1 dev tun0
181.214.226.148 via 192.168.8.1 dev ens18
192.168.8.0/24 dev ens18 scope link
192.168.8.0/24 dev ens18 proto kernel scope link src 192.168.8.114 metric 100
192.168.8.1 dev ens18 proto dhcp scope link src 192.168.8.114 metric 100
答案1
好吧,我搞清楚了这个问题。我上面使用的脚本在 openvpn 客户端连接之前没有执行。因此,它添加了作用于 vpn 网络信息的路由规则。如果它在 vpn 启动之前运行,那么就没问题了。所以我所做的就是将值硬编码到这个中以使其工作:
#!/bin/sh
ip rule add from 192.168.8.114 table 128
ip route add table 128 to 192.168.8.0/24 dev ens18
ip route add table 128 default via 192.168.8.1
现在我可以本地连接到服务器,并且它可以连接到 NFS 服务器!