Network programming (mininet)在主机上配置多个接口
我有一个场景,其中有一台具有两个接口的服务器机器。每个接口都有自己的IP地址。服务器计算机承载一个HTTP服务器,应该可以通过这两个接口访问该服务器 复制这种情况的完整python脚本:Network programming (mininet)在主机上配置多个接口,network-programming,mininet,network-interface,Network Programming,Mininet,Network Interface,我有一个场景,其中有一台具有两个接口的服务器机器。每个接口都有自己的IP地址。服务器计算机承载一个HTTP服务器,应该可以通过这两个接口访问该服务器 复制这种情况的完整python脚本: 从mininet.cli导入cli 从mininet.log导入setLogLevel 从mininet.net导入mininet 从mininet.topo导入topo 类TestTopology(拓扑): 定义初始化(自): 拓扑初始化(自) host1_id=self.addHost('h1')) hos
从mininet.cli导入cli
从mininet.log导入setLogLevel
从mininet.net导入mininet
从mininet.topo导入topo
类TestTopology(拓扑):
定义初始化(自):
拓扑初始化(自)
host1_id=self.addHost('h1'))
host2_id=self.addHost('h2')
server\u id=self.addHost('服务器')
self.addLink(服务器id、主机id)
self.addLink(服务器id、主机2 id)
def配置_网络(网络):
服务器=网络。获取('server')
setIP('10.0.0.10',intf='server-eth0')
setMAC('00:00:00:00:10',intf='server-eth0')
setIP('10.0.0.11',intf='server-eth1')
setMAC('00:00:00:00:11',intf='server-eth1')
cmd(“python-msimplehttpserver 8080&”)
#在mininet虚拟机中运行“sudo python*path”到“this_script*”。
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
setLogLevel('info')
net=Mininet(topo=TestTopology())
配置网络(net)
net.pingAll()
CLI(网络)
默认情况下,SimpleHTTPServer正在0.0.0.0上侦听
“pingAll”测试表明h1可以访问服务器(反之亦然),但h2则不是这样。
当然,我也不能从h2中wget
如何配置服务器接口,以便服务器通过这两个接口响应ping
和wget
命令?
服务器上的/etc/network/interfaces
包含一些配置,但它涉及一个不存在的eth0
接口,因此我假设它没有被使用
注意:我已经了解到,对于linux,一个特定的IP!=网络接口。服务器从h1响应对10.0.0.10和10.0.0.11的ping,但我希望它在两个物理接口上都响应。我看到您正确配置了两个接口的IP地址,但在其他主机上没有连接第二个接口的以太网链路,这就是该接口上没有连接的原因。为了正确配置,您必须:
我希望它能帮助解决这个问题…您可以尝试从mininet.util导入自定义 在我的例子中,重新排序代码是有效的 这是我的密码:
#!/usr/bin/python
from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf, Link
from mininet.util import makeNumeric, custom
from subprocess import call
def myNetwork():
link = custom(TCLink, bw=10)
net = Mininet( topo=None,
build=False,
ipBase='10.0.0.0/8')
info( '*** Adding controller\n' )
info( '*** Add switches\n')
s5 = net.addSwitch('s5', cls=OVSKernelSwitch, failMode='standalone')
s2 = net.addSwitch('s2', cls=OVSKernelSwitch, failMode='standalone')
s7 = net.addSwitch('s7', cls=OVSKernelSwitch, failMode='standalone')
s4 = net.addSwitch('s4', cls=OVSKernelSwitch, failMode='standalone')
r8 = net.addHost('r8', cls=Node, ip='0.0.0.0')
r8.cmd('sysctl -w net.ipv4.ip_forward=1')
r9 = net.addHost('r9', cls=Node, ip='0.0.0.0')
r9.cmd('sysctl -w net.ipv4.ip_forward=1')
r10 = net.addHost('r10', cls=Node, ip='0.0.0.0')
r10.cmd('sysctl -w net.ipv4.ip_forward=1')
info( '*** Add hosts\n')
h1 = net.addHost('h1', cls=Host, ip='192.168.2.1', defaultRoute=None)
h2 = net.addHost('h2', cls=Host, ip='192.168.3.1', defaultRoute=None)
info( '*** Add links\n')
net.addLink(s2, r9)
net.addLink(s4, r10)
net.addLink(r9, s5)
net.addLink(s7, r8)
net.addLink(r8, h2)
net.addLink(s5, h2)
net.addLink(s2, h1)
net.addLink(s4, h1)
net.addLink(r10, s7)
info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
controller.start()
info( '*** Starting switches\n')
net.get('s5').start([])
net.get('s2').start([])
net.get('s7').start([])
net.get('s4').start([])
info( '*** Post configure switches and hosts\n')
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
myNetwork()
我被这个答案弄糊涂了,为什么主机和交换机比原来的问题多得多?