mininet——模拟路由器与真实路由器之间通信

      早期都是在mininet下做内网的仿真,而且最多也就加了一个路由器,在这单个路由器中只要设置好内外的IP地址即可,都可以不需要设置其他的路由信息,其中的host就可以通信。

       后来接上了真实的硬件之后,其中包括了一个LAN中的路由器,为了能够让在mininet中不同网段的host与外网通信,于是也依葫芦画瓢就设置了虚拟路由的内外IP地址,但是无论如何都ping不通物理路由的那个网段。寻找了一段时间之后找到了答案:物理路由器中没有mininet中虚拟路由器网段的路由信息,只需要在物理路由器中添加路由信息,以及在虚拟路由器中添加默认网关即可。于是mininet中的host既能够连通物理路由中的设备,也能够访问互联网。具体如下:

h1——>(eth1)r1(eth0)——>s1——>s2——router1——Internet

其中router1为物理路由,h1,r1,s1,s2为mininet内部的虚拟节点。

h1-eth0的IP:192.168.10.110,默认网关:192.168.10.1

r1-eth0的IP:192.168.1.100,r1-eth1的IP:192.168.10.1

router的内部IP:192.168.1.1,router的外部IP为192.168.110.57

h1 能够ping通r1,但是h1无法ping通router1,因为router1没有h1的路由信息,无法将h1的数据包回传给h1。

需要在router1中添加如下的路由信息:route -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.100.

这条信息的意思是告诉router1,当有网段为192.168.10.0的数据包时,就扔给r1的192.168.1.100,r1通过r1-eth1传给主机。

完成这条信息之后,能够互通LAN中的所有设备,但是mininet中的host和r1还是无法连接互联网,原因是r1中没有设置默认网关,设置好网关之后即可连接互联网:route add default  gw 192.168.1.1 。

 

       有个问题:之前在mininet中做仿真的时候,路由器r1并没有设置默认路由,只是单纯的设置了一下内外IP就能够正常的互通两个网段了,但是现在为什么需要在r1中设置默认网关才能够访问互联网?

        我想答案应该是,在之前的模拟中,r1后面接的都是交换机,然后就是host,host中设置了默认网关,能够保证host到达r1;而在连接硬件时,虚拟路由器r1也可以当做是一个host,因为连接到了另外一个物理路由器,所以也需要设置默认网关来告诉r1的吓一跳在哪。

      还要一个问题:为什么在没有给r1添加默认网关的时候,LAN之间的设备可以通信呢?

      我理解的答案是:在LAN中同一网段下通信是直接通过MAC地址来确定的,所以不需要默认网关;而与互联网通信的话需要用到IP信息,在公网上通信是不改变IP地址,只改变源和目的MAC地址。

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值