Edited at

OpenVPNが繋がらない場所から、どうにかして繋げる


OpenVPNが繋がらない場所とは

その名の通りOpenVPNが繋がらない場所です。

なぜか職場や学校、寮や特定の地域からだとOpenVPNが繋がらないという経験をしたことがある人は多いのではないでしょうか。

この記事では事例別に対処法を書いておきます。

おそらく複数の対処法を組み合わせることで繋げれるようになるかと思いますので、自分の環境に応じてトライしてみてください。

本記事では具体的な設定方法やコマンドなどは扱わないので、必要に応じて調べてください。

もし他にも対処法などあれば、どんどん編集リクエストやコメントなどいただけると嬉しいです。


注意事項

不当なアクセス制限を受ける人や、管理者の承認を得て繋げようとする人などのために書いた記事です。

違法行為に使うのはダメです。責任は一切負いません。


1. UDPに制限がかかっている

ネットワークの管理者が、UDPプロトコルに制限をかけている場合があります。

この場合、TCP通信はできてもUDPは弾かれます。

VPNサーバーの設定をUDPからTCPに変えることで、対処できます。


2. ポートがブロックされている

OpenVPNサーバーは、デフォルトで1194ポートを使います。

つまりブロッキングしたい管理者は、このポートをブロックしてしまえばいいわけです。

ということで、VPNサーバーのポート設定を適当なポートに変更する必要があります。

ちなみに、例えば1000以上のポートは全部ブロック!とかやってる可能性もあります。

ただ、WEBサーバーがデフォルト使う80番、443番をブロックしていることはまずないので、OpenVPNのサーバーも80番や443番などで稼働させると安心です。


3. OpenVPNサーバーのIPアドレス・ドメインがブロックされている

例えば大手のVPNサービスを使っている場合などは、この可能性が高いでしょう。

自前でサーバーをレンタルして、OpenVPNのサーバーを建ててみてはいかがでしょうか。


4. DPI等でOpenVPNのプロトコルがブロックされている

例えば有名なDPI(Deep Packet Inspection)ソフトであるntopなどで、流れてくるパケットを解析するとどういうプロトコルか分かってしまいます。

管理者としては、OpenVPNのパケットをはじくことですべてのOpenVPNによる通信を遮断できます。

ではどうすれば突破できるかというと、別のプロトコルで包んでやればいいわけです。

ここでは複数の手法が考えられるかと思いますが、一番手軽なのはSSHポートフォワードでしょう。

VPNサーバーのアドレスを vpnserver.net、ポートを 1194 とします。

以下の手順では [適当なポート番号] は同じものを使用してください。

まずはSSHポートフォワードでvpnserver.net1194 ポートを localhost[適当なポート番号]にフォワードします。

その後、OpenVPNクライアントから localhost[適当なポート番号] に接続することで無事にVPNに繋がるはずです。

つまり、手元のクライアントからサーバーまでの通信はSSHの暗号化されたトンネルの中で行うということですね。

これでDPIからはSSHプロトコルのパケットに見え、もちろん暗号化されているので中身がOpenVPNのパケットかどうかはわかりません。

(SSHのプロトコルがブロックされている場合は他の方法で)