某些 LAN IP 的端口转发不起作用

某些 LAN IP 的端口转发不起作用

我希望有人能解释一下这个问题。我对网络的了解最多只是基础的。

我在两个网络上有一个 CentOS 服务器:

  • NIC1 位于公共 IP 上,网关设置在交换机 1 上。(ADSL 互联网)
  • NIC2 设置为 10.10.10.2,交换机 2 上未设置网关。(有线互联网)
  • 交换机 2 的网关/路由器是 10.10.10.1。(华硕路由器)

在 LAN 中,其他 LAN 电脑可以通过开放端口访问 10.10.10.2。当设置从网关/路由器 10.10.10.1 --> 10.10.10.2 的端口转发规则时,此方法不起作用。网关/路由器 10.10.10.1 --> 到 10.10.10.3 的端口转发有效(网关设置为 10.10.10.1 的 Windows 计算机)。

是否可以通过华硕路由器 10.10.10.1 从公共互联网访问 10.10.10.2?

答案1

IP 策略路由。

我找到了两篇相同的文章,我用它来更新我的 CentOS 服务器,使第二个 NIC 能够接收和发送数据包。还成功更新了另一台具有双 NIC/网关的类似服务器。

http://jensd.be/468/linux/two-network-cards-rp_filter<-- 我选择在“最佳解决方案”部分下设置 IP 策略,并且没有更改 rp_filter 值。本文还提供了漂亮的图表。

http://www.microhowto.info/howto/ensure_symmetric_routing_on_a_server_with_multiple_default_gateways.html <--上面的附加示例使我更加清楚。

如果您希望永久更改,请按照上面第一个链接中的说明进行操作。

我的例子:

  • ip route add 99.88.77.66/24 dev eth0 table 1 (例如公共 IP #1)
  • ip route add default via 99.88.77.1 table 1 (例如公共 IP #1 的网关)
  • ip route add 10.10.10.0/24 dev eth1 table 2(不同网络上的第二个网卡)
  • ip route add default via 10.10.10.1 table 2(华硕路由器网关)
  • ip 规则从 99.88.77.66/32 表 1 添加优先级 100
  • IP 规则从 10.10.10.4/32 表 2 添加优先级 110
  • ip 路由刷新缓存

您的 /24 可能会根据您的 IP 子网掩码而改变。

答案2

首先,我们需要了解为什么您的设置不起作用。为此,我们需要考虑发生了什么。

  • 通过“有线”互联网连接进行连接尝试。
  • NAT路由器修改目标地址并设置映射表条目。
  • 数据包到达您的服务器并生成响应。
  • 您的服务器在其路由表中查找响应的目的地,并将数据包发送到默认网关(例如,“ADSL”互联网连接)。
  • 数据包最有可能因为源地址是假的而被丢弃。即使数据包确实返回到客户端,其源地址也不会与客户端期望的源地址匹配,因此客户端会将其视为假的而丢弃。

现在我们了解了问题所在,我们可以采取一些措施。有几种选择。

选项 1 是在服务器上使用“策略路由”来根据源 IP 路由流量。如果服务器支持该选项,则这是最佳选项(最新版本的 Linux 支持该选项)。Stile 的回答介绍如何在 Linux 服务器上设置策略路由以根据源地址进行路由。

选项 2 是将服务器的默认网关指向可以执行策略路由的盒子。然后该盒子可以根据其源 IP 正确路由流量。如果服务器操作系统不支持策略路由,这可能是一个有用的解决方案。

选项 3 是让 NAT 盒伪装成端口转发的流量。我认为这是最后的选择,因为它隐藏了流量的真实源地址。

相关内容