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 電腦和 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時,當我沒有連接到vpn時,ping值增加到100ms,而當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,我就可以省去很多麻煩。

相關內容