この例では、Remnawave パネルのサービスユーザーを使用してサーバールーティングを設定する方法を説明します。
サーバールーティング
一部のユーザーは、Remnawave がサーバー設定の clients 配列を自動的にクリアするという問題に直面したことがあるかもしれません。これはエラーやバグではありません。パネルのいくつかの機能が正常に動作するために、パネルはこの配列に余分なものが含まれていないことを確認する必要があるため、自動的に配列をクリアします。
2 台のサーバーがあると想定します。それらを RU-001 と DE-001 と呼びましょう。
ユーザーはサーバー RU-001 に接続し、トラフィックの ルーティング を行います。例として、.ru サイトは 直接 送信し、それ以外のすべてはサーバー DE-001 に送信します。
このタスクを解決するには、ルーティングを行う サービスユーザー を作成する必要があります。
DE-001 用プロファイルの作成
Config Profiles セクションに移動し、新しいプロファイルを作成します。Bridge Profile という名前を付けましょう。
{
"log": {
"loglevel": "warning"
},
"dns": {},
"inbounds": [
{
"tag": "BRIDGE_DE_IN",
"port": 9999,
"listen": "0.0.0.0",
"protocol": "shadowsocks",
"settings": {
"clients": [],
"network": "tcp,udp"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [
{
"tag": "DIRECT",
"protocol": "freedom"
},
{
"tag": "BLOCK",
"protocol": "blackhole"
}
],
"routing": {
"rules": []
}
}
更新された設定を保存します。
Internal Squad セクションに移動します(新しいスクワッドを作成するには右上隅のプラスアイコンをクリックします)。このスクワッドでは、Bridge Profile から新しく作成した inbound BRIDGE_DE_IN のみを有効にします。
また、ノードのカード(今回は DE-001 ノード)でもこの inbound とプロファイルを有効にしてください。
サービスユーザーの作成
Users セクションに移動し、bridge_user_001 という名前のユーザーを作成します。このユーザーにはトラフィック制限を設定せず、サブスクリプションの有効期限を 2099 年頃に設定してください。(パネルがトラフィック制限に達したり、サブスクリプションが期限切れになったりすることでユーザーを無効にされたくないためです。)
このユーザーにスクワッドを有効にすることを忘れずに — 今回は上で作成したスクワッドを有効にします。
ユーザーが正常に作成されたら、そのカードを開き、メニュー(More Actions ボタン)から Detailed Info セクションをクリックします。
このセクションで一番下にスクロールし、inbound の種類に応じて情報をコピーします。
| プロトコル | パネルでの表示名 |
|---|---|
| Shadowsocks | SS Password |
| VLESS | VLESS UUID |
| Trojan | Trojan Password |
最終的に、接続用のパスワードが手に入るはずです。
パブリックプロファイルの設定
このようなプロファイルはすでにお持ちで、ユーザーはそれを使って接続しているはずです。inbounds セクションには触る必要はありません。必要なのは outbounds セクションと routing.rules です。
{
"log": { "loglevel": "none" },
"inbounds": [
{
"tag": "PUBLIC_RU_INBOUND",
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": { "clients": [], "decryption": "none" },
"sniffing": { "enabled": true, "destOverride": ["http", "tls", "quic"] },
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"target": "USE OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE OWN KEY!",
"serverNames": ["REPLACE WITH OWN VALUES!"]
}
}
}
],
"outbounds": [
{ "protocol": "freedom", "tag": "DIRECT" },
{ "protocol": "blackhole", "tag": "BLOCK" }
],
"routing": {
"rules": [
{ "ip": ["geoip:private"], "outboundTag": "BLOCK" },
{
"domain": ["geosite:private"],
"outboundTag": "BLOCK"
},
{ "protocol": ["bittorrent"], "outboundTag": "BLOCK" }
]
}
}
最初のタスクは:ユーザーが VLESS プロトコルでサーバー RU-001 に接続し、その後ルーティングでトラフィックをリダイレクトすることです。
Outbound
まず outbound を構築する必要があります。
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "ADDRESS OF DE-001",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
| 値 | 入力する内容 |
|---|---|
| address | サーバーに向いている IP またはドメイン名、例えば DE-001 サーバーの IP アドレス |
| port | inbound のポート、今回は BRIDGE_DE_IN の inbound のポート |
| password | 接続用のユーザーパスワード(プロトコルによって値が異なる場合があります。上記参照) |
Shadowsocks の場合 — chacha20-ietf-poly1305 以外の方法は使用しないでください。Remnawave はこの方法のみをサポートしています。
ルーティング
上で指定した outbound にすべてのトラフィックを送るルールの例。
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}
RU サイトを直接送信し(RU-001 ノードから直接出力)、それ以外のすべてを DE-001 に送るルールの例。
{
"ip": [
"geoip:ru"
],
"outboundTag": "DIRECT"
},
{
"domain": [
"geosite:category-ru"
],
"outboundTag": "DIRECT"
}
完全な設定を組み立てると、このようになります。
{
"log": { "loglevel": "none" },
"inbounds": [
{
"tag": "PUBLIC_RU_INBOUND",
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": { "clients": [], "decryption": "none" },
"sniffing": { "enabled": true, "destOverride": ["http", "tls", "quic"] },
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"target": "USE OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE OWN KEY!",
"serverNames": ["REPLACE WITH OWN VALUES!"]
}
}
}
],
"outbounds": [
{ "protocol": "freedom", "tag": "DIRECT" },
{ "protocol": "blackhole", "tag": "BLOCK" },
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "ADDRESS OF DE-001",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
],
"routing": {
"rules": [
{ "ip": ["geoip:private"], "outboundTag": "BLOCK" },
{ "domain": ["geosite:private"], "outboundTag": "BLOCK" },
{ "protocol": ["bittorrent"], "outboundTag": "BLOCK" },
{ "ip": ["geoip:ru"], "outboundTag": "DIRECT" },
{ "domain": ["geosite:category-ru"], "outboundTag": "DIRECT" },
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}
]
}
}
outbound SS_OUTBOUND_TO_DE を outbounds 配列に追加し、ルールを routing オブジェクト内の rules 配列に追加しました。
Xray のルールは優先順位の原則で動作します。私たちのルールはおおよそ次のように解釈できます:
- IP が
geoip:privateに属する場合 — BLOCK(blackhole である BLOCK outbound に送られ、ブロックされます)。 - ドメインが
geosite:privateカテゴリに属する場合 — 同じ処理。 bittorrentトラフィックについても同様。- IP が
geoip:ruに属する場合 —DIRECTOutbound に送られ、トラフィックはRU-001サーバーから出力されます。 - ドメインが
geosite:category-ruカテゴリに属する場合 — 同様にDIRECTに送られます。 - トラフィックが inbound
PUBLIC_RU_INBOUNDから来た場合 — outboundSS_OUTBOUND_TO_DEに送られ(そしてDE-001サーバーに転送されます)。
まとめ
この例では、次のようなスキームができました:
- ユーザーは
VLESSプロトコルを使用してサーバーRU-001に接続します - トラフィックはルールに従います:
- ロシアのサイト(または IP)— 直接出力(DIRECT)
- その他のすべてのトラフィック —
shadowsocksプロトコルで別のサーバーDE-001に送信
トランジットプロトコルとして VLESS も使用できます。主な違いは outbound のみです。