我正在尝试使用我的 VPN 网络启用拆分隧道。我使用 OpenVPN 来托管我的 VPN 网络,并已按照步骤使拆分隧道正常工作,但我的客户端仍然收到:0.0.0.0 {VPN 本地地址} 推送
这是我在 OpenVPN 服务器上的 server.conf 文件,它具有一个带有真实 IP 的真实公共接口。
port 1194
proto udp
dev tun
#ssl stuff
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/dh2048.pem
#server statement and subnet for VPN IPs /24 for simplicity
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt # for persistant IPing of VPN clients
push "route-nopull"
push "route 172.16.0.11 255.255.255.255 vpn_gateway" #internal node i want VPN clients to have access to
push "route 172.16.0.3 255.255.255.255 vpn_gateway" #internal node I want VPN clients to have access to
push "dhcp-option DNS 172.16.0.3" # so VPN clients use internal dns for resolution
client-to-client
[rest of config omitted]
客户端的路由表,其中:172.16.250.10 是客户端的 VPN 地址 {publicIP} = 是客户端网络的公共 IP {localIP} = 是本地网络的本地 IP,例如 192.168.xx,而不是 VPN。
Destination Gateway Genmask Flags
0.0.0.0 10.0.0.10 0.0.0.0 UG
{publicIP} {localIP} 255.255.255.255 UGH
10.0.0.0 10.0.0.10 255.255.255.0 Ug
10.0.0.10 0.0.0.0 255.255.255.255 UH # don't really understand this statement
172.16.0.3 10.0.0.10 255.255.255.255 UGH #from push command in server.conf
172.16.0.11 10.0.0.10 255.255.255.255 UGH #from push command in server.conf
{client's localSubnet} 0.0.0.0 255.255.255.0 U
OpenVPN 盒上的 IPTables,该盒具有用于接受传入的 OpenVPN 请求的公共接口。
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 10.0.0.0/24 172.16.0.3 /* Allow VPN IPs to connect to the internal DNS for resolution */
ACCEPT all -- 10.0.0.0/24 172.16.0.11 /* Allows VPN IPs to connect to homeserver */
我相信这些是我设置中涉及 VPN 连接的唯一配置。因此我有点困惑,因为我的 VPN 客户端将显式推送语句接收到其路由表中,但客户端仍然无法将其本地网关用于非发往 10.0.0.0/24 或 172.16.0.0/24 网络的 IP 请求。
提前感谢您的帮助和时间。
-吉姆
答案1
我最近做了类似的事情。
但是我必须在重定向所有流量和仅重定向 vpn 流量之间做出选择。
我在 client.ovpn 文件中进行了配置。
所以我有 2 个文件。一个用于通过 VPN 重定向所有流量(不安全网络),另一个用于拆分隧道(安全网络)。
我仅在 client.ovpn 中添加以下几行
方法 1:
将此行添加到客户端配置文件文件或添加--route-noexec
openvpn 行命令
route-noexec
(客户端的路由表有此选项)
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 302 0 0 wlan0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 302 0 0 wlan0
并curl ipinfo.io
显示真实的客户位置。
方法 2:
将此行添加到客户端配置文件文件
route-nopull
route 0.0.0.0 128.0.0.0 net_gateway
route 128.0.0.0 128.0.0.0 net_gateway
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 128.0.0.0 UG 0 0 0 wlan0
0.0.0.0 192.168.1.1 0.0.0.0 UG 302 0 0 wlan0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
128.0.0.0 192.168.1.1 128.0.0.0 UG 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 302 0 0 wlan0
并curl ipinfo.io
显示真实的客户位置。
你的案例。
如果你添加以下行客户端配置文件文件
route-nopull
route 172.16.0.11 255.255.255.255 vpn_gateway
route 172.16.0.3 255.255.255.255 vpn_gateway
route 0.0.0.0 128.0.0.0 net_gateway
route 128.0.0.0 128.0.0.0 net_gateway
我在我的一个客户端上测试了它:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 128.0.0.0 UG 0 0 0 wlan0
0.0.0.0 192.168.1.1 0.0.0.0 UG 302 0 0 wlan0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
128.0.0.0 192.168.1.1 128.0.0.0 UG 0 0 0 wlan0
172.16.0.3 10.8.0.1 255.255.255.255 UGH 0 0 0 tun0
172.16.0.11 10.8.0.1 255.255.255.255 UGH 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 302 0 0 wlan0
并curl ipinfo.io
显示真实的客户位置。