Hysteria2 サーバー構築とクライアント接続の概要
VPN比較記事で「最強候補」として挙げた Hysteria2 について、実際に構築・接続するための概要をまとめた。詳細な手順ではなく、全体像と関連リソースの紹介がメイン。
Hysteria2 とは
QUIC(HTTP/3)ベースのプロキシプロトコル。UDP を使用し、独自の輻輳制御(Brutal)で高速な通信を実現する。
特徴:
- QUIC プロトコルに偽装(CDN やストリーミングサービスで広く使われている)
- UDP ベースで TCP より高速
- 独自の輻輳制御で回線を最大限活用
- 設定がシンプル(YAML形式)
注意: Hysteria 1.x と 2 はプロトコルに互換性がない。クライアントは必ず Hysteria 2 対応のものを使う。
サーバー構築の概要
必要なもの
- VPS(Linux)
- ポート開放: TCP/80、TCP/443、UDP/443
- SSL 証明書(Let’s Encrypt または自己署名)
インストール方法
公式スクリプト(推奨):
bash <(curl -fsSL https://get.hy2.sh/)
systemd サービスとして登録される。設定ファイルは手動で作成が必要。
Docker:
公式イメージ tobyxdd/hysteria を使用。docker-compose で管理すると楽。
設定ファイル
/etc/hysteria/config.yaml に配置:
listen: :443
tls:
cert: /path/to/cert.pem
key: /path/to/key.pem
auth:
type: password
password: your-secret-password
masquerade:
type: proxy
proxy:
url: https://www.bing.com
rewriteHost: true
masquerade は偽装先。接続時に Hysteria サーバーだとバレないよう、通常の HTTPS サイトのように振る舞う。
管理パネル
設定ファイルを直接編集するのが基本だが、GUI で管理したい場合は以下が使える:
クライアントアプリ
既存のクライアントアプリを使うのが手軽。
Windows / macOS / Linux
| アプリ | 特徴 |
|---|---|
| v2rayN | Windows/macOS/Linux 対応、多機能 |
| Hiddify | マルチプラットフォーム、無料、オープンソース |
| NekoRay | Qt ベースの GUI クライアント |
v2rayN は sing-box コアを選択すれば Hysteria2 に対応する。Xray コアでは動かない。
Android
| アプリ | 特徴 |
|---|---|
| Hiddify | 推奨。無料、広告なし |
| NekoBox | GitHub から APK を取得(Play ストア版は非公式) |
iOS
| アプリ | 特徴 |
|---|---|
| Hiddify | 無料 |
| Shadowrocket | 有料(約 $3)、多機能 |
| Streisand | 無料 |
接続方法
クライアントアプリに以下のいずれかで設定を追加:
- URI スキーム:
hy2://password@server:443?sni=example.com形式の URL をコピペ - サブスクリプション: サーバー側で URL を発行し、クライアントでインポート
- 手動設定: サーバーアドレス、ポート、パスワードを入力
カスタムアプリ開発
自前でアプリを作りたい場合のライブラリ・SDK。
Go 言語
apernet/hysteria - 公式実装。サーバーもクライアントもこれ。
go get github.com/apernet/hysteria/core/v2
sing-box(マルチプロトコル)
sing-box - Hysteria2 を含む多数のプロトコルに対応した Go ライブラリ。
- VLESS、Trojan、Shadowsocks なども同時にサポート
- Go 1.21 以上が必要
- JSON / TOML 形式の設定
Hiddify や NekoBox の内部で使われている。複数プロトコルを扱うアプリを作るならこちら。
Python
hysteria2 - Python バインディング。Go 1.21 以上が必要。
スクリプトから Hysteria2 を制御したい場合に便利。
モバイルアプリ開発
iOS / Android 向けに VPN アプリを作る場合:
- sing-box を FFI(Foreign Function Interface)経由で呼び出す
- VPNclient Engine - Swift/Kotlin + Go/C++ のエンジン(Xray、Hysteria 対応)
TUN インターフェースの扱いが OS ごとに異なるので、既存のクライアントアプリをフォークするのが現実的。