我不知道为什么我的 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,我就可以省去很多麻烦。