无法浏览 ipv4 网站 (OpenVPN )

无法浏览 ipv4 网站 (OpenVPN )

我已经在我的 VPS(OpenVZ - Ubuntu 12.04)上设置了 openVPN 隧道。
问题是当我连接到 vpn 时,我只能浏览支持 ipv6 的网站,例如 google。Ipv4 网站无法加载(没有错误,只是无限期等待)。
http://whatismyv6.com/报告说我有一个 ipv6 地址,所以我猜这就是问题所在。

服务器配置:

dev tun  
server 10.8.0.0 255.255.255.0  
ifconfig-pool-persist ipp.txt  
ca /etc/openvpn/easy-rsa/keys/ca.crt  
cert /etc/openvpn/easy-rsa/keys/server.crt  
key /etc/openvpn/easy-rsa/keys/server.key  
dh /etc/openvpn/easy-rsa/keys/dh1024.pem  
push "route 10.8.0.0 255.255.255.0"  
push "dhcp-option DNS 8.8.8.8"  
push "dhcp-option DNS 8.8.4.4"  
push "redirect-gateway def1"  
comp-lzo  
persist-tun  
persist-key  
status openvpn-status.log  
log /var/log/openvpn.log  
verb 3

客户端配置:

client  
remote xx.xx.xx.xx 1194  
dev tun  
comp-lzo  
ca ca.crt  
cert client1.crt  
key client1.key  
redirect-gateway def1  
verb 3  

我已经用这个命令配置了 NAT:iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to xx.xx.xx.xx
有人可以向我解释如何使其工作(强制 ipv4?)
我在另一个 vps 上遇到了同样的问题,并且我也在另一个客户端(所有 Windows 7)上尝试过。

答案1

您的 VPN 服务器似乎无法在数据包通过 VPN 时重新路由发往互联网的数据包。由于您使用“reroute-gateway def1”指令,从而强制所有来自客户端的外部 ipv4 流量通过 VPN 隧道,因此您需要与 VPN 服务器一起实现重新路由功能。

我猜您可以直接连接到 ipv6 站点,因为 ipv6 没有通过 vpn 进行隧道传输,如您的配置所示。

您可以:a) 设置您的 vpn 服务器网络以正确重新路由到互联网。这在实践中很优雅,但使用给出的信息描述起来很麻烦(有点像对话,我现在没时间)。我已经结合 openvpn 完成了这项工作,可以确认这是一个可行的设计选项,NAT 是您的朋友 :-)

b) 在 openvpn 服务器后面或上面配置一个 Web 代理,并告诉您的客户端 Web 浏览器使用它。这很容易,我碰巧手边有一个 squid 配置,仅供参考。请理解,您可以选择使用任何您喜欢的 Web 代理服务器,这只是我曾经使用过的一个配置,现在它就在我的硬盘上。不过,它曾用于解决您在使用“reroute-gateway def1”时遇到的 openvpn 问题。

要安装和配置 squid,请使用互联网上无数的优秀指南之一。以下是在 squid.conf 中需要进行的简单更改,以使其正常工作:

打开 /etc/squid/squid.conf

改变

http_port 3128

指令

http_port 8080 # This really could be any port you choose, just open your firewall to permit it from the vpn tunnel to your squid.

更改 acls:

acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.20.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

来反映您实际的本地网络:

acl localnet src 10.8.0.0/24   # Your internal LAN

取消注释该行:

# http_access deny to_localhost

保存 /etc/squid/squid.conf

启动 squid,当您连接 vpn 客户端时,将您的 Web 浏览器配置为使用 http 代理,并为您的 squid 机器提供 ip 地址和端口 8080(或您选择的任何端口)。

祝你好运,并希望它能让你顺利!

答案2

切换到 tcp 端口解决了这个问题。我不知道为什么……(防火墙打开)

相关内容