私はすべてのトラフィックのVPNサーバーとしてGoogle Compute Engineサーバーを使用しようとしています(私はロシアに住んでいるため、検閲に関していくつか問題があります)。
GCE上のVPN に関するミニチュートリアルがありますが、これはGCE内の2つのサーバー間のネットワークに関するものであり、OpenVPNに関するものではありません。
DebianでOpenVPNを使用してVPNをセットアップする について、別のチュートリアルからすべての手順を実行しましたが、クライアントからVPNに接続できますが、接続を開くことができません(Googleにpingすることさえできません)。 。サーバーでは、いつものようにpingしてすべてをダウンロードできます。
Linodeに同じ設定でVPNを使用していますが、正常に動作します。したがって、問題はGCEネットワークルーティングまたはファイアウォールルールにあります。
私は多くのバリアントを試しましたが、何も機能しません。設定を見て、何を変更すればよいか教えてください。
//問題が解決されたため、構成行を削除しました//
まず、@ Shivoxの answer に感謝します。
そしてここに簡単なハウツーがあります:
Sudo su
apt-key update && apt-get update && apt-get -y upgrade && apt-get -y install python-software-properties && apt-get -y install software-properties-common && add-apt-repository -y ppa:pritunl && apt-get update && apt-get -y install pritunl
https://instance_ip:9700
pritunl
を使用しますOS XにはViscosityを、iOSにはOpenVPN接続をクライアントとして使用しています。 Viscosityで、[Networking]タブの[Send all traffic over VPN connection]オプションをオンにします。
次の2つの方法のいずれかで、ping、traceroute ...を実行できるにもかかわらず、VPNを介してWebを閲覧できないという問題を解決できます。
まず、クライアントとサーバーの両方のconfファイルで「proto udp」を「proto tcp」に変更することにより、UDPの代わりにTCPプロトコルを使用できます。
次に、クライアントとサーバーの両方のconfファイルで「dev tun」を「dev tap」に変更することで、tunの代わりにtapデバイスを使用できます。
問題が何であるかはわかりませんが、Google側からの問題のようです。
Google VPCは、VM外部IPを持つ内部IP以外のsource_ip
を持つパケットをドロップしていることに注意してください。
このドキュメント https://cloud.google.com/compute/docs/vpc/advanced-vpc の状態:
VPCネットワークはIPヘッダーを書き換えて、インスタンスの外部IPアドレスをソースとして宣言します。インスタンスに外部IPアドレスがない場合、呼び出しは許可されず、VPCネットワークは送信者に通知せずにパケットをドロップします。
したがって、openVPNが他のネットワークからパケットを転送しているだけの場合、source_ip
は既存のVMの内部IPと一致しないため、パブリック内部へのパケットはドロップされます。このため、NAT VPNネットワークなどのローカルネットワークを出るパケットが必要です。
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.0.0/16 !192.168.0.0/16
NAT=を自動的に構成するため、OZ_回答で言及されている「Pritunl」は機能します。
これは実際には答えではありませんが、サイトでは私がそれをコメントとしてコメントに追加することを許可していませんでした。
それにもかかわらず、私はあなたが上で詳述したのとほぼ同じ構成を持っています(私はサーバーでdnsmaqを構成していませんでした)
残念ながら、VPNは期待どおりに機能していません。 VPNに接続している間、アドレスを解決し、一部のインターネットホストにpingを送信し、完全なトレースを行うこともできます。しかし、ブラウザを開いてサイトに移動すると、接続が非常に遅くなります。接続に何が影響しているのかわかりませんが、本当に奇妙な問題です。
たぶん、Googleの誰かが何が起こっているのかを知る手助けをしてくれるでしょう。
PS 1.他の人が以前に提案したように、IP転送が有効かどうかを確認できますか?私にとって、再起動後にnet.ipv4.ip_forwardの値を確認する唯一の方法は、/ etc/sysctl.dでカスタムルールを使用した後です
たとえば、次のコマンドを使用してルールを追加できます。
$ Sudo echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/90-useroverrides.conf
PS 2.転送が機能する場合、VPNに接続している間に外部ホストへのトレースルートをテストできますか?これを行ったときに得られた出力は少し奇妙です(同じIPに複数のホップがあるのはなぜですか????):
$ Sudo traceroute www.yahoo.com -T -p 80 -N 1 -z 0.5 -q 1
traceroute to www.yahoo.com (98.139.183.24), 30 Hops max, 60 byte packets
1 209.85.241.26 (209.85.241.26) 0.764 ms
2 209.85.241.34 (209.85.241.34) 0.668 ms
3 209.85.241.26 (209.85.241.26) 0.966 ms
4 209.85.241.36 (209.85.241.36) 0.702 ms
5 209.85.241.28 (209.85.241.28) 0.865 ms
6 209.85.241.36 (209.85.241.36) 0.642 ms
7 209.85.241.26 (209.85.241.26) 0.921 ms
8 209.85.241.28 (209.85.241.28) 18.837 ms
9 72.14.238.107 (72.14.238.107) 13.378 ms
10 72.14.237.131 (72.14.237.131) 38.275 ms
11 209.85.254.131 (209.85.254.131) 13.349 ms
12 *
13 ae-8.pat1.bfz.yahoo.com (216.115.101.231) 44.903 ms
14 ae-4.msr1.bf1.yahoo.com (216.115.100.25) 45.323 ms
15 xe-10-3-1.clr1-a-gdc.bf1.yahoo.com (98.139.232.101) 47.382 ms
16 et18-25.fab6-1-sat.bf1.yahoo.com (98.139.128.103) 45.793 ms
17 po-13.bas1-7-prd.bf1.yahoo.com (98.139.129.209) 41.143 ms
18 ir2.fp.vip.bf1.yahoo.com (98.139.183.24) 42.451 ms
PS 3.正しく機能しているように見える唯一のことは、VPNがホストからの外部IPを使用してインターネットにアクセスすることです。
$ Sudo curl --interface tun0 checkip.dyndns.org
<html><head><title>Current IP Check</title></head><body>Current IP Address: 107.178.XXX.XXX</body></html>
編集/etc/sysctl.conf
のコメントを解除して#net.ipv4.ip_forward=1
これにより、OpenVPNがトラフィックを転送できるようになります。
ネットワークについて。
1)コンソールでOpenVPNサブネット(10.8.0.0/24など)からのすべてのトラフィックを有効にします
2)マスカレードをネットワークに追加することを強くお勧めします
firewall-cmd --zone=trusted --add-masquerade --permanent
firewall-cmd --reload-all
3)カーネルでパケットルーティングを有効にすることを忘れないでください
a)一度
echo 1 > /proc/sys/net/ipv4/ip_forward
b)/etc/sysctl.confに永久に:
net.ipv4.ip_forward = 1
OpenVPN自体のトラフィックを許可するルールを追加する必要があります。
iptables -A INPUT -p udp --dport 1194 -j ACCEPT