Ubuntu
對 Google Cloud Platform 上的 Compute Engine OpenVPN 網際網路訪問進行故障排除
我在Google云平台的計算引擎上執行 Ubuntu 18.04。我使用 Nyr很棒的腳本在 1194/UDP 上設置了一個 VPN (我也嘗試過 443/TCP)。VPN 已連接,但連接後我無法訪問網際網路。
greg@vpn:~$ sudo iptables -L -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 10.8.0.0/24 !10.8.0.0/24 to:104.154.-.- #removed
VPN 上的跟踪路由
greg@vpn:~$ traceroute 1.1.1.1 traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets 1 209.85.241.122 (209.85.241.122) 10.729 ms 216.239.63.174 (216.239.63.174) 9.965 ms 209.85.241.122 (209.85.241.122) 10.771 ms 2 108.170.243.187 (108.170.243.187) 10.086 ms 108.170.243.196 (108.170.243.196) 10.330 ms 10.285 ms 3 141.101.73.2 (141.101.73.2) 10.867 ms 10.860 ms 11.104 ms 4 one.one.one.one (1.1.1.1) 10.753 ms 9.886 ms 9.930 ms
連接到 VPN 時的本地跟踪路由
greg ~ $traceroute 1.1.1.1 traceroute to 1.1.1.1 (1.1.1.1), 64 hops max, 52 byte packets 1 * * * 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * ...
Nyr 的 repo 上有一個問題,表明這是一個網路配置問題。我的問題是,我該如何解決這個問題?如果 VPN 伺服器可以訪問 Internet,這會是防火牆/GCP 配置問題嗎?
/etc/openvpn/server.conf
port 1194 proto udp dev tun sndbuf 0 rcvbuf 0 ca ca.crt cert server.crt key server.key dh dh.pem auth SHA512 tls-auth ta.key 0 topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 1.1.1.1" keepalive 10 120 cipher AES-256-CBC user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3 crl-verify crl.pem
我確保 iptables 是正確的
greg@vpn:~$ iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -o ens4 -j SNAT --to 104.154.x.x
這是我的ip route show
greg@vpn:~$ ip route show default via 10.128.0.1 dev ens4 proto dhcp metric 100 10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1 10.128.0.1 dev ens4 proto dhcp scope link metric 100
子網
greg@vpn:~$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default _gateway 0.0.0.0 UG 0 0 0 ens4 10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 _gateway 0.0.0.0 255.255.255.255 UH 0 0 0 ens4
我也啟用
net.ipv4.tcp_syncookies=1
了/etc/sysctl.conf
連接到 VPN 時來自本地的跟踪路由
greg ~ $sudo mtr 1.1.1.1 My traceroute [vUNKNOWN] Gregs-MacBook-Pro.local (10.8.0.2) 2019-03-14T13:57:40-0400 Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 10.8.0.1 0.0% 24 35.3 36.5 34.3 48.2 3.8 2. ???
我的跟踪路由直接來自 VPN 伺服器
greg@vpn:~$ mtr 1.1.1.1 My traceroute [v0.92] vpn (10.128.0.28) 2019-03-14T18:11:28+0000 Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 216.239.40.188 0.0% 177 10.1 11.3 10.0 33.7 3.8 2. 108.170.243.196 0.0% 177 10.5 10.6 10.4 13.9 0.5 3. 141.101.73.2 0.0% 177 10.8 14.2 10.7 52.4 7.1 4. one.one.one.one 0.0% 176 11.1 11.1 10.9 12.6 0.2
您是否啟用了 IP 轉發?
您可以在GCP的實例詳細資訊頁面上或直接在 sysctl.conf 中執行此操作:
net.ipv4.ip_forward=1
此外,我曾經使用過這個很棒的教程在 Ubuntu 16 上設置 OpenVPN,它執行完美,我相信它會很有幫助。
對於網際網路訪問故障排除,最好發布您的 GCP 路由表和防火牆規則
我建議嘗試以下方法:
1)使用TCP協議代替UDP;這可以通過在客戶端和伺服器 conf 文件中將“proto udp”更改為“proto tcp”來完成。
埠 443
原型 tcp
原型 udp
- 通過在客戶端和伺服器配置文件中將“dev tun”更改為“dev tap”,使用 tap 設備而不是 tun。TAP 設備是虛擬乙太網適配器,而 TUN 設備是虛擬點對點 IP 鏈路。您必須使用其中一種,否則不能混合使用。