我已经设置了静态一对一 OpenVPN 连接。但是我似乎无法让客户端通过 VPN 设备路由所有流量。这是我的配置:
客户端配置:
remote 89.21.xx.xx
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
服务器配置:
dev tun
ifconfig 10.8.0.1 10.8.0.2
push "redirect-gateway def1"
secret static.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
verb 5
根据我所做的所有研究,服务器配置行推“重定向网关 def1”应该让客户端通过 VPN 路由所有流量。但是它没有这个效果。我可以 ping/ssh/http 到 10.8.0.1 上的服务器,客户端的路由表如下所示,但正常流量采用正常(不安全)路由:
root@t42:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.8.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.69.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlan0
0.0.0.0 192.168.69.1 0.0.0.0 UG 0 0 0 wlan0
答案1
您需要在客户端配置中有“拉”功能才能从服务器“推送”设置。
一旦添加它,它就会按您预期的方式工作。
(如果您使用“客户端”指令,它基本上会扩展为“pull”和“tls-client”)
答案2
您可以运行route add default gw 10.8.0.1
(手动运行或在隧道启动时自动运行);这样会添加路由。或者,我push "route 0.0.0.0 0.0.0.0"
在 OpenVPN 配置中为我设置了默认路由,这样也可以正常工作。
答案3
该def1
论点稍微改变了的行为redirect-gateway
。它类似于:
route add 0.0.0.0/1 gw <vpn_endpoint>
这可确保 VPN 路由优先于现有默认路由,但不会删除现有默认路由。
至于调试该问题我建议:
- 看一眼詹姆斯非常好的观点。
- 增加客户端详细程度。它应该指示指令是否来自服务器以及运行路由命令是否存在问题。
- 尝试将指令放置在客户端的配置中,以测试它是否可以在没有的情况下工作
push
。 - 尝试删除该
def1
参数并让它替换默认路由,看看它是否会对行为产生任何影响。