You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mininet/Python环境下双主机经双路由器无法互通问题求助

Mininet/Python环境下双主机经双路由器无法互通问题求助

我仔细看了你的Mininet脚本和ping测试结果,发现问题主要出在路由表配置错误和一些冗余的IP设置上,下面帮你一步步梳理问题并给出修正方案:

问题1:冗余且错误的IP重复配置

你在通过net.addLink()给路由器接口设置IP后,又用ifconfig重复配置,其中r2的接口IP还写错了:

  • r2的r2-eth0接口在addLink时已经设置为192.168.2.2/24,但后面的ifconfig r2-eth0 192.168.2.1 netmask 255.255.255.0把IP改成了和r1的r1-eth1(192.168.2.1/24)冲突的地址,这直接导致r1和r2的直连通路出现异常。

问题2:完全错误的路由表配置

路由器的路由表只需要添加非直连网段的路由即可,直连网段会因为接口配置了IP自动生成路由,你的脚本里添加的路由完全不符合逻辑:

  • r1直连192.168.0.0/24(r1-eth0)和192.168.2.0/24(r1-eth1),不需要再添加这两个网段的路由,只需要添加到192.168.1.0/24的路由,下一跳指向r2的192.168.2.2
  • r2直连192.168.2.0/24(r2-eth0)和192.168.1.0/24(r2-eth1),同样不需要添加这两个网段的路由,只需要添加到192.168.0.0/24的路由,下一跳指向r1的192.168.2.1
  • 主机的默认路由已经在addHost()时通过defaultRoute参数设置了,后面重复设置属于冗余操作,虽然不影响,但可以去掉

修正后的脚本关键部分

把你脚本中# Setting up IP addresses and routing tables下面的代码替换成以下内容:

# 移除冗余的ifconfig配置,因为addLink时已经设置了接口IP
# 设置正确的路由表
r1.cmd('ip route add 192.168.1.0/24 via 192.168.2.2')
r2.cmd('ip route add 192.168.0.0/24 via 192.168.2.1')
# 主机默认路由已在addHost时设置,这里可以省略

验证方法

运行修正后的脚本,进入Mininet CLI后执行pingall,应该能看到所有节点都能互通。另外你也可以在CLI中通过r1 ip route和r2 ip route命令查看路由表,确认直连路由和手动添加的路由是否正确。

备注:内容来源于stack exchange,提问作者Toshitt Ahuja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:40:29