我有一个场景,其中一台计算机需要成为同一物理网络上两个子网的成员 - 192.168.2.0/24 和 192.168.3.0/24。我已经使用ifconfig eth0:1 192.168.3.123/24 up
等实现了这一点。当我尝试telnet
与另一台主机启动会话时出现问题,该主机也是这两个子网的成员。该主机可以通过两个地址上的 telnet 访问,但是当我尝试连接它时,telnet 挂起。当我删除两个接口中的任何一个时,此问题就会消失。我认为还值得一提的是,在相同的多个设置IP
下没有问题。由于无法配置或修改我尝试连接的主机,是否有可能解决这个问题,比如,通过将 192.168.3.0 流量限制到 eth0:1,或者也许在该伪接口上使用不同的地址?Windows
IP
MAC
答案1
我觉得这似乎是源 IP 地址的问题。我想有多种方法可以解决这个问题。最简单的方法可能是禁用反向路径过滤。
另一种选择可能是重写数据包,以确保离开的地址始终与具有几个 snat 规则的子网匹配 - 可能是这样的
iptables -t nat -A POSTROUTING -s 192.168.2.x -o 192.168.3.123 --sport 25
-j SNAT --to 192.168.3.x
答案2
如果你的别名地址被使用仅有的要通过 telnet 进入该服务器,有一个非常简单的解决方案:告诉telnet
绑定到您想要使用的特定地址,如下所示:
telnet -b 192.168.3.123 192.168.3.201
telnet -b 192.168.2.123 192.168.2.201
假设您的 PC 地址为 192.168.3.123/192.168.2.123,远程服务器 IP 地址为 192.168.3.201/192.168.2.201。请注意,源地址和目标地址必须属于同一子网,因为您没有指定网关的存在。
如果你对别名地址的使用更为普遍(例如,如果你接听telnet
电话,在这种情况下你不能-b
像上面那样指定选项),那么你需要了解策略路由。但我想我们到时候就会解决这个问题。