プロキシ下でも動作するSSL-VPNをOpenVPNを用いて構築する

2018年7月8日Linux・Ubuntu Tips, 金盾対策, VPNLinux, Ubuntu, VPN, OpenVPN, プロキシ, SSL-VPN, 金盾対策

例えば80番や443番などしか通過させないようなプロキシが強制的に導入されている環境(たとえば会社や公衆無線LANサービス)では、通常のようにVPN接続を行うことが出来ない。

よく使われる方法は、softetherを用いる方法である。ただ、Softetherをわざわざ使うのが面倒であるのなら、OpenVPNを443/tcpで動かしてしまえば良い。

SSLHを導入する

sslhは、443ポートをSSHの待ち受けにも、Apacheの待ち受けにも、OpenVPNの待ち受けにも分けてくれる魔法のソフト。

以下のページを参考にインストールをして欲しい。

sslhを用いてApache(HTTPS)、OpenVPN、SSHを同時に443番ポートで待ち受ける
443ポートは大変貴重なもので、例えば80番ポートと443番ポートしか空いていない公衆無線LANが存在しているとき、自宅のサーバーやVPSで443番ポートを経由してSSHやVPNへ

OpenVPNを導入する

今回はOpenVPNを用いる。
OpenVPNを用いたVPNサーバーの立て方は、下記のページにて詳細を説明している。

Ubuntu 16.04に2.4系の最新なOpenVPNを導入する
先日、UbuntuにOpenVPNを入れてみたが、入っているバージョンはかなり古いもので、なんと2.3.10であった。# openvpn --versionOpenVPN 2

OpenVPNのproto設定を変更する

先ほどのsslhの設定では、

--openvpn 127.0.0.1:1194

とした。つまり、443に入ってきたopenVPNの通信は、1194ポートに飛ばすという形だ。従って、openvpnはtcpの1194で動かすこととなる。
openvpnのserver.confのうち、portとprotoを次のように変えてあげる。

port 1194
proto tcp

OpenVPNクライアントの設定を変更する

クライアント用の「ovpn」ファイルに関して、次のように変更をしてあげる。

client
dev tun
proto tcp
remote サーバーのアドレス 443

ここで重要なのは、本当のポートである「1194」ではなく、443と記入すること。これで、sslhが自動的にこの通信をOpenVPNに引き継ぎ、処理が行われる。

これらの設定を用いれば、限られたポートでの通信しか許可されていない場合でも、VPN回線を張ることで自由に通信を行うことが可能だ。

執筆者紹介

Thir

最新のガジェットを購入してはレビューする、を繰り返しています。このブログでは、ガジェットの紹介のほか、各種サーバーやスマートホームの構築などを提供しています。最近はYouTubeでもレビュー動画やVlogをあげています。(プロフィール