難読化を使用して、VPN接続が検出および/またはブロックされるのを防ぐことができます。一部の管理者(カフェのワイヤレスホットスポットなど)は、ネットワーク上のVPNトラフィックをブロックすることを選択します。 VPN接続を難読化することで、リモートネットワークリソースに安全に接続したり、そのような制限されたネットワークに接続したままインターネットをプライベートに閲覧したりできます。
ネットワーク管理者は、ディープパケットインスペクション(DPI)などのツールを使用して、HTTP、SSL、VPNなどのプロトコルごとにトラフィックを分類および制限できます。ViscosityはObfsproxyを使用してVPNトラフィックを難読化します。 Obfsproxyは、コンピューターからのVPNトラフィックを変換して、選択したもののように見せるため、DPI方式で制限することはより困難になります。 Obfsproxyがトラフィックを偽装するために使用できるさまざまな方法があります。たとえば、VPNトラフィックの周りに暗号化ラッパーを追加して特定のプロトコルのように見せないようにするobfs2があります。
このガイドでは、次のことを前提としています。
- すでに最新バージョンのUbuntuをインストールしています (執筆時点で18.04)
- ルートがあります ターミナルまたはsshを介したUbuntuのこのインストールへのアクセス
- すでにTCP(UDPではない)OpenVPNサーバーをセットアップしています
- クライアントデバイスにViscosityのコピーがすでにインストールされています
OpenVPNサーバーは、Ubuntuのこのインストール、または別のマシン上に置くことができます。問題ではありません。 OpenVPNサーバーをまだセットアップしていない場合は、セットアップガイドを確認してください。 OpenVPNサーバープロトコルをUDPではなくTCPに設定してください。また、このUbuntuのインストールは新規インストールであり、OpenVPNサーバーもインストールされている可能性があります。
クライアントマシンにViscosityのコピーがまだインストールされていない場合は、Viscosity(Mac | Windows)をインストールするためのこのセットアップガイドを確認してください。
このガイドでは、次の難読化プロトコルのいずれかを設定する方法について説明します。
- obfs2
- obfs3
- スクランブルスーツ
- obfs4
まず、sudo su -
を使用してrootとしてコマンドラインにログインします。 。ログインしたら、次のように入力して、Ubuntuのリポジトリリストが最新であることを確認する必要があります。
sudo apt-get update
obfs2、obfs3、およびobfs4には、obfs4proxyを使用します。 obfs4proxyをインストールするには、以下を実行します。
sudo apt install -y obfs4proxy
スクランブルスーツの場合は、代わりにobfsproxyが必要になります。これを次のようにインストールしてから、さらに下のスクランブルスーツのセクションにスキップしてください。
sudo apt install -y obfsproxy
続行する前の最後の注意点として、このガイドでは例としてポート12345を使用しています。ほとんどの場合、これは問題なく機能します。ただし、他のすべてのポートをブロックする場所でobfsproxyを使用する場合は、これをポート443または80に変更することをお勧めします。これにより、サーバーがWebサイトをホストしたり、外部ソース自体に接続したりすることができなくなる可能性があることに注意してください。これらのポートを選択する場合は、必ずすべてをテストしてください。
Obfs4proxyサーバー構成
obfs4proxyの設定を開始するには、obfs2、obfs3、またはobfs4プロトコルを使用する場合は、最初に構成を設定します。次のコマンドを使用して、obfs4proxy構成用のディレクトリを作成します。
sudo mkdir -p /var/lib/tor/pt_state/obfs4
次に、構成を作成します:
sudo nano /var/lib/tor/pt_state/obfs4/obfs4.config
そして、次のように貼り付けます:
TOR_PT_MANAGED_TRANSPORT_VER=1 TOR_PT_STATE_LOCATION=/var/lib/tor/pt_state/obfs4 TOR_PT_SERVER_TRANSPORTS=obfs4 TOR_PT_SERVER_BINDADDR=obfs4-0.0.0.0:12345 TOR_PT_ORPORT=127.0.0.1:443
必要に応じて、次の変更を加えることができます。
- TOR_PT_SERVER_TRANSPORTS -これは使用するプロトコルです。別のプロトコルを使用する場合は、これをobfs2またはobfs3に変更してください。
- TOR_PT_SERVER_BINDADDR -繰り返しますが、別のプロトコルを使用する場合は、obfs4をobfs2またはobfs3に変更します。 12345は、obfs4proxyがリッスンしているポートです。必要に応じて、これを変更することもできます。
- TOR_PT_ORPORT -これはOpenVPNサーバーのアドレスです。ポート443を使用してOpenVPNサーバーと同じシステムでobfs4proxyサーバーを実行している場合は、何も変更する必要はありません。それ以外の場合は、必要に応じてこのアドレスとポートを変更してください。
構成を保存してnanoを終了します。
次に、obfs4proxyのサービスを設定する必要があります。これを行うには、新しいファイルを作成し、次のようにnanoエディターで開きます。
sudo nano /etc/systemd/system/obfs4proxy.service
そして、以下を貼り付けて、nanoを保存して閉じます。
[Unit] Description=obfs4proxy Server [Service] EnvironmentFile=/var/lib/tor/pt_state/obfs4/obfs4.config ExecStart=/usr/bin/obfs4proxy -enableLogging true -logLevelStr INFO [Install] WantedBy=multi-user.target
次に、サービスを開始し、再起動後に自動的に開始できるようにします。
sudo systemctl start obfs4proxy.service
sudo systemctl enable obfs4proxy.service
次のコマンドで正常に開始されたことを確認できます:
sudo systemctl status obfs4proxy.service
最後に、obfs4プロトコルを使用している場合、サーバーを初めて起動すると、パスワードキーが生成され、Viscosityに貼り付ける必要があります。次のように印刷します:
sudo cat /var/lib/tor/pt_state/obfs4/obfs4_bridgeline.txt | grep 'Bridge obfs4' | sed -e 's/^.*cert=\(.*\) .*$/\1/'
Scramblesuitサーバーのセットアップ
注:スクランブルスーツ用のObfsproxyは、Ubuntu 20(Focal)リポジトリでは使用できなくなりました。自分でコンパイルすることもできますが、代わりにObfs4を使用することをお勧めします。
Scramblesuitには、古いobfsproxyプログラムを使用した別の構成が必要です。開始するには、次のコマンドを使用してobfsproxy用の空のディレクトリを作成します。
sudo mkdir -p /var/lib/tor/pt_state/scramblesuit
次に、使用するパスワードを生成する必要があります。これを行うには、ターミナルに次のように入力します。
python -c 'import os,base64; print base64.b32encode(os.urandom(20))'
これにより、数字と文字の行が出力され、これのコピーが作成されます。これは、以下で必要となるスクランブルスーツと後でViscosityに必要なパスワードキーです。
次に、サービス構成を作成し、nanoで開きます:
sudo nano /etc/systemd/system/obfsproxy.service
そして、次のように貼り付けます。
[Unit] Description=Obfsproxy Server [Service] ExecStart=/usr/bin/obfsproxy --log-min-severity=info --data-dir=/var/lib/tor/pt_state scramblesuit --password=YOURPASSWORD --dest=127.0.0.1:443 server 0.0.0.0:12345 [Install] WantedBy=multi-user.target
必要に応じて次の変更を行います。
- あなたのパスワード -これを上記で生成したパスワードキーに置き換えます。
- 127.0.0.1:443 -これはOpenVPNサーバーへのアドレスです。これは、OpenVPNサーバーがobfsproxyと同じシステムで実行されており、ポート443でリッスンしている場合に有効です。それ以外の場合は、必要に応じてこれを変更してください。
- 0.0.0.0:12345 -これは、obfsproxyが接続をリッスンしている場所です。必要に応じて、12345を別のポートに変更できます。
サービス構成を保存してnanoを終了します。次に、サービスを開始し、再起動後に自動的に開始できるようにします。
sudo systemctl start obfsproxy.service
sudo systemctl enable obfsproxy.service
次のコマンドで正常に開始されたことを確認できます:
sudo systemctl status obfsproxy.service
最後に、Obfsproxyへの外部接続を許可する必要があります。 Ubuntuサーバーガイドに従ってufw(Uncomplicated Firewall)をセットアップすると仮定すると、次のように入力するだけです。
sudo ufw allow 12345
sudo ufw reload
このガイドに示されている12345からポートを変更した場合は、それに応じて最初のコマンドの番号を調整してください。
MacバージョンとWindowsバージョンのViscosityによって提供されるインターフェイスは、意図的に非常に似ています。そのため、ガイドではMacバージョンに焦点を当て、Windowsバージョンとの違いを指摘します。
Viscosityをまだ実行していない場合は、今すぐViscosityを起動してください。 Macバージョンの場合 メニューバーに粘度アイコンが表示されます。 Windowsバージョンの場合 システムトレイに粘度アイコンが表示されます。
メニューバーの粘度アイコンをクリックします( Windows :システムトレイ)を選択し、[設定...]を選択します。これにより、使用可能なVPN接続のリストが表示されます。 OpenVPNサーバーへの接続がすでに作成されていることを前提としています。 OpenVPNサーバーへのViscosity接続の作成をまだ設定していない場合は、OpenVPNサーバーガイドを確認してください。以前に構成した接続を選択し、[編集]をクリックします:
次に、以下に概説するように接続パラメータを変更する必要があります。
- 一般 タブで、サーバーアドレスをObfsproxyサーバーのIPアドレスに置き換えます。 ObfsproxyサーバーがOpenVPNサーバーと同じマシンで実行されている場合、これは変更されません。
- ポートを上記の構成で設定されたObfsproxyポート(この例では12345)に更新します。
- プロトコルはTCPに設定する必要があります。
- トランスポートをクリックします タブ。
- 難読化方法を、Obfsproxyサーバー構成で選択された難読化方法に設定します。
- 難読化を使用している場合はプロキシを使用できないため、[プロキシを使用して接続]オプションがオフになっていることを確認してください。
- obfs4またはscramblesuitを使用している場合は、[キー]フィールドにパスワードキーを貼り付けます。
Save
をクリックします ボタン。
VPN接続の接続と使用
これで接続する準備が整いました。 macOSメニューバーまたはWindowsシステムトレイの粘度アイコンをクリックして粘度メニューを開き、インポートした接続を選択すると、粘度が接続されます。
VPNが稼働していることを確認するには、[粘度]メニューから[詳細]ウィンドウを開きます。これにより、接続の詳細、トラフィック、OpenVPNログを表示できます。


これで、独自のOpenVPNサーバーをセットアップできました。おめでとうございます。これで、独自のOpenVPNサーバーを操作するメリットを自由に享受できます。