15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > Mininet互通(mininet内主机跨宿主机通信、mininet与真机通信、mininet内主机访问外

Mininet互通(mininet内主机跨宿主机通信、mininet与真机通信、mininet内主机访问外

时间:2023-06-29 12:48:02 | 来源:网站运营

时间:2023-06-29 12:48:02 来源:网站运营

Mininet互通(mininet内主机跨宿主机通信、mininet与真机通信、mininet内主机访问外网)怎么实现?:

图中的ens33、ens37均是网卡,此处的互通指的是ubuntu_1、ubuntu_2、mininet_1内的主机、mininet_2内的主机全部都可以互相通信。

借助的原理就是mininet内的出口OVS(Open vSwitch)占用宿主机ubuntu主机网卡,从而达到mininet内虚拟主机ubuntu宿主机在网络中同等地位的目的,占用网卡后的网络拓扑可以这么理解。







1 实验环境

2 实验步骤

实验采用真机方式实现,每台宿主机Ubuntu都有两个网口。两个网卡具体是有线无线的都行,我这里是一个RJ45真实网口,一个USB免驱无线网卡。两台主机的真实网卡插路由器LAN口,无线网卡连接路由器的WiFi。这样四个网卡相当于是在同一局域网环境下。

如果想用虚拟机做实验的话,就将虚拟机桥接主机,再将USB无线网卡给虚拟机。主机和无线网卡都连接手机热点。
ifconfig一下,一般能看到俩网卡。比如一个是ens33,一个是ens38

方案是将每台主机的ens33网卡分配给Mininet OVS。两台主机操作一致。都是

2.1 释放那个网卡

sudo ifconfig ens33 0.0.0.0

2.2 将下面的python程序保存为topo.py

注意,os.popen('ovs-vsctl add-port s1 ens33')这个里面的ens33需要改成你需要让mininet占用的网卡名称。

#!/usr/bin/env pythonimport osfrom mininet.net import Mininetfrom mininet.node import Controller, RemoteControllerfrom mininet.cli import CLIfrom mininet.link import Intffrom mininet.log import setLogLevel, infodef ToRealnet(): net = Mininet( topo=None, build=False) info( '*** Adding controller/n' ) net.addController(name='m1') info( '*** Add switches/n') s1 = net.addSwitch('s1') info( '*** Add hosts/n') h1 = net.addHost('h1', ip='0.0.0.0') # ubuntu_2这里是h3 h2 = net.addHost('h2', ip='0.0.0.0') # ubuntu_2这里是h4 info( '*** Add links/n') net.addLink(h1, s1) net.addLink(h2, s1) info( '*** Starting network/n') net.start() os.popen('ovs-vsctl add-port s1 ens33') h1.cmdPrint('dhclient '+h1.defaultIntf().name) h2.cmdPrint('dhclient '+h2.defaultIntf().name) CLI(net) net.stop()if __name__ == '__main__': setLogLevel( 'info' ) ToRealnet()

2.3 执行程序

sudo python topo.py然后就可以看到h1和h2都通过dhcp方式拥有了自己的IP

2.4 检验

最后在另一台主机上也执行相同的操作。两台主机上的h1、h2、h3、h4,宿主机ubuntu_1、ubuntu_2,就都可以互通ping了

3 结束语

结束mininet后,记得清理虚拟主机

sudo mn -c清理之后,发现占用的网卡还是不能正常工作,可以断开在重新连接,不行重启绝对行。







3.1 如果宿主机无互联需求

这种情况只需要一个网卡给mininet用,也可以做到两台机器里面的mininet主机互通。但是当mininet占用了唯一的网卡之后,宿主机将没法连接外界了。

3.2 如果只想要mininet里面的主机可以上外网

这种情况可以直接采用NAT解决

sudo mn --nat不占用主机网卡,建立好后可以直接ping外网,但是外界主机访问不了mininet内的h1、h2( 不能说绝对访问不了,至少麻烦点)。没法直接 ping www.baidu.com是因为主机没配置DNS。







参考

enhancement-ryu/mininetconnecttorealinternet.py at master · cotyb/enhancement-ryu · GitHub

将Mininet与真实网络相连接 - cotyb - 博客园 (cnblogs.com)

Mininet主机与真实网络互通方案实现_BoyLJS的博客-CSDN博客

关键词:主机,通信,访问,宿主

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭