サーバーサイドルーティング
このガイドは、サーバーサイドルーティングのデモンストレーションとしてのみ作成されています。これらの例をコピーすれば本番環境で完全に機能する設定が得られるとは考えないでください。Xray-coreのすべての機能を網羅しておらず、あらゆる環境で完全に動作することを保証するものでもありません。
設定の構文と動作の詳細については、Xray公式ドキュメントを参照してください。
Remnawave がノードの設定から clients 配列を自動的にクリアすることに気づいたユーザーもいるかもしれません。これはバグではなく、意図された動作です。Remnawave がそれをクリアするのは、特定の機能が正しく動作するために必要な設定のみが保持されるようにするためです。
このガイドでは、2つのノード RU と DE を使用したサーバーサイドのトラフィックルーティングを設定します。ユーザーは RU ノードに接続します。そこから、トラフィックは次のようにルーティングされます:
.ruサイトへのトラフィックはRUノードを通じて直接プロキシされます。- その他すべてのトラフィックは
DEノードを通じてルーティングされます。
これを実現するために、トラフィックルーティングを円滑にする_サービスユーザー_を作成します。
結果として、トラフィックの「フロー」は次のようになります:
- ユーザーが
google.comを開く。 - リクエストはまず
RUノードに到達する。 RUノードがルーティングルールを適用する。google.comは.ruドメインではないため、トラフィックはDEノードにルーティングされる。DEノードがgoogle.comへの接続を完了する。
このタイプのサーバーサイドルーティング設定は、しばしば「ブリッジ」と呼ばれます。
DE用の設定プロファイルを作成する
「設定プロファイル」セクションに移動して、新しい設定プロファイルを作成してください。例: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 Limit を 0、Expiry Date を 2099年 に設定してください。
次に、このユーザーに適切なスクワッドを割り当てます。今回の場合、Bridge Squad です。
サービスユーザーが作成されたら、そのパスワードを取得する必要があります。ユーザーカードを開き、More Actions ボタンをクリックし、Detailed Info をクリックします。そこに Connection Information セクションが表示されます。
インバウンドのプロトコル(今回の場合はShadowsocks)に応じて、適切な値をコピーしてください:
| プロトコル | 接続情報の値 |
|---|---|
| Trojan | Trojanパスワード |
| VLESS | VLESS UUID |
| Shadowsocks | SSパスワード |
公開プロファイルを設定する
おそらく、ユーザーが接続する設定プロファイルはすでにお持ちでしょう。お持ちでない場合は、このガイドを参照してください。
この手順では、"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 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 配列を変更する必要があります。
{
"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"
}
]
}
}
| フィールド | 値 |
|---|---|
address | DE ノードサーバーのIPアドレスまたはドメイン名。 |
port | インバウンドのポート。今回の場合は BRIDGE_DE_IN のポート。 |
password | サービスユーザーのパスワード。使用するプロトコルによって異なります。前の手順を参照してください。 |
method | 暗号化方式。RemnaWaveのShadowsocksでは常に chacha20-ietf-poly1305 を使用してください。 |
ルーティングとルール
次に、必要に応じてルーティングルールを変更します。
以下は、RU ノードをロシアのIPとウェブサイトの出口ノードにしつつ、残りのトラフィックを DE ノードに送るルールの例です。
{
"ip": ["geoip:ru"],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-ru"],
"outboundTag": "DIRECT"
}
以下は、_すべての_トラフィックを SS_OUTBOUND_TO_DE アウトバウンドにプロキシするルールの例です。
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}
完全な公開設定プロファイルは次のようになります:
{
"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のルーティングルールは、上から下の順に処理されます。
この例のルールの動作を説明します:
-
プライベートIP (
geoip:private) →BLOCK
このルールに一致するトラフィックはBLOCKアウトバウンドに送られます。これはblackholeプロトコル(完全にブロック)です。 -
プライベートドメイン (
geosite:private) →BLOCK
上記と同様ですが、ドメイン名に対するものです。 -
Bittorrentトラフィック (
bittorrent) →BLOCK
すべてのBitTorrentトラフィックがブロックされます。 -
ロシアのIP (
geoip:ru) →DIRECT
このルールに一致するトラフィックはDIRECTアウトバウンドに送られます。これはfreedomプロトコル(RUノードが出口ノードとして機能)です。 -
ロシアのドメイン (
geosite:category-ru) →DIRECT
ロシアのドメインへのトラフィックも RU ノードから直接出力されます。 -
ルールに一致しない(残りのトラフィック) →
SS_OUTBOUND_TO_DE
PUBLIC_RU_INBOUNDに到達する残りのトラフィックは、先ほど作成したShadowsocksアウトバウンドを介してDEノードにルーティングされます。
トランジットプロトコルとして Shadowsocks を使用する必要はありません。代わりに VLESS を使用することもできます。その場合は、設定を適切に更新してください。