ディープパケットインスペクション(DPI)を使うと、ネットワークはアドレスやポートの先を見て、トラフィックの形状を判断できます。従来の VPN プロトコルには見分けやすいハンドシェイクがあるため、検閲側は 1 バイトも復号せずにブロックできます。自分の VPS 上のプライベートなエンドポイントなら共有のブロックリストを避けられ、通常の HTTPS を模倣するプロトコルならフィンガープリンティングを避けられます。このガイドでは、そうしたプロトコルの一つ、Xray 上の VLESS と REALITY をセットアップします。
DPI が VPN を見抜く仕組み
検閲側は 3 つのシグナルに頼っています。固定のハンドシェイクパターン(OpenVPN と WireGuard の両方にあります)、商用 VPN プロバイダーの既知の IP 範囲、そして検閲側があなたのサーバーに接続して応答を確認するアクティブプロービングです。長く使えるプロトコルは、この 3 つすべてを切り抜けなければなりません。
- ハンドシェイクパターン:本物の TLS セッションでトラフィックを包むことで回避します。
- 共有の IP 範囲:自分だけが使うサーバーを使うことで回避します。
- アクティブプロービング:鍵を持たない相手に対しては、サーバーが本物のウェブサイトのように振る舞うようにして回避します。
REALITY を使う理由
REALITY は、実在する人気ウェブサイトの TLS ハンドシェイクを借用します。鍵を知らないプローブはそのサイトへそのまま転送され、通常の証明書とページが見えるだけです。鍵を知っているクライアントにはプロキシが提供されます。目を付けられる自前の証明書も、登録するドメインもありません。
ステップ 1:サーバーを準備する
ユーザーへの経路が良好なロケーションで、新しい Ubuntu VPS を使い、まず基本的な堅牢化を行います。その後、公式スクリプトで Xray をインストールします。
sudo apt update && sudo apt -y upgrade
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
xray x25519
最後のコマンドで秘密鍵と公開鍵が出力されます。秘密鍵はサーバーに保管し、公開鍵をクライアントに渡します。ユーザー ID は xray uuid で生成します。
ステップ 2:Xray の設定を書く
TLS 1.3 と HTTP/2 に対応し、サーバーから到達できるカモフラージュ用のサイトを選びます。そのホスト名を dest と serverNames の両方に入れます。
{
"inbounds": [{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [{ "id": "YOUR-UUID", "flow": "xtls-rprx-vision" }],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "example.org:443",
"serverNames": ["example.org"],
"privateKey": "YOUR-PRIVATE-KEY",
"shortIds": ["a1b2c3d4"]
}
}
}],
"outbounds": [{ "protocol": "freedom" }]
}
/usr/local/etc/xray/config.json として保存し、sudo systemctl restart xray を実行して、systemctl status xray を確認します。
ステップ 3:ファイアウォールを開けて接続する
sudo ufw allow OpenSSH
sudo ufw allow 443/tcp
sudo ufw enable
クライアントでは、サーバーのアドレス、ポート 443、UUID、公開鍵、short ID、同じサーバー名をインポートします。v2rayN、Nekoray、Streisand、Hiddify などのクライアントが REALITY に対応しています。フローはサーバーに合わせて xtls-rprx-vision に設定します。
動作を維持する
- 少人数のユーザーグループごとに 1 台の VPS を使います。混み合ったエンドポイントはプロファイリングされやすくなります。
- カモフラージュ用のサイトにサーバーから到達できなくなると、接続は失敗します。安定したサイトを選び、必要なら変更してください。
- Xray を最新に保ちます。プロトコルの修正は頻繁にリリースされます。
- 同じ IP のポート 443 では、他のものを動かさないでください。
あらゆる検閲下でのアクセスを保証するツールはありません。実際に使うネットワークからテストし、フォールバック用に別のプロトコルも用意しておきましょう。もっと簡単な日常使いの VPN にはVPS で WireGuard を動かす方法を、2 つの定番の選び方にはWireGuard か OpenVPN かをご覧ください。