web-dev-qa-db-ja.com

制限的なファイアウォールを介してOpenVPNを使用する方法

私は現在、主に過度に制限されたファイアウォールを介して接続するために、個人のVPSでOpenVPNをセットアップしようとしている状況にあります。下記のすべてのセットアップは、ファイアウォール接続で使用すると機能します。

私が試してみました:

  1. 標準ポートで実行されているOpenVPN
  2. ポート443で実行中のOpenVPN(VPSのコマンドラインからOpenVPNを手動で起動し、サーバーが接続がほぼすぐに閉じられたことを報告していることを確認しました。これはファイアウォールのDPIの結果であると想定しています)
  3. OpenVPNにアクセスしてDPIを回避するために、ポート443で実行されているSTunnel。これは最も成功しており、接続が強制的に閉じられる前に、VPNを介した接続とインターネットアクセスを最大10〜20秒間許可します。

他に試すことができるものはありますか?

13
R.L. Stine

時間の経過後に接続が切断されると、1秒あたりのバイト数のタイプの制限が示されることがあります。 VPN接続の速度が低下するかどうかを確認してください。また、OpenVPNをUDP用に構成している場合は、TCPを使用してください(443 UDPがブロックされているのに対し、443 TCPが検出されない可能性があります)。

SSLを使用する有名なサイトにアクセスし、証明書を確認してください。その後、自宅でも同じようにします。それらが一致しない場合、場所は透過的なHTTPS SSLプロキシを使用しており、実際にHTTPSトラフィックを見ることができます。

ポート443でないものは、あまり注意深く監視されていない可能性があります。 22を試してください。

ばかげて聞こえるかもしれませんが、ポート80で実行して、何が得られるかを確認してください。あなたとVPSの間にHTTPトンネルを設定して、トラフィックをHTTPリクエストのように見せることもできます。

気分が悪い場合は、 ヨウ素 を試してください。

11
LawrenceC

Stunnel methodeがこのように動作する理由を知っていると思います。これは、stunnelサーバーに「静的ルート」を設定するためにnetするためです。それについて説明させてください。 openvpnサーバーに接続すると、ルーティングテーブルが変更され、openvpnパケットを除くすべてのパケットがvpnを介してルーティングされます。実際にopenvpnは、サーバーのIPアドレスのルートを追加します。しかし、stunnelを使用してopenvpnサーバーに接続する場合、openvpnをループバックインターフェイスに接続し、vpnの外部にあるサーバーへのルートがないため、stunnelパケットはサーバーに行き、vpnに行き、vpnパケットは行きます:)

したがって、vpn(ホームルーター)の外に出るルートをサーバーIPに追加する必要があります。

メソッドポート443の問題については、ファイアウォールがSPIまたはDPIを使用しており、https(ssl)パケットから異なるopenvpnパケットを簡単に作成できると言うことができます。そのため、stunnelを使用するのが最善の方法です。 、またはファイアウォールがsslパケットをブロックする場合は、obfsproxyまたはfteproxyを使用してバイパスすることをお勧めします。

(私は投稿が古いことを知っていますが、同じ問題について数週間答えを探していたので、これについて学んだことを共有したいと思いました)

5
Reza Askari

Reza Askariの回答は、まさに3番目の質問に対する回答でした。これは私のLinuxコンピューターとAndroidの両方で起こっています。

コンピューターで、OpenVPNに接続する前に

Sudo openvpn --config configFile.ovpn

OpenVPNトンネルからstunnelサーバーを削除するルールを追加する必要があります。

Sudo /sbin/ip route add stunnel_ip via default_gateway_ip

次に、OpenVPNサーバーに接続します。完了したら、次の方法でそのルールを削除できます。

Sudo /sbin/ip route del stunnel_ip

忘れないように簡単にするために、ルールを追加してOpenVPNを実行するシェルスクリプトを作成します。OpenVPNが終了すると、ルールは削除されます。

Sudo /sbin/ip route add stunnel_ip via default_gateway_ip

Sudo openvpn --config configFile.ovpn

Sudo /sbin/ip route del stunnel_ip

Androidでは、「Arne Schwabe」による「OpenVPN for Android」クライアントと「Balint Kovacs」による「SSLDroid」を使用します。

次に、OpenVPNクライアントで、トンネルを通過するVPNプロファイルから「SSLDroid」を除外します。

そこでRezaの回答やコメントを賛成したかったのですが、この評判スコアルールが原因でした。

3
0x00FE

私は試したことはありませんが(機能するかどうかはわかります)、443でSSHトンネリングを使用して@ショットを与え、OpenVPNをトンネル経由で実行します。 443をリッスンするために追加のリモートホストが必要ない場合がありますが、ここに例があります http://www.anonyproz.com/openvpnsshtunnel.pdf プロキシサービスを使用するための[編集者注: このウェイバックマシンのリンク の方が安全かもしれません]ですが、これもグーグル可能です:

https://www.google.com/search?q=ssh%20tunnel%20openvpn

彼らが人気だったときに雇用主がdice.comなどの求人サイトへのアクセスをブロックしたため、このアプローチをプロキシとして使用することも知っています。

1
MDMoore313