![OpenVPN - 在 Linux 上可连接但无法上网,在 Windows 上可完美运行](https://linux22.com/image/1396319/OpenVPN%20-%20%E5%9C%A8%20Linux%20%E4%B8%8A%E5%8F%AF%E8%BF%9E%E6%8E%A5%E4%BD%86%E6%97%A0%E6%B3%95%E4%B8%8A%E7%BD%91%EF%BC%8C%E5%9C%A8%20Windows%20%E4%B8%8A%E5%8F%AF%E5%AE%8C%E7%BE%8E%E8%BF%90%E8%A1%8C.png)
我已经设置了一个配置了 OpenVPN 的 Amazon EC2 服务器。我可以使用 Windows 机器进行连接,并且一切正常 - 互联网流量全部通过 VPN 路由。使用 Ubuntu 客户端,我可以成功连接到服务器,但无法在浏览器中查看网页或 ping 外部 IP(例如 8.8.8.8)。有人知道我需要更改什么才能使其正常工作吗?配置发布如下:
Ubuntu 服务器
port 443
proto tcp
dev tun
ca ca.crt
cert singa.crt
key singa.key # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
Ubuntu 客户端
client
dev tun
proto tcp
remote (delete) 443
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3
<ca>
(deleted)
</ca>
<cert>
(deleted)
</cert>
<key>
(deleted)
</key>
Windows 配置
client
dev tun
proto tcp
remote (delete) 443
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3
<ca>
(deleted)
</ca>
<cert>
(deleted)
</cert>
<key>
(deleted)
</key>
连接前的客户端路由表:
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 0 0 0 wlan0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0
连接后的客户端路由表:
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
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
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
** SERVERIP ** 192.168.1.1 255.255.255.255 UGH 0 0 0 wlan0
128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0
答案1
我终于弄清楚了这个问题。
事实证明,由于我在中国,访问 facebook.com 和 twitter.com 等网站的 DNS 请求被“防火墙”过滤。因此,也需要通过 OpenVPN 隧道推送 DNS。
可以通过以下方式完成:
将这两行附加到客户端配置(.ovpn)文件:
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
确保服务器配置文件中包含这两行:
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
使用以下命令运行客户端(脚本安全标志允许运行 up 和 down 脚本以修改 /etc/resolv.conf、系统 DNS 设置)
sudo openvpn --script-security 2 --config client-settings.ovpn
我现在有一个完全正常工作的连接。
感谢所有试图提供帮助的人!
答案2
插入此行
redirect-gateway def1
在 Ubuntu 客户端配置文件中。