我已经在我的 vps 中设置了一个 openvpn 访问服务器。现在我住在中国,政府屏蔽了许多外国网站,例如 facebook 和 twitter。
我可以使用 vpn 服务器跨越中国的防火墙通过运行 Windows XP 的桌面访问 Twitter 等。
但是我的笔记本是xubuntu 12.04,无法突破国家防火墙,我只能通过ubuntu里的openvpn客户端,命令是“sudo openvpn --config client.ovpn”连接vpn服务器
由于桌面运行正常,我认为 vpn 访问服务器的设置没有问题。ubuntu 客户端中是否有任何特殊设置?我没有更改 openvpn 访问服务器提供的配置。
我反复在 Google 上搜索这个问题,iptables 的说明让我很困惑。而且我也在 ubuntu 中打开了 ip forward。仍然不起作用。
xubuntu中原有的路由表:
0.0.0.0 192.168.0.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
173.224.215.16 192.168.0.1 255.255.255.255 UGH 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0
连接vpn后的路由表:
0.0.0.0 5.5.0.1 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
5.5.0.0 0.0.0.0 255.255.248.0 U 0 0 0 tun0
46.x.x.x 192.168.0.1 255.255.255.255 UGH 0 0 0 wlan0
128.0.0.0 5.5.0.1 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
173.224.215.16 192.168.0.1 255.255.255.255 UGH 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0
46.xxx是我的vps的公网ip。
客户端.ovpn:
...
setenv FORWARD_COMPATIBLE 1
client
server-poll-timeout 4
nobind
remote 46.x.x.x 1194 udp
remote 46.x.x.x 1194 udp
remote 46.x.x.x 443 tcp
remote 46.x.x.x 1194 udp
remote 46.x.x.x 1194 udp
remote 46.x.x.x 1194 udp
remote 46.x.x.x 1194 udp
remote 46.x.x.x 1194 udp
dev tun
dev-type tun
ns-cert-type server
reneg-sec 604800
sndbuf 100000
rcvbuf 100000
auth-user-pass
# NOTE: LZO commands are pushed by the Access Server at connect time.
# NOTE: The below line doesn't disable LZO.
comp-lzo no
verb 3
setenv PUSH_PEER_INFO
...
我省略了 ca、密钥等等。
提前致谢。
答案1
我已经找到问题所在了!这是由于中国国家防火墙。
中国的DNS服务器全部被污染,导致“twitter”、“facebook”等网站被重定向到不存在的目标,这样就导致这些网站在中国无法访问。详情见链接DNS 缓存中毒。
因此使用VPN服务器进行dns查找可以解决这个问题,只需在openvpn配置文件(client.ovpn)中添加两行:
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
还要确保该resolvconf
包已安装在客户端上,因为该脚本依赖于它。
现在OpenVPN访问服务器可以正常帮助我突破中国国家防火墙。