跳至主要内容

本範例將介紹如何在 Remnawave 面板中使用服務使用者設定伺服器路由。

伺服器路由

部分使用者可能遇到 Remnawave 自動清空伺服器設定中 clients 陣列的問題。這不是錯誤也不是 bug,面板會自動清空這些陣列,因為面板某些功能的正常運作需要確保該陣列中不含多餘的內容。

假設我們有兩台伺服器,分別稱為 RU-001DE-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 設定檔中新建立的入站 BRIDGE_DE_IN

同時,請確保在節點卡片(本例中為 DE-001 節點)中也啟用此入站和設定檔。

建立服務使用者

進入 Users 部分,建立名為 bridge_user_001 的使用者。確保該使用者沒有流量限制,並將訂閱到期日期設定在 2099 年左右。(我們不希望面板因達到流量限制或訂閱到期而停用該使用者。

不要忘記為該使用者啟用小隊——本例中啟用上面建立的小隊。

使用者成功建立後,開啟其卡片,在選單(More Actions 按鈕)中點擊 Detailed Info 部分。

在該部分向下捲動到最底部,根據入站類型複製相關資訊。

協議面板中的名稱
ShadowsocksSS Password
VLESSVLESS UUID
TrojanTrojan 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入站端口,本例中為 BRIDGE_DE_IN 入站的端口
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 中的規則按優先順序運作。我們的規則大致可以解釋如下:

  1. 如果 IP 位址屬於 geoip:privateBLOCK(傳送到 BLOCK outbound,它是 blackhole,即被封鎖)。
  2. 如果網域屬於 geosite:private 類別 — 相同處理。
  3. bittorrent 流量同理。
  4. 如果 IP 位址屬於 geoip:ru — 傳送到 DIRECT Outbound,流量從 RU-001 伺服器出口。
  5. 如果網域屬於 geosite:category-ru 類別 — 同樣傳送到 DIRECT
  6. 如果流量來自入站 PUBLIC_RU_INBOUND — 傳送到 outbound SS_OUTBOUND_TO_DE(然後轉發到 DE-001 伺服器)。

結論

在本範例中,我們得到了如下方案:

  • 使用者使用 VLESS 協議連線到 RU-001 伺服器
  • 流量遵循以下規則:
    • 俄羅斯網站(或 IP)— 直接出口(DIRECT)
    • 所有其他流量 — 透過 shadowsocks 協議傳送到另一台伺服器 DE-001

也可以使用 VLESS 作為中轉協議,主要區別僅在於 outbound 的設定。