我在设备上只有一个接口,我需要同时从该接口发送流量。符合以下要求
src地址,目标地址,源端口,目标端口和协议必须相同
因此,在我的linux VM中,我使用名称空间,并按以下方式进行配置
ip netns eng51 ifconfig
eth1.51 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3
inet addr:51.51.1.10 Bcast:51.51.1.255 Mask:255.255.255.0
ip netns exec eng52 ifconfig
eth1.52 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3
inet addr:51.51.2.10 Bcast:51.51.2.255 Mask:255.255.255.0
ip netns exec eng522 ifconfig
eth1.522 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3
inet addr:51.51.2.10 Bcast:51.51.2.255 Mask:255.255.255.0
ip netns exec eng511 ifconfig
eth1.511 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3
inet addr:51.51.1.10 Bcast:51.51.1.255 Mask:255.255.255.0
所以我有一个脚本试图在目标名称空间上发送一些消息。我在目标名称空间和源名称空间上运行python SimpleHTTPServer,我使用python的套接字并将任何地址绑定到端口63999
sock.bind(('0.0.0.0',63999))
这样,我可以将源端口始终控制为63999。现在,我可以在源名称空间(例如
ip netns eng51 abc_client.py 51.51.2.10
ip netns eng511 abc_client.py 51.51.2.10
但是我面临的问题是,即使我在2个单独的命名空间下启动tcp会话,端口63999也不会被认为是唯一的。当tcp会话在eng51名称空间下正在进行中并且我启动eng522时,eng51会话停止,并说对等方重置了连接。
因此,我可以通过简单地使用多个接口,将VM的每个接口映射到名称空间来使其工作。然后,我可以在2个同时的会话中同时使用源端口63999
ip netns eng51 ifconfig eth1.51链接encap:以太网HWaddr 52:54:00:bd:68:c3 inet地址:51.51.1.10 Bcast:51.51.1.255掩码:255.255.255.0
ip netns exec eng52 ifconfig eth2.52 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3 inet addr:51.51.2.10 Bcast:51.51.2.255 Mask:255.255.255.0
ip netns exec eng522 ifconfig eth3.522 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3 inet addr:51.51.2.10 Bcast:51.51.2.255 Mask:255.255.255.0
ip netns exec eng511 ifconfig eth4.511链接encap:以太网HWaddr 52:54:00:bd:68:c3 inet地址:51.51.1.10 Bcast:51.51.1.255掩码:255.255.255.0
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。