web-dev-qa-db-ja.com

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上のtraceroute

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に接続したときのローカルtraceroute

 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も有効にしました

Firewall rules 3

Firewall rules 6

Routes

Network interface details

VPNに接続したときのローカルからのtraceroute

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サーバーから直接私のtraceroute

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
2
Gregology

IP転送を有効にしましたか?

[〜#〜] gcp [〜#〜] のインスタンス詳細ページで、または直接sysctl.confで行うことができます:net.ipv4.ip_forward=1

また、Ubuntu 16でOpenVPNをセットアップするためにこの素晴らしい tutorial を一度使用しましたが、問題なく動作しました。これは非常に役立つと確信しています。

インターネットアクセスのトラブルシューティングについては、GCPルーティングテーブルとファイアウォールルールを投稿することをお勧めします

2
Notauser

次のことを試してみることをお勧めします。

1)UDPの代わりにTCPプロトコルを使用します。これは、クライアントとサーバーの両方のconfファイルで 'proto udp'を 'proto tcp' を変更することで実行できます。

ポート443

proto tcp

; proto udp

2)クライアントとサーバーの両方のconfファイルで「devtun」を「devtap」に変更することにより、tunの代わりにtapデバイスを使用します。 TAPデバイスは仮想イーサネットアダプターですが、TUNデバイスは仮想ポイントツーポイントIPリンクです 。どちらか一方を使用する必要があり、混合することはできません。

1
Nur