需要使用 2 个 IP 并提供服务的服务器(在 NAT 下)

需要使用 2 个 IP 并提供服务的服务器(在 NAT 下)

我有一台内部服务器,它使用某项服务。此服务在一个端口上侦听,在另一个端口上通话。该服务的问题是它不能在同一个 IP 地址上侦听和通话,因此我为该 NIC 配置了 2 个 IP 地址,这样我就“解决”了侦听和通话的问题。

但我有一个问题...

我需要该服务器进行 NAT,具有公共 IP 地址,并且该服务器需要从外部可用(并且只有一个 IP)...

问题是,我该如何解决这里的情况?

如果我对一个 IP 地址(监听端口)进行 NAT,那么他将能够从外部获取请求,但无法发送流量(因为另一个 IP 没有 NAT)。如果我对两个 IP 都进行 NAT,那么当流量进入监听端口时,它不一定会到达监听 IP,而是到达正在通话的 IP。

我希望我已经表达清楚了,并且有一个我所忽略的合理解决方案。

答案1

我有一个内部服务器,它使用某项服务。

通常我们说客户 用途服务。服务器 提供一项服务。我猜你的意思是后者。

该服务在一个端口上监听,并在不同的端口上通话。

服务通常不需要两个端口,大多数服务使用单个端口管理双向通信。FTP 是唯一常见的例外。

该服务的问题在于它无法在同一个 IP 地址上进行监听和发话,

这是极不寻常的(甚至很奇怪)。

所以我为该 NIC 配置了 2 个 IP 地址,这样我就“解决”了听力和口语的问题。

但我有一个问题...

我需要该服务器进行 NAT,具有公共 IP 地址,并且该服务器需要从外部可用(并且只有一个 IP)...

这显然不是一个问题。

问题是,我该如何解决这里的情况?

如果我对一个 IP 地址(监听端口)进行 NAT,那么他将能够从外部获取请求,但无法发送流量(因为另一个 IP 没有 NAT)。

通常 NAT 适用于全部LAN 中的 IP 地址。所以我不明白这个问题。执行 NAT 的路由器会记住其哪些端口号与哪些内部 IP 地址 + 端口号相关联。

如果我在两个 IP 上都执行 NAT,那么当流量进入监听端口时,它不一定会到达监听 IP,而是到达说话的 IP。

不,您只需对传入连接使用端口转发(与 NAT 不同)。NAT 负责区分现有连接并将每个连接与内部 IP 地址关联。

我希望我已经表达清楚了,并且有一个我所忽略的合理解决方案。

也许我误解了,如果你能让这个问题更清楚一点,那可能会很有价值。

答案2

完全同意@RedGrittyBrick,您正在运行的服务/程序/等需要这样做确实很奇怪。

大多数 NAT 路由器都允许您分配多个端口。通常每个端口可以分配给不同的 IP。基本上存在端口到 IP 的映射,因此 NAT 足够“智能”,可以将流量引导到不同的 IP。

因此,将一个端口分配给服务器的第一个 IP 和端口,将另一个端口分配给服务器的第二个 IP 和端口。路由器中的 NAT 功能将确保通过“公共”IP 第一个端口传入的流量转到服务器的第一个 IP,通过“公共”IP 第二个端口传入的流量转到服务器的第二个 IP。

但是,您在服务器上执行的单个物理网络适配器上的“别名” IP 地址通常并不完全等同于拥有两个具有各自 IP 地址的独立 NIC,因此您可能会遇到问题。

相关内容