したがって、OpenVPNとAmazon EC2サーバーを使用して独自のVPNサーバーをセットアップする方法についてのチュートリアルに従いましたが、うまく機能していました。つまり、突然ブロックされるまでです。インスタンスを再起動して、新しいIPアドレスを取得した可能性があります。それはさらに数日間再び機能し、その後ブロックされます。あなたのオフィス、ISP、または政府がOpenVPNサーバーを積極的にブロックしているようです。それで、あなたは何をしますか?
基本的なファイアウォールは、使用されるポートと宛先IPアドレスに基づいて接続をブロックしますが、より高度なファイアウォールは、ディープパケットインスペクション(DPI)および/またはステートフルパケットインスペクション(SPI)を使用して、異なるタイプの暗号化アルゴリズムとVPNプロトコルを区別します。つまり、OpenVPNトラフィックを検出し、管理者がサーバーをブロックできるようにフラグを立てることができます。.
これを回避するには、難読化プロキシ、SSLトンネリング、SSHトンネリングの3つのオプションがあります。このチュートリアルでは、後者について説明します。 SSHトンネリングは、既に暗号化された接続を別の暗号化層でラップし、ファイアウォールが区別できないようにします。これらの各方法は、企業や中国のような検閲が重い政府によって設置されたDPIおよびSPIファイアウォールをバイパスする必要があります.
SSH経由のOpenVPNには、いくつかの欠点があります。 1つは、二重暗号化によるパフォーマンスの低下です。第二に、OpenVPNの指紋は、SSHをトンネリングすると検出できなくなりますが、一部のファイアウォールはSSHトラフィックもブロックします。これは、暗号化されたプロキシ、OpenVPN、SSHなどのあらゆるタイプの使用を停止するNetflixのようなサービスの場合です。この場合、代わりにObfsproxyを設定することをお勧めします。これにより、暗号化されたトラフィックは正常で暗号化されていないように見えます。このため、Obfsproxyははるかに強力ですが、セットアップと実行がより複雑です.
残念ながら、OpenVPNと組み合わせたObfsproxyは、現時点ではデスクトップ上でのみ機能します。 SSHトンネリングは、AndroidまたはiOSモバイルデバイスで使用できます。.
このチュートリアルは、機能するOpenVPNサーバーが既にセットアップされており、OpenVPN GUIまたはOpenVPN Connectアプリを使用して接続できることを前提としています。また、MacのターミナルまたはPCのPuTTyを使用して、サーバーにSSH接続できる必要があります。デモンストレーションのために、PuTTyを使用します。すべて設定していない場合は、以前のチュートリアルを参照してください.
PCでのOpenVPN over SSHのセットアップ
前回のチュートリアルでは、簡単なSSHプロキシを設定する方法について説明し、それを拡張して完全なVPNサーバーを作成しました。このアプローチでは2つを組み合わせます。つまり、必要なものはすべて揃っているはずです。.
PuTTyを開き、VPNサーバー構成をロードします。サイドバーで、[接続]に移動します > SSH > トンネル。 D8080がリストに含まれていることを確認してください。そうでない場合は、「ソースポート」に8080と入力し、自動および動的をチェックします。次に、追加を押します。これで、ポート8080を介してSSHプロキシが実行されます。ナビゲーションツリーの[セッション]タブに戻る場合は、これを別のセッション構成として保存できます。.
[開く]をクリックしてサーバーにログインします。新しいAmazon Linux AMIでは、ユーザー名が「ec2-user」であることを忘れないでください.
openvpn.confファイルに移動し、これらのコマンドを使用して内容を確認します
cd / etc / openvpn
猫openvpn.conf
これにより、OpenVPNサーバー構成ファイルの内容が表示されます。次のようになります。
ポート1194
proto tcp-server
dev tun1
ifconfig 10.4.0.1 10.4.0.2
ステータスserver-tcp.log
動詞3
秘密のovpn.key
重要なことは、2行目がUDPではなくTCPに設定されていることです。変更する必要がある場合は、次のコマンドで編集できます。
sudo nano openvpn.conf
次に、CTRL + O(ゼロではなく文字「o」)をクリックしてファイルを保存し、CTRL + Xをクリックしてエディターを終了します.
クライアント設定
ローカルマシンで、OpenVPNクライアントの構成ファイルに移動します。デフォルトのインストールディレクトリを使用した場合、これはC:/ Program Files / OpenVPN / configになります。.
最後のチュートリアルから既存のOpenVPN構成ファイルのコピーを作成するか、新しいものを作成します。メモ帳または別のプレーンテキストエディターを見つけて右クリックし、管理者として実行します。新しい設定ファイルを開くか作成します。次のようになります。
proto tcp-client
リモートlocalhost 1194
ポート1194
dev tun1
秘密のovpn.key
リダイレクトゲートウェイdef1
ifconfig 10.4.0.2 10.4.0.1
socks-proxy-retry
socks-proxy 127.0.0.1 8080
2番目の「リモート」行は、OpenVPNサーバーIPの代わりにlocalhostを使用し、さらにSOCKSプロキシを使用するようにOpenVPNを構成する2行を使用します。他のすべては以前と同じです.
OpenVPNディレクトリのconfigフォルダーに新しい構成ファイルを保存します.
アプリをセットアップする
最後の手順は、ポート8080経由でプロキシを使用するようにアプリを構成することです。これは、前のチュートリアルの基本的なSSHプロキシで行ったことと似ています。多くのアプリでは、設定でプロキシ設定を使用できますが、一部のアプリではそれを自動検出することもできます。手動で設定する必要がある場合、必要な3つの情報は次のとおりです。
- ホスト:127.0.0.1
- ポート:8080
- プロキシタイプ:SOCKS5(またはSOCKS v5)
FirefoxとChromeの手順は次のとおりです。
Firefoxの場合:
- ツールに移動 > オプション > 高度な > 通信網 > 接続 > 設定 > 手動プロキシ設定
- SOCKSホストを127.0.0.1に設定し、ポートを8080(またはトンネルポートをPuTTyに設定したもの)に設定します.
- [OK]をクリックして保存します
Chrome Proxy Switchyで
- 拡張機能をインストールするとすぐにセットアップページが表示されるか、Chromeの右上にあるアイコンをクリックして[オプション]をクリックします。.
- プロファイルには好きな名前を付けてください。 [手動構成]で、SOCKSホストを127.0.0.1に、ポートを8080(またはPuTTyでトンネルポートに設定したもの)に設定します。その他はすべて空白のままにします.
- [保存]をクリックし、もう一度アイコンをクリックしてプロキシプロファイルを選択します.
ここで、最初に上記の構成を使用してPuTTyでサーバーに接続し、次に作成した新しい構成ファイルを使用してVPNで接続します.
これで、OpenVPN over SSHでインターネットに接続されました!
モバイル
OpenVPN + SSHトンネルをAndroidに適応させる方法について説明しますが、iOSはそれほど違いはありません.
始める前に、いくつか注意点があります。まず、この方法はWebブラウジングに対してのみ機能します。それは、デスクトップとは異なり、標準のAndroidまたはiOSデバイスで好きなようにポートを開くことができないからです。つまり、他のアプリで使用されるポートは、SSHプロキシ経由で転送されません。これを克服するには、デバイスをルート化またはジェイルブレイクし、ProxyDroidやCydiaのUnixアプリなどのアプリを使用してプロキシを設定します.
これは後日のチュートリアルです。今のところ、Firefoxを搭載した標準のAndroidで起動して実行しましょう。次のアプリをインストールする必要があります。
- Android向けOpenVPN(注:OpenVPN Connectではなく、認証についてより注意が必要です)
- ConnectBot、または同等のSSHターミナルアプリ(JuiceSSHは適切ですが、ポートを転送するには追加料金がかかります)
- File Commanderなどのファイルマネージャー
- Firefox、またはプロキシを設定できる別のブラウザ
また、コンピューターから携帯電話にファイルを転送する手段も必要になります。 USBケーブルで問題ありません。 IBackupの同期フォルダーを使用しました.
デスクトップで上記で作成したovpn.keyと.ovpn構成ファイルを見つけて、携帯電話の内部ストレージまたはSDカードに移動します。サーバーホストから提供された.pemキーファイルも移動します。おそらく、PuTTyでの認証に使用する.ppkファイルと同じ場所にあります。紛失した場合は、Amazon EC2ダッシュボードで、または使用しているサーバーホスティングサービスから別のダッシュボードを作成する必要があります.
オプションで、SSHなしで接続するために使用する標準の.ovpn構成ファイルを取得できます。その後、ブラウザだけでなくすべてのアプリでVPNを使用できます。これはトラブルシューティングに役立ちます.
ConnectBotのセットアップ
電話でConnectBotを実行します。右上隅の3つのドットをクリックして、Pubkeyの管理に進みます。次のページでドットをもう一度クリックし、[インポート]をクリックします。これにより、インストールしたファイルマネージャーが起動します。電話機に移動したばかりの.pemファイルを見つけて選択します。これで、公開鍵のリストに、横に赤いロックが表示されます。それをタップして緑色に変えます。 ConnectBotのメインページに戻るには、戻るボタンを押します.
「ssh」の隣の下部のターミナルフィールドに、SSHの詳細を入力します。次のようになります。
ec2-user @:22
OpenVPNサーバーのIPアドレスに置き換えます。 Enterキーをタップして、サーバーにSSH接続します。これらはすべて保存する必要があるので、再度入力する必要はありませんが、今後公開鍵を再度切り替える必要がある場合があります.
接続に成功したら、3つの点をもう一度押して切断します。プロファイルはConnectBotのホーム画面に保存する必要があります。長押ししてコンテキストメニューを開き、「ポート転送を編集」をタップします。次のページで、3つのドットをタップして「ポート転送を追加」を選択します。
好きな名前を付けてください。 TypeをDynamic(SOCKS)に設定し、ソースポートを8080(またはOpenVPN構成ファイルのsocks-proxy行にあるもの)に設定します。 「ポート転送を作成」をタップします.
ConnectBotは準備ができていますが、まだ接続できません。まずOpenVPNをセットアップしましょう.
OpenVPN for Androidのセットアップ
Android向けOpenVPNを実行する.
右上隅にある下向き矢印のある四角いボタンをクリックして、プロファイルをインポートします。 .ovpn構成ファイルに移動して選択します。次のページで、「選択」というボタンを押します.
今回は、ovpn.keyファイルに移動して選択します。右下の黄色の保存ボタンを押します.
これで、新しいプロファイルがアプリのホーム画面のリストに表示されます。.
接続する前に、サーバーファイアウォールを再確認しましょう。 AWSにログインし、[インスタンス]を選択して、OpenVPNサーバーを強調表示します。 [セキュリティグループ]フィールドで、このインスタンスに使用されているものをクリックします。それを右クリックし、「受信ルールの編集」を選択します.
ポート22、1194、8080にカスタムTCPルールを追加し、個人の構成に必要に応じて調整します.
さあ、接続しましょう。最初にConnectBotを開きます。作成したばかりのプロファイルをタップして、サーバーにSSH接続します。パブキーがオンになっていることを確認してください。オンになっていないと、パスワードに関するエラーが表示されます。接続に成功したら、OpenVPNアプリに切り替えます。そこでプロフィールをタップして接続します.
接続時にポップアップするOpenVPNログの最後に、「CONNECTED、SUCCESS」というメッセージが表示されます。.
デスクトップと同じ.pemファイルと.keyファイルを使用しているため、これらの認証情報は一度に1つのデバイスでしか使用できないことに注意してください。最初にデスクトップに接続していないことを確認してください。複数のデバイスに同時に接続する場合は、それぞれに対して新しい資格情報(.keyおよび.pem)を生成する必要があります.
プロキシを使用するようにFirefoxを構成する
最後に、プロキシを使用するようにFirefoxを構成する必要があります。モバイルのChromeとSafariにはプロキシ設定オプションが付属していないため、Firefoxをお勧めします。 Wi-Fi設定でプロキシの設定を試すことができますが、プロキシなしで接続するたびにプロキシを変更する必要があります.
FirefoxのURLバーに「about:config」と入力します。そのページの検索バーに「network.proxy」と入力します。これにより、関心のあるすべてのフィールドが表示されます。指定されたフィールドに次の設定を入力します。
- network.proxy.socks:127.0.0.1
- network.proxy.socks_port:8080(またはOpenVPN configおよびConnectBotで設定したもの)
- network.proxy.type:1
これにより、OpenVPNとSSHを介してFirefoxのブラウザートラフィックがルーティングされます。ディープパケットインスペクションを恐れることなく、VPNを介してモバイルデバイスからWebを閲覧できるようになりました!
OpenVPNを使用せずにSSHプロキシ経由で接続する場合は、ConnectBotを使用してサーバーにSSH接続するだけで、OpenVPNには接続しません。逆に、基本的な非SSH .ovpn構成ファイルをOpenVPNアプリにインポートし、そのsans SSHプロキシに接続できます.
CC BY 2.0に基づいてライセンスされたjo.sauによる「トンネル」
したがって、OpenVPNとAmazon EC2サーバーを使用して独自のVPNサーバーをセットアップする方法についてのチュートリアルに従いましたが、うまく機能していました。しかし、突然ブロックされるまでです。インスタンスを再起動して、新しいIPアドレスを取得した可能性があります。それはさらに数日間再び機能し、その後ブロックされます。私たちのオフィス、ISP、または政府がOpenVPNサーバーを積極的にブロックしているようです。それで、私たちは何をしますか?このチュートリアルでは、SSHトンネリングについて説明し、ファイアウォールをバイパスする方法を提供しています。SSHトンネリングは、既に暗号化された接続を別の暗号化層でラップし、ファイアウォールが区別できないようにします。これにより、OpenVPN over SSHでインターネットに接続できます。ただし、SSHトンネリングにはいくつかの欠点があります。この方法はWebブラウジングに対してのみ機能し、二重暗号化によるパフォーマンスの低下があります。また、一部のファイアウォールはSSHトラフィックもブロックします。この場合、代わりにObfsproxyを設定することをお勧めします。