我不明白為什麼我的 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,我就可以省去很多麻煩。