メインコンテンツまでスキップ

サーバーサイドルーティング

デモンストレーション専用 | 本番環境には対応していません

このガイドは、サーバーサイドルーティングのデモンストレーションとしてのみ作成されています。これらの例をコピーすれば本番環境で完全に機能する設定が得られるとは考えないでください。Xray-coreのすべての機能を網羅しておらず、あらゆる環境で完全に動作することを保証するものでもありません。

設定の構文と動作の詳細については、Xray公式ドキュメントを参照してください。

Remnawave がノードの設定から clients 配列を自動的にクリアすることに気づいたユーザーもいるかもしれません。これはバグではなく、意図された動作です。Remnawave がそれをクリアするのは、特定の機能が正しく動作するために必要な設定のみが保持されるようにするためです。


このガイドでは、2つのノード RUDE を使用したサーバーサイドのトラフィックルーティングを設定します。ユーザーは RU ノードに接続します。そこから、トラフィックは次のようにルーティングされます:

  • .ru サイトへのトラフィックは RU ノードを通じて直接プロキシされます。
  • その他すべてのトラフィックは DE ノードを通じてルーティングされます。

これを実現するために、トラフィックルーティングを円滑にする_サービスユーザー_を作成します。

結果として、トラフィックの「フロー」は次のようになります:

  1. ユーザーが google.com を開く。
  2. リクエストはまず RU ノードに到達する。
  3. RU ノードがルーティングルールを適用する。google.com.ru ドメインではないため、トラフィックは DE ノードにルーティングされる。
  4. DE ノードが google.com への接続を完了する。

このタイプのサーバーサイドルーティング設定は、しばしば「ブリッジ」と呼ばれます。

DE用の設定プロファイルを作成する

「設定プロファイル」セクションに移動して、新しい設定プロファイルを作成してください。例:DE Bridge Profile

DE 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": []
}
}
プロファイルの割り当てと内部スクワッドの作成を忘れずに

新しく作成した設定プロファイルを DE ノードに割り当ててください。BRIDGE_DE_IN インバウンドを選択してください。


新しい内部スクワッドを作成します。名前を Bridge Squad としましょう。先ほど作成したインバウンド BRIDGE_DE_IN を有効にしてください。

サービスユーザーを作成する

ブリッジが機能するために、ユーザーを作成する必要があります。名前を bridge_user としましょう。

トラフィック制限の削除と有効期限の延長を忘れずに

これはサービスユーザーなので、サブスクリプションが期限切れになったり、トラフィック使用量によって制限されたりすることは望ましくありません。Data Limit0Expiry Date2099年 に設定してください。

次に、このユーザーに適切なスクワッドを割り当てます。今回の場合、Bridge Squad です。

サービスユーザーが作成されたら、そのパスワードを取得する必要があります。ユーザーカードを開き、More Actions ボタンをクリックし、Detailed Info をクリックします。そこに Connection Information セクションが表示されます。

インバウンドのプロトコル(今回の場合はShadowsocks)に応じて、適切な値をコピーしてください:

プロトコル接続情報の値
TrojanTrojanパスワード
VLESSVLESS UUID
ShadowsocksSSパスワード

公開プロファイルを設定する

おそらく、ユーザーが接続する設定プロファイルはすでにお持ちでしょう。お持ちでない場合は、このガイドを参照してください。

この手順では、"inbounds" には注目せず、代わりにそのプロファイルの "outbounds""routing""rules" 配列を変更します。

Public Profile Example
{
"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 YOUR OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE YOUR OWN KEY!",
"serverNames": ["USE YOUR 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"
}
]
}
}

Outbounds

まず outbounds 配列を変更する必要があります。

outbounds
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "DE NODE ADDRESS",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
フィールド
addressDE ノードサーバーのIPアドレスまたはドメイン名。
portインバウンドのポート。今回の場合は BRIDGE_DE_IN のポート。
passwordサービスユーザーのパスワード。使用するプロトコルによって異なります。前の手順を参照してください。
method暗号化方式。RemnaWaveのShadowsocksでは常に chacha20-ietf-poly1305 を使用してください。

ルーティングとルール

次に、必要に応じてルーティングルールを変更します。

以下は、RU ノードをロシアのIPとウェブサイトの出口ノードにしつつ、残りのトラフィックを DE ノードに送るルールの例です。

rules
{
"ip": ["geoip:ru"],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-ru"],
"outboundTag": "DIRECT"
}

以下は、_すべての_トラフィックを SS_OUTBOUND_TO_DE アウトバウンドにプロキシするルールの例です。

rules
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}

完全な公開設定プロファイルは次のようになります:

Complete Public Config Profile Example
{
"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 YOUR OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE YOUR OWN KEY!",
"serverNames": ["USE YOUR OWN VALUES!"]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "DIRECT"
},
{
"protocol": "blackhole",
"tag": "BLOCK"
},
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "DE NODE ADDRESS",
"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"
}
]
}
}
ヒント

Xrayのルーティングルールは、上から下の順に処理されます。
この例のルールの動作を説明します:

  1. プライベートIP (geoip:private) → BLOCK
    このルールに一致するトラフィックは BLOCK アウトバウンドに送られます。これは blackhole プロトコル(完全にブロック)です。

  2. プライベートドメイン (geosite:private) → BLOCK
    上記と同様ですが、ドメイン名に対するものです。

  3. Bittorrentトラフィック (bittorrent) → BLOCK
    すべてのBitTorrentトラフィックがブロックされます。

  4. ロシアのIP (geoip:ru) → DIRECT
    このルールに一致するトラフィックは DIRECT アウトバウンドに送られます。これは freedom プロトコル(RU ノードが出口ノードとして機能)です。

  5. ロシアのドメイン (geosite:category-ru) → DIRECT
    ロシアのドメインへのトラフィックも RU ノードから直接出力されます。

  6. ルールに一致しない(残りのトラフィック) → SS_OUTBOUND_TO_DE
    PUBLIC_RU_INBOUND に到達する残りのトラフィックは、先ほど作成した Shadowsocks アウトバウンドを介して DE ノードにルーティングされます。


トランジットプロトコルとして Shadowsocks を使用する必要はありません。代わりに VLESS を使用することもできます。その場合は、設定を適切に更新してください。