我是 OpenVPN 新手。我在 Ubuntu 18.04 上设置了一个客户端可以连接的 OpenVPN 服务器。我已推送路由,以便所有网络流量都通过该服务器。Windows 客户端可以连接,并且可以访问所有本地资源和互联网。当我使用 Linux 客户端连接时,我只能访问服务器 10.8.0.1,无法访问互联网,也无法看到本地网络上的其他服务器或客户端。这是我的配置文件。我已删除注释。
服务器配置文件
port 1194
proto tcp
;proto udp
;dev tap
dev tun
;dev-node MyTap
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh.pem
;topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
;server-bridge
push "route 10.8.0.1 255.255.255.255"
push "route 10.8.0.0 255.255.255.0"
push "route 172.168.0.21 255.255.255.255"
push "route 172.168.0.0 255.255.254.0"
;client-config-dir ccd
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
;learn-address ./script
push "redirect-gateway def1"
push "dhcp-option DNS 172.168.0.20"
push "dhcp-option DOMAIN bdlfire.local"
push "dhcp-option SEARCH bdlfire.local"
client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key-direction 0
cipher AES-256-CBC
auth SHA256
;compress lz4-v2
;push "compress lz4-v2"
;comp-lzo
;max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
;log /var/log/openvpn/openvpn.log
;log-append /var/log/openvpn/openvpn.log
verb 3
;mute 20
explicit-exit-notify 0
Windows 配置客户端.ovpn
client
;dev tap
dev tun
;dev-node MyTap
proto tcp
;proto udp
remote xx.xx.xxx.xxx 1194
;remote my-server-2 1194
;remote-random
nobind
;user nobody
;group nobody
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
cert client3.crt
key client3.key
remote-cert-tls server
tls-auth ta.key 0
key-direction 1
cipher AES-256-CBC
auth SHA256
verb 3
;mute 20
redirect-gateway
Linux 配置客户端.conf
client
;dev tap
dev tun
proto tcp
;proto udp
remote xx.xx.xxx.xxx 1194
;remote my-server-2 1194
;remote-random
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;mute-replay-warnings
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
tls-auth ta.key 0
key-direction 1
cipher AES-256-CBC
auth SHA256
verb 3
;mute 20
redirect-gateway
任何帮助都将不胜感激。谢谢 Carl
我尝试运行路由命令并得到了此响应。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
default _gateway 0.0.0.0 UG 20600 0 0 wlp7s0
10.8.0.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0
10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
67.89.211.183 _gateway 255.255.255.255 UGH 0 0 0 wlp7s0
128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 wlp7s0
172.168.0.0 10.8.0.5 255.255.254.0 UG 0 0 0 tun0
172.168.0.21 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp7s0
这是我应该期待的吗?
答案1
您的客户端配置不用于pull
获取从服务器推送的值。也许 Windows 版本pull
默认使用。
答案2
OpenVPN 客户端需要 root 或管理员权限。Windows 上的社区客户端安装会自动将 OpenVPN 添加为服务,使其能够推送路由。
在某些 Linux 发行版中,OpenVPN 作为客户端并非以 root 身份启动,因此无法在连接时相应地推送路由。
您可以通过在连接到 OpenVPN(使用该程序)时查询客户端 Linux 机器的路由来确认这一点,route
并且要推送的路由没有显示出来。