对 Google Cloud Platform 上的 Compute Engine OpenVPN 互联网访问进行故障排除

对 Google Cloud Platform 上的 Compute Engine OpenVPN 互联网访问进行故障排除

我在 Google Cloud Platform 上的 Compute Engine 上运行 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 仓库中的问题这表明这是一个网络配置问题。我的问题是,我该如何解决这个问题?如果 VPN 服务器可以访问互联网,这可能是防火墙/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 路由显示

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

防火墙规则 3

防火墙规则 6

航线

网络接口详细信息

连接到 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

答案1

您启用了 IP 转发吗?

您可以在实例详细信息页面中的地理信息中心或者直接在 sysctl.conf 中:net.ipv4.ip_forward=1

我也用了这个很棒的教程一次在 Ubuntu 16 上设置 OpenVPN 并且它运行完美,我相信它会带来很大的帮助。

对于互联网访问故障排除,最好发布您的 GCP 路由表和防火墙规则

答案2

我建议尝试以下方法:

1)使用 TCP 协议代替 UDP;这可以通过更改‘proto udp’ 改为 ‘proto tcp’在客户端和服务器配置文件中。

端口 443

协议 TCP

;原始 UDP

2) 通过在客户端和服务器配置文件中将“dev tun”更改为“dev tap”,使用 tap 设备代替 tun。TAP 设备是虚拟以太网适配器,而 TUN 设备是虚拟点对点 IP 链路。您必须使用其中一种,不能混合使用。

相关内容