Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
nzcool opened this issue Nov 5, 2021 · 8 comments

Comments

@nzcool
Copy link

nzcool commented Nov 5, 2021

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

@zephyrchien
Copy link
Collaborator

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

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

@nzcool
Copy link
Author

nzcool commented Nov 5, 2021

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

也可以從配置文件啓動,配置文件是支持多條轉發規則的 #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
Copy link
Collaborator

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

@nzcool
Copy link
Author

nzcool commented Nov 5, 2021

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
Copy link
Collaborator

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

首先規則數量取決於監聽的端口數量, 比如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
Copy link
Collaborator

其實我個人覺得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
Copy link
Contributor

其實我個人覺得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
Copy link
Author

nzcool commented Nov 5, 2021

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

首先規則數量取決於監聽的端口數量, 比如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都是默认第一个

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants