我有一台 Fritz!Box 3490,以及我们 ISP 提供的 5 个可用外部 IPv4 地址。Fritz!Box 将取代我们现有的 DrayTek 2925。
五个 IP 地址中有一个是 MX;因此我们使用该 IP 在端口 25 上发送和接收电子邮件,并允许移动设备通过端口 443 远程连接以发送电子邮件。
使用 Fritz!Box,我希望能够将发送到 MX IP 地址的流量转发到 Exchange 服务器的本地 IP 地址。Exchange 服务器的当前 IP 地址在 10.1.1.0/24 范围内。ISP 表示,为了让 Fritz!Box 转发发送到外部 IP 地址的流量,Fritz!Box 需要知道公共 IPv4 子网(它确实知道),但 Exchange 服务器还需要将外部 IP 地址添加到 NIC。
这是正确的吗?这是服务器首先应该配置的方式吗?
至于其他服务器,ISP 表示他们也需要一个添加到其 NIC 的外部 IP 地址。
有没有一种更简单的方法,类似于 DrayTek 的做法,我可以告诉它将发送到 EXTERNAL_IP:EXTERNAL_PORT 的流量转发到 INTERNAL_IP:INTERNAL_PORT?
答案1
您的 ISP 描述的方法对于路由器来说更简单 - 本质上只不过是路由在您的子网和世界其他地方之间建立连接。直接为服务器分配公共地址是许多数据中心配置服务器的方式;这是 IPv6 的标准行为,也曾是 IPv4 的标准。
DrayTek 使用的方法使用了附加功能 - DNAT(端口转发) - 路由器上可能存在也可能不存在。即使存在,硬件加速程度也可能不如纯路由(因为需要状态查找并实际重写每个数据包的标头)。
如果您对公共地址的使用很少,则 NAT 可能看起来更简单,并且它本质上允许在多个服务器之间共享相同的 IP 地址(如果您的服务器多于地址)——将一些端口转发到一个服务器,将更多端口转发到另一个服务器,等等。
但是,如果您有足够的地址和/或大量的服务,直接路由最终可能会变得简单得多。它让服务器直接和完全控制自己的地址;因此在您配置它之后一次每台服务器,您无需返回路由器添加更多规则。大多数家用路由器仅允许配置 TCP/UDP 转发规则,但不允许配置 GRE、ESP、6in4 或其他更高级的协议;默认情况下,直接路由适用于所有协议。
Fritz!Box 3490 是否支持 DNAT 配置?仅部分支持。根据此页面它位于“允许访问 → 端口共享”下,但它不允许您选择外部的IP 地址。无论您在此处添加什么端口规则,都可能适用于路由到您的所有地址 - 或者分配给路由器本身的所有地址(我猜仅限于一个)。基于 Linux 的核心操作系统当然支持匹配源地址,但它不会在配置 UI 中显示一些原因;也许是因为它无法进行硬件加速,或者可能只是一个刻意的决定。但事实是,如果它在配置 UI 中不可用,那么 Fritz!Box DNAT 将不适合你的多地址用例。
然而,正如我之前提到的,简单路由(您的 ISP 想要的方法)不需要 Fritz!Box 的任何额外功能——它实际上只有一项工作。