【发布时间】:2017-05-13 16:45:32
【问题描述】:
我有一个场景,其中有一台服务器机器有两个接口。这些接口中的每一个都有自己的 IP 地址。服务器机器托管一个 HTTP 服务器,它应该可以通过两个接口访问。
重现这种情况的完整python脚本:
from mininet.cli import CLI
from mininet.log import setLogLevel
from mininet.net import Mininet
from mininet.topo import Topo
class TestTopology(Topo):
def __init__(self):
Topo.__init__(self)
host1_id = self.addHost('h1')
host2_id = self.addHost('h2')
server_id = self.addHost('server')
self.addLink(server_id, host1_id)
self.addLink(server_id, host2_id)
def configure_network(network):
server = network.get('server')
server.setIP('10.0.0.10', intf='server-eth0')
server.setMAC('00:00:00:00:00:10', intf='server-eth0')
server.setIP('10.0.0.11', intf='server-eth1')
server.setMAC('00:00:00:00:00:11', intf='server-eth1')
server.cmd("python -m SimpleHTTPServer 8080 &")
# Run 'sudo python *path_to_this_script*' in mininet VM.
if __name__ == '__main__':
setLogLevel('info')
net = Mininet(topo=TestTopology())
configure_network(net)
net.pingAll()
CLI(net)
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,但我希望它在两个物理接口上都响应。
【问题讨论】:
标签: network-programming mininet network-interface