OpenVPN 已连接但无法访问互联网

OpenVPN 已连接但无法访问互联网

我不知道为什么我的 openvpn 连接不起作用。它似乎在连接上工作正常。我可以连接到我的服务器,但一旦我连接上,我就无法通过 vpn 使用互联网。

这是一个运行在 Debian 上的 VPS 服务器

这是我的 openvpn server.conf 文件

port 1194

proto udp

dev tun

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway def1"

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

keepalive 10 120

comp-lzo

user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log

log         openvpn.log

verb 6

mute 20

这是我的 client.conf 文件

client

dev tun

proto udp

remote server_ip 1194

resolv-retry infinite

nobind

persist-key
persist-tun

ca ca.crt
cert client.crt
key client.key

ns-cert-type server

comp-lzo

verb 3

remote-cert-tls server

我还添加了防火墙规则来接受连接和路由,但奇怪的是有些规则出现了多次。这是我的 iptables 保存文件

# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*nat
:PREROUTING ACCEPT [53:9749]
:POSTROUTING ACCEPT [9:675]
:OUTPUT ACCEPT [9:675]
-A PREROUTING -d server_ip/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 1194 
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source server_ip 
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*filter
:INPUT ACCEPT [946:112417]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [824:172939]
-A INPUT -i tun0 -p tcp -m tcp --dport 1194 -j ACCEPT 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 10.8.0.0/24 -j ACCEPT 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 10.8.0.0/24 -j ACCEPT 
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT 
COMMIT
# Completed on Sun Dec 22 04:36:18 2013

我还检查了 /etc/sysctl.conf 以确保

net.ipv4.ip_forward=1

我也有

net.ipv6.conf.all.forwarding=1

因此,我尝试在我的 Linux PC 和 Virtualbox XP 上建立 OpenVPN 连接,并且两者都可以连接,但连接后都无法访问互联网。

最奇怪的是,当我执行跟踪路由时,它显示通过 VPN 连接。

例如,我执行 traceroute google.com

1 my ip from vpn connection
2 openvpn server ip
3 ...
4 ...
5 ... few hops between server to google
6 and finally google server ip

因此 traceroute 显示连接通过 vpn,并且当我 ping 时,ping 时间增加到 100ms,而当我未连接到 vpn 时 ping 时间约为 20ms。

但当我尝试使用任何程序(firefox、chrome、iexplorer)浏览互联网时,我什么也得不到。什么都无法加载,连接超时。

并不是我的服务器很慢所以页面无法加载,速度测试显示服务器连接速度约为 70mbit,而我的连接速度为 6mbit。

当我尝试连接到其他 vpn(例如 cloudnymous)时,一切正常。只是我的 openvpn 设置出了问题。

编辑:毕竟我以为我终于让它工作了,在摆弄了很多设置之后,我终于可以连接到我的 VPN 并从那里上网。

现在我还有最后一个问题。由于我使用的是 Linux,所以这里有几个程序无法运行,我使用安装了 Windows XP 的 VirtualBox,但当连接到 VirtualBox 上的 VPN 时,我可以上网。但没有程序可以连接到互联网。此外,我的 VPN 连接有时会断开互联网,这不是我的互联网或服务器连接的问题,因为在 VPN 断开互联网的那段时间里,我仍然可以通过 ssh 使用 Putty 连接到服务器并执行各种操作。

答案1

伪装在 VPS 上不起作用..您必须使用iptables Source NAT

iptables -t nat -A POSTROUTING -s 10.x.x.x/xx -j SNAT --to-source y.y.y.y

x.x.x.x/x是 VPN 子网 -y.y.y.y是您的服务器输出接口的 IP 地址。

答案2

确保/etc/default/ufw服务器上有DEFAULT_FORWARD_POLICY="ACCEPT"而不是然后"DROP" 重新启动防火墙

sudo ufw disable
sudo ufw enable

答案3

我遇到过类似的问题,OpenVPN 一直运行正常,直到我更换路由器。虽然我已打开所需端口,但我怀疑是路由器防火墙的问题。但是,我查看了 rc.local,发现首次配置时,iptables 行已设置为实际 IP 地址,而不是我预期的 $MY_IP 变量,如下所示:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 192.168.0.15

而不是:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to $MY_IP

问题是更改路由器为服务器分配了不同的 IP,而我只是为新 IP 进行了预留并希望一切正常。

如果我为服务器保留了与以前相同的 IP,我就可以省去很多麻烦。

相关内容