本範例將介紹如何在 Remnawave 面板中使用服務使用者設定伺服器路由。
伺服器路由
部分使用者可能遇到 Remnawave 自動清空伺服器設定中 clients 陣列的問題。這不是錯誤也不是 bug,面板會自動清空這些陣列,因為面板某些功能的正常運作需要確保該陣列中不含多餘的內容。
假設我們有兩台伺服器,分別稱為 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 設定檔中新建立的入站 BRIDGE_DE_IN。
同時,請確保在節點卡片(本例中為 DE-001 節點)中也啟用此入站和設定檔。
建立服務使用者
進入 Users 部分,建立名為 bridge_user_001 的使用者。確保該使用者沒有流量限制,並將訂閱到期日期設定在 2099 年左右。(我們不希望面板因達到流量限制或訂閱到期而停用該使用者。)
不要忘記為該使用者啟用小隊——本例中啟用上面建立的小隊。
使用者成功建立後,開啟其卡片,在選單(More Actions 按鈕)中點擊 Detailed Info 部分。
在該部分向下捲動到最底部,根據入站類型複製相關資訊。
| 協議 | 面板中的名稱 |
|---|---|
| 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 | 入站端口,本例中為 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 中的規則按優先順序運作。我們的規則大致可以解釋如下:
- 如果 IP 位址屬於
geoip:private— BLOCK(傳送到 BLOCK outbound,它是 blackhole,即被封鎖)。 - 如果網域屬於
geosite:private類別 — 相同處理。 bittorrent流量同理。- 如果 IP 位址屬於
geoip:ru— 傳送到DIRECTOutbound,流量從RU-001伺服器出口。 - 如果網域屬於
geosite:category-ru類別 — 同樣傳送到DIRECT。 - 如果流量來自入站
PUBLIC_RU_INBOUND— 傳送到 outboundSS_OUTBOUND_TO_DE(然後轉發到DE-001伺服器)。
結論
在本範例中,我們得到了如下方案:
- 使用者使用
VLESS協議連線到RU-001伺服器 - 流量遵循以下規則:
- 俄羅斯網站(或 IP)— 直接出口(DIRECT)
- 所有其他流量 — 透過
shadowsocks協議傳送到另一台伺服器DE-001
也可以使用 VLESS 作為中轉協議,主要區別僅在於 outbound 的設定。