我在家里的 centos 7 上安装了 openvpn 服务器。使用数字海洋 doc。
ip route
显示我的服务器的网络接口是 ens32。所以我在 iptables 中添加了一条规则,将路由转发到 OpenVPN 子网
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens32 -j MASQUERADE
我的服务器配置中也有 Google 的 DNS。
push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"
我还配置了服务器来告诉客户端通过 OpenVPN 重定向所有流量。
push "redirect-gateway def1 bypass-dhcp"
我在家里的互联网上进行此操作,因此在路由器上我对 openvpn 的端口进行了端口转发。
在我的 Android 手机上,openvpn 客户端应用程序成功登录到服务器并获得一个私有 IP(10.8.0.6),并且显示已发送和接收几 KB,一切正常!但它无法访问互联网。
我尝试了很多不同的方法,但不知道为什么它无法访问互联网。
我检查过 openvpn 服务器本身curl google.com
,它确实可以访问互联网。
任何想法?
答案1
终于找到了问题和解决方案,我在journalctl -xe
(openvpn 服务器日志)中看到了此消息
client/__MYPUBLICHOMEIP__:39661 IP packet with unknown IP version=15 seen
然后我意识到我的客户端默认配置压缩已启用,但服务器端未启用压缩。
在 openvpn 服务器的配置文件中取消注释此行可以修复此问题:
comp-lzo