Gately v0.6.2 リリース
2026年10月31日
v0.6.2 をダウンロード · GitHub Release
プロトコル振り分け
新しい「プロトコル振り分け」モジュールが、サイドバーの「ポート転送」の隣に加わりました。クライアントが最初に送るデータからプロトコルを識別し、同じポートに届いた接続を別々のバックエンドへ送ります。通信は一切復号しません。
- TLS は SNI のドメインと ALPN、HTTP は Host、Minecraft はハンドシェイク内のサーバーアドレスで振り分けます。
- SSH、RDP、SOCKS4/5、OpenVPN(TCP、tls-auth と tls-crypt-v2 を含む)、XMPP、MQTT、PostgreSQL、RTSP、SIP、Redis、AMQP、SMB、Git、IRC、ADB、BitTorrent はそれぞれ 1 つのルートを持ちます。HTTP、RTSP、SIP はリクエスト行末尾のバージョンで区別します。
- 「待機タイムアウト」ルートは、接続後に何も送らないクライアント(VNC や MySQL のようにサーバー側から先に送るプロトコル)を受け持ちます。識別タイムアウトは 0.1 秒単位で指定できます。
- 識別できない接続や、どのルートにも一致しない接続はデフォルトターゲットへ送ります。ルートごとにバックエンドへ PROXY プロトコルを送ることができ、一覧には各ルートのヒット数が表示されます。
各プロトコルの識別方法、ドメインと ALPN の照合順序、haproxy の SNI 振り分けや sslh を置き換える例は プロトコル振り分け を参照してください。
リストのグループと並べ替え(#48)
ダイナミック DNS、ポート転送、プロトコル振り分け、Web サービスのサイト、STUN、SSL 証明書、WAF、侵入防御、frp、Cloudflare トンネル、File Browser、ストレージマウント、Wake-on-LAN、スケジュールタスク、通知、Web ターミナルの接続、API トークンなどのリストで、同じ操作が使えるようになりました。
- 検索、ドラッグでの並べ替え(スマートフォンでは上下の矢印)、複数選択してまとめてグループへ移動。
- グループ単位での移動、その場での名前変更とグループの統合。折りたたみ状態は記憶されます。
- ダイナミック DNS タスク内の DNS レコードもグループ分けと並べ替えができます。
グループや順序を変えても、動作中のインスタンスは再起動しません。詳しくは リストのグループと並べ替え を参照してください。
ダイナミック DNS で STUN アドレスを参照(#47)
レコード値と Webhook で {STUN_ルール名_PORT}、{STUN_ルール名_IP}、{STUN_ルール名_ADDR} を使えます。STUN ルールの公開アドレスが変わると、それを参照するタスクはすぐに同期します。Webhook でだけ参照している場合も、Webhook が 1 回呼び出されます。ルールが無効、またはまだ穿孔に成功していない場合、そのレコードはその回スキップされ、理由がステータスに表示されます。詳しくは ダイナミック DNS · レコード値の変数 を参照してください。
STUN の多段 NAT 対応
UPnP / NAT-PMP を有効にしたルールは、まずゲートウェイ自身の外部アドレスを問い合わせます。STUN で観測した公開アドレスと異なる場合(たとえばルーターの外側にさらにキャリアの NAT がある場合)、公開ポートは外側の NAT に属するため、トンネルポートのマッピングだけを残し、ルーターへの追加マッピングは行いません。これで再確認のたびに公開ポートが変わることはなくなります。STUN のドキュメントには、フルコーン型と制限型のキャリア NAT、多段 NAT での UPnP、ローカルポートの固定、ホストファイアウォールでの許可についての説明を追加しました。
セキュリティ強化
- デフォルトパスワードのままの間は、アカウント、2 段階認証、パスキー、追加アカウント、API トークン、システム設定、Web ターミナルのセキュリティ設定は閲覧のみとなり、バックアップからの復元やこれらの設定の履歴バージョンへのロールバックも拒否されます。先にデフォルトパスワードを変更してください。
- 読み取り専用アカウントと読み取り専用 API トークンで設定やログを読むと、サイトの共有ユーザーのパスワード、共有リンクのトークン、リクエストヘッダーの値、シークレット、URL 内のパスワード・クエリの値・パス中のトークンがマスクされます。
files/とsftp/以下のディレクトリの閲覧には書き込み権限が必要です。- パスワードだけのログインでは失敗回数がリセットされなくなり、2 段階認証コードを総当たりできなくなりました。
- 信頼済みプロキシ経由のアクセスで X-Forwarded-For と X-Real-IP が食い違う場合の扱いを厳しくし、偽装した内部アドレスで「LAN 内のみアクセス可」を回避できなくなりました。
- API トークンの作成時、書き込み権限でサーバー上のコマンドを実行できるモジュール(ダイナミック DNS、スケジュールタスク、侵入防御、STUN、SSL、Web ターミナル、Docker、frp、File Browser、Cloudflare トンネル)に「コマンド実行可」と表示され、付与するときに警告が出ます。
- UPnP ゲートウェイが返すデバイス記述と制御 URL は、応答したデバイスのものである必要があります。
その他の改善
- ダイナミック DNS タスクのカード上で、各レコードを直接削除できます(プロバイダー側の DNS レコードは残ります)。
- スマートフォンの Web ターミナルのキーバーは 1 行の横スクロールになり、標準でスクリーンキーボードと一緒に表示・非表示が切り替わります。
- Android Chrome と iOS でホーム画面に追加したときにアイコンが透明になる問題を修正し、管理画面と公式サイトが Web App Manifest を提供します。
- 公式サイトのトップページと README をリニューアルしました。
修正
- 一度ヒットした侵入防御ルールを編集して保存すると「unknown field lastSeen」で失敗していました。
- 複数の証明書が同じドメインをカバーする場合、有効期限が最も遅いものを使うようにしました。証明書一覧の並び順やグループで実際に使われる証明書が変わることはなくなります。
- プロトコル振り分けで ClientHello の一部しか届かないままタイムアウトした場合に、ゼロで埋めたデータをバックエンドへ転送しなくなりました。ルールを停止または変更すると、識別中の接続はすぐに閉じられます。
- JSON 形式の Webhook 本文に含まれる STUN 変数が置き換えられていませんでした。
アップグレードの注意
- アップグレード後の初回起動時に、ポート転送の SNI 振り分けルールは自動でプロトコル振り分けへ移り、key、名前、有効状態、グループ、ルートはそのまま引き継がれます。ポート転送がオフだった場合はプロトコル振り分けもオフになります。ポート転送の権限を持つ API トークンには、プロトコル振り分けにも同じ権限が付きます。
- API で振り分けルールを管理しているスクリプトは
/api/protoroute/rulesを使ってください。ルートのフィールドはsniRoutesからroutesに変わりました。/api/portforward/rulesはmodeフィールドを受け付けなくなりました。これらのルールの監視メトリクスはgately_protoroute_*になります。 - Docker は新しいイメージを pull してコンテナーを作り直してください。OpenWrt は新しい
.apk/.ipkを上書きインストールしてください。fnOS はアプリセンターで新しい.fpkを手動でインストールしてください。その他の環境は「システム設定」からオンラインでアップグレードできます。