OpenVPNを使用したGoogle Compute Engine上のVPNサーバー


13

私はすべてのトラフィックのVPNサーバーとしてGoogle Compute Engineサーバーを使用しようとしています(ロシアに住んでいます。ここでは検閲に問題があります)。

GCE上のVPNに関するミニチュートリアルがありますが、OpenVPNではなく、GCE内の2つのサーバー間のネットワークに関するものです。

DebianでOpenVPNを使用してVPNを設定することについて、別のチュートリアルからすべての手順を実行しました。クライアントからVPNに接続できますが、接続を開くことができません(グーグルにpingすることさえできません)。サーバーでは、通常どおりすべてをpingしてダウンロードできます。

Linodeに同じセットアップのVPNがあり、正常に動作します。したがって、問題はGCEネットワークルーティングまたはファイアウォールルールにあります。

私は多くのバリエーションを試しましたが、何も機能しません。設定を見て、何を変更すべきか教えてください。

//問題が解決されたため、設定行が削除されました//


IP転送を有効にする方法はありますか?エコー1> / proc / sys / net / ipv4 / ip_forward
アレックイストミン

@AlecIstomin、はい、できました。Linodeに同じセットアップのVPNがあり、正常に動作します。したがって、問題はGCEネットワークルーティングまたはファイアウォールルールにあります。
OZ_ 14

GCEサポートにお問い合わせください。これは、彼らがすぐに答えることができるようなもののようです。
ビルヴァイス14

サポートプランの@BillWeissの価格は月額150ドルからですが、この問題が1週間以内に解決しない場合は、支払います。また、oDeskで誰かを見つけて修正し、ブログにチュートリアルを書きます。
OZ_ 14

odesk.com/jobs/~01c4b1438a64f31fdd-お気軽にお申し込みください。
OZ_ 14

回答:


7

まず、@ Shivoxの回答に感謝します

そして、ここに簡単な方法があります:

  • I(「ネットワーク」タブ」を参照してください)あなたは、追加のネットワークを作成することをお勧めしネットワーク設定では、のために許可ルールを追加:TCPを:22(存在しない場合)、TCP:9700、TCP:17619を17619ここでは変数である-いずれかに変更して好きなポート(範囲は9075-65534)必要なのは3つのルールと2つのデフォルトルートだけで、それ以外は何もありません。
  • [Compute Engineインスタンスの作成]に移動し、[詳細オプションを表示]をクリックして、ポート転送を許可し、サーバーの場所を選択します。
  • ここで(場所を選択したら)、静的IPをサーバーに追加します。
  • Ubuntu 14.04イメージ(正確にこのバージョン)を選択します。
  • インスタンスを作成
  • SSH経由で接続する(最も簡単な方法-GCEパネルのブラウザー内ツールを使用する)
  • 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
  • DBに関する質問では、[保存]をクリックします
  • ログインウィンドウで、pritunlユーザー名とパスワードとして使用
  • 管理者ユーザーのユーザー名とパスワードを変更します
  • 組織を追加してから、2人のユーザー(デスクトップとモバイル用)を追加します
  • 「サーバー」タブの「サーバーの追加」をクリックします
  • 最初のステップのポート番号(例として17619)とTCPプロトコルを使用します。
  • 組織をサーバーに接続する
  • サーバーを起動
  • [ユーザー]タブで、両方のユーザーのキーをダウンロードします(内部にovpnファイルがあるtarアーカイブ)。

OS XにはViscosityを使用し、iOSにはクライアントとしてOpenVPN接続を使用します。Viscosityで、[ネットワーク]タブの[VPN接続を介してすべてのトラフィックを送信する]オプションをオンにします。


ただ注意してください:Google Cloud Platformは60日間、300ドルの無料トライアルを提供します。
OZ_

1
変更のUbuntu 14.04にPritunlをインストールするIntructions:github.com/pritunl/pritunl#ubuntu-trusty
motobói

6

次の2つの方法のいずれかによって、ping、traceroute ...を実行できるにもかかわらず、VPNを介してWebを閲覧できないという問題を解決できます。

最初に、クライアントとサーバーの両方のconfファイルで「proto udp」を「proto tcp」に変更することにより、UDPの代わりにTCPプロトコルを使用できます。

次に、クライアントとサーバーの両方の設定ファイルで「dev tun」を「dev tap」に変更することにより、tunの代わりにtapデバイスを使用できます。

しかし、問題が何であるかはわかりませんが、それはGoogleの終わりからの問題のようです。


1
あなたは私のヒーローです!どうもありがとうございました!TCPに切り替えるとうまくいきました。完全な「ハウツー」を別の回答で拡大します。長い夢が実現したときのその気持ち...ありがとう!
OZ_

4

Google VPCはsource_ip、外部IPを持つVMの内部IP以外のパケットをドロップしていることに注意してください。

このドキュメントhttps://cloud.google.com/compute/docs/vpc/advanced-vpcの状態:

VPCネットワークはIPヘッダーを書き換えて、インスタンスの外部IPアドレスをソースとして宣言します。インスタンスに外部IPアドレスがない場合、呼び出しは許可されず、VPCネットワークは送信者に通知せずにパケットをドロップします。

したがって、openVPNが他のネットワークからパケットを転送しているだけの場合、パブリック内部へのパケットsource_ipは、既存のVMの内部IPと一致しないため、ドロップされます。そのため、VPNノードなど、ローカルネットワークを離れるパケットをNAT変換する必要があります。

Chain POSTROUTING (policy ACCEPT)
target      prot opt source              destination         
MASQUERADE  all  --  192.168.0.0/16      !192.168.0.0/16

OZ_の回答に記載されている「Pritunl」は、NATを自動的に構成するため機能します。


3

これは実際には答えではありませんが、サイトはあなたの質問へのコメントとして追加することを許可しませんでした。

それにもかかわらず、私はあなたが上で詳述したのとほぼ同じ設定を持っています(サーバーでdnsmaqを設定しませんでした)

残念ながら、VPNは期待どおりに機能していません。アドレスを解決し、一部のインターネットホストにpingを実行し、VPNに接続している間に完全なトレースを行うこともできます。ただし、ブラウザを開いてサイトに移動すると、接続が非常に遅くなります。接続に何が影響しているのかわかりませんが、本当に奇妙な問題です。

たぶん、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>

@OZ_ VPNへの接続中にpingとtracerouteができるようになったことをうれしく思います。さて、トレースルートの結果を投稿できますか?出力の最初の行に興味があるのは、少なくとも最初の8回はパッケージがループでルーティングされているように見えるからです(ただし、ネットワークの専門家ではありません)
マリオ

申し訳ありませんが、ここはgist.github.com/jamm/028ae858a03e40495740です。そして、はい、それは奇妙に見えます。特定のルートが必要な場合があります。
OZ_ 14年


1

GoogleクラウドのVMインスタンスでIP転送を有効にする必要があります。有効にしないと、パケットがVMに到達しません。これはnet.ipv4.ip_forward = 1、VMで設定できるものとは別のものです。

IP転送は、VMを作成する前に1回だけ設定でき、その後は変更できません。新しいVMで有効にするには、次をクリックしますManagement, security, disks, networking, sole tenancyここに画像の説明を入力してください

次に、Networkingタブで[ Network InterfaceIP転送]をクリックして設定しますON

ここに画像の説明を入力してください


0

OpenVPN自体のトラフィックを許可するルールを追加する必要があります。

iptables -A INPUT -p udp --dport 1194 -j ACCEPT

ルール#4として存在
OZ_

0

ネットワークについて。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.