制限付きファイアウォールを介してOpenVPNを使用する方法は?


13

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

私が試してみました:

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

他に何かできることはありますか?


1
親愛なる主よ、あなたがVPNの実行を妨げるような長さになる「パーソナルVPS」プロバイダーは何ですか?!また、OpenVPNサーバーとしてVPSを使用しようとしているのか、それともクライアントにしたいのかは明らかではありませんか?
-allquixotic

わあ!もっと明確にすべきだった。VPSプロバイダーはLinodeであり、何もブロックしていません。;)問題は、インターネットアクセスが厳しくファイアウォールで保護されているクライアント(ラップトップ)からVPNに接続していることです。
RLスタイン

1
あなたが示唆したように、一般にVPNソリューションは、ステートフルなパケット検査を行うものによってかなり簡単に検出されるでしょう。強制切断は、stunnelのhttps接続を調べて「ちょっと待って、標準のHTTP要求/応答接続はあまりおしゃべりではない!」というトラフィック分析メソッドが原因である可能性があります。-本質的にあなたは立ち往生しています。ただし、HTTPSプロキシを試すこともできます。多分、リクエストをHTTPボディとして(SSLを介して)サーブレットに渡し、リクエストを転送するものです... o_O
allquixotic

3
会社のファイアウォールによって実装された制限をバイパスすることは、会社のポリシーに違反する可能性が高いことに留意してください。この問題についてファイアウォール管理者に相談することをお勧めします。
アンスガーウィーチャーズ

回答:


11

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

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

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

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

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


2
+1、特にヨウ素の場合!
0xC0000022L

5

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

そのため、VPN(ホームルーター)の外部にあるサーバーIPにルートを追加する必要があります。

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

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


これは質問に対する答えを提供しません。投稿者に批判や説明を求めるには、投稿の下にコメントを残します。自分の投稿にいつでもコメントできます。評価が十分になったら、投稿にコメントできます。
ラムハウンド

3

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」の「Android用OpenVPN」クライアントと「Balint Kovacs」の「SSLDroid」を使用します。

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

そこでRezaの答えやコメントに賛成したかったのですが、この評判スコアのルールに阻まれました。


1

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

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

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

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