zhboner / realm

A network relay tool
MIT License
1.54k stars 285 forks source link

如果我一个服务器的两个端口分别转发到不同服务器的不同端口怎么设置 #41

Closed nzcool closed 2 years ago

nzcool commented 2 years ago

如果我一个服务器的两个端口分别转发到不同服务器的不同端口怎么设置 是用两条命令么?

zephyrchien commented 2 years ago

命令行只支持一條轉發規則,你可以開兩個進程;

也可以從配置文件啓動,配置文件是支持多條轉發規則的 #10

nzcool commented 2 years ago

命令行只支持一條轉發規則,你可以開兩個進程;

也可以從配置文件啓動,配置文件是支持多條轉發規則的 #10

配置文件我也是研究半天,不是很明白 { "listening_addresses": ["0.0.0.0"], "listening_ports": ["443","1443"], "remote_addresses": ["1.1.1.1","2.2.2.2"], "remote_ports": ["443","1443"] }

listening_ports 443 是固定对应1.1.1.1的443 还是说随机的也就是说会转发到1.1.1.1的1433上!因为中文介绍里的那段说明,不是很懂

zephyrchien commented 2 years ago

Realm的轉發規則都是固定的,沒有負載均衡。每條轉發規則的監聽地址 監聽端口 目的地址 目的端口 跟配置文件中的填寫順序一一對應。上面那個配置文件表示0.0.0.0:443 -> 1.1.1.1:4430.0.0.0:1443 -> 2.2.2.2:1443

nzcool commented 2 years ago

Realm的轉發規則都是固定的,沒有負載均衡。每條轉發規則的監聽地址 監聽端口 目的地址 目的端口 跟配置文件中的填寫順序一一對應。上面那個配置文件表示0.0.0.0:443 -> 1.1.1.1:4430.0.0.0:1443 -> 2.2.2.2:1443

多谢。 其实我是被中文说明搞糊涂了 配置文件需要用-c参数指定,如 -c config.json。配置文件支持端口段,当转发端口的数量大于本地地址时,都会默认使用第一个传入的地址。这样实现了一个地址上的多端口转发多ip或单ip上的多端口。示例如下:

zephyrchien commented 2 years ago

我覺得還是從源碼的角度來解讀一下比較好。

首先規則數量取決於監聽的端口數量, 比如listening_ports: ["80", "443", "10000-20000"] 監聽了10003個端口,就會創建10003條轉發規則。

每條規則的監聽地址 監聽端口 目的地址 目的端口 取決於第n個端口對應的其他三個參數(也是取第n個)。對於其他三個參數,如果不存在第n項目,則使用第一項

舉個栗子,在前面的示例裏面多加10001端口:

{
  "listening_addresses": ["0.0.0.0"],
  "listening_ports": ["443","1443", "10000-20000"],
  "remote_addresses": ["1.1.1.1","2.2.2.2"],
  "remote_ports": ["443","1443"]
}

除去前面說的兩條規則以外,新增的10001條規則的 監聽地址都是0.0.0.0, 目的地址都是1.1.1.1:443,只不過監聽端口不同

zephyrchien commented 2 years ago

其實我個人覺得Realm的配置文件格式不夠清晰,我更傾向於這種:


[
    { "local": "0.0.0.0:443", "remote": "1.1.1.1:443"   },
    { "local": "0.0.0.0:1443", "remote": "2.2.2.2:1443" }
]
Soniccube commented 2 years ago

其實我個人覺得Realm的配置文件格式不夠清晰,我更傾向於這種:

[
    { "local": "0.0.0.0:443", "remote": "1.1.1.1:443"   },
    { "local": "0.0.0.0:1443", "remote": "2.2.2.2:1443" }
]

Couldn't agree more.

nzcool commented 2 years ago

我覺得還是從源碼的角度來解讀一下比較好。

首先規則數量取決於監聽的端口數量, 比如listening_ports: ["80", "443", "10000-20000"] 監聽了10003個端口,就會創建10003條轉發規則。

每條規則的監聽地址 監聽端口 目的地址 目的端口 取決於第n個端口對應的其他三個參數(也是取第n個)。對於其他三個參數,如果不存在第n項目,則使用第一項

舉個栗子,在前面的示例裏面多加10001端口:

{
  "listening_addresses": ["0.0.0.0"],
  "listening_ports": ["443","1443", "10000-20000"],
  "remote_addresses": ["1.1.1.1","2.2.2.2"],
  "remote_ports": ["443","1443"]
}

除去前面說的兩條規則以外,新增的10001條規則的 監聽地址都是0.0.0.0, 目的地址都是1.1.1.1:443,只不過監聽端口不同

懂了就是说没有对应的端口和IP都是默认第一个