我有 4 个调制解调器连接到交换机的情况。所有四个调制解调器的 IP 地址均为 192.168.0.1(默认)。我希望通过单个交换机连接所有这四个调制解调器,以便能够从我的机器访问每个调制解调器,例如调制解调器 1(10.0.0.1)、调制解调器 2(10.0.0.2)、调制解调器 3(10.0.0.3)和调制解调器 4(10.0.0.4)。对我来说,这更像是在交换机上使用 VLAN 进行 NAT。请告诉我如何创建需要交换机的网络来实现这一点?
This is what i want:
Modem1(192.168.0.1) => SwitchPort1 => 10.0.0.1
Modem2(192.168.0.1) => SwitchPort2 => 10.0.0.2
Modem3(192.168.0.1) => SwitchPort3 => 10.0.0.3
Modem4(192.168.0.1) => SwitchPort4 => 10.0.0.4
让我告诉你背景我有 100 个调制解调器需要升级固件,我已经有可以在 5 分钟内自动升级调制解调器固件的软件(插件上传),但升级 100 个调制解调器 = 5 分钟*100 = 1 整整一个工作日。我正在寻找一种方法让它在 1-2 小时内完成。所以更改 100 个调制解调器的 IP 对我来说是行不通的 :)
答案1
简而言之,您不能。您需要更改三个调制解调器上的 IP,或者您需要在交换机和调制解调器之间建立中间网络,以使您设置的 NAT 正常工作。您不能在同一网络上拥有多个具有相同 IP 的设备。
答案2
如果交换机支持 VLAN,并且您愿意让路由器代理流量,那么我认为这是可以做到的。
每个调制解调器都需要位于一个 VLAN 上,而路由器需要位于所有这四个 VLAN 上。为了便于说明,我们假设
调制解调器 1 在 VLAN 11 上,调制解调器 2 在 VLAN 12 上,依此类推;
路由器是一个 Linux 机顶盒,位于支持 VLAN 标记的端口上,所有调制解调器 VLAN 都存在于该端口上,此外在某个第三方网络上还有另一个面向客户端的 VLAN,它不是 10.0.0.0/16,我们将其称为 VLAN 99;
所有客户端都需要静态路由,通过分配给 eth0.99 的地址将流量发送到 10.0.0.0/16 地址;
客户端可以通过位于 10.0.0.0 不同子网的地址访问调制解调器,假设调制解调器 1 的访问地址为 10.0.1.2/24,调制解调器 2 的访问地址为 10.0.2.2/24,依此类推;
每个面向调制解调器的 VLAN 接口在相应的 10.0.0.0 子网上都有一个地址。假设在端口 eth0.11(即 VLAN 11)上与调制解调器 1 通信,地址为 10.0.1.1/24,eth0.12 上的地址为 10.0.2.1/24,eth0.13 和 eth0.14 上的地址也是如此;
此外,每个面向调制解调器的 VLAN 都需要在 192.168.0.0/24 网络上使用别名,如果每种情况下的别名都不同,生活就会更简单;我们假设它是 eth0.11 上的 192.168.0.11/24,eth0.12 上的 192.168.0.12/24,依此类推;
对于每个接口,你需要几行
iptables -t nat -A OUTPUT -o eth0.11 -d 10.0.1.2 -j DNAT --to-destination 192.168.1.1
iptables -t nat -A POSTROUTING -o eth0.11 -j SNAT --to-source 192.168.0.11
但我强调上述内容只是理论上的;我不明白为什么它不起作用,但我没有做过类似的事情。 我赞同约翰的建议:重新配置你的调制解调器会更好。