使用TCP协议在不同名称空间下重用同一源端口

时间:2019-03-19 09:59:37

标签: tcp namespaces

我有一个具有2个接口的Linux VM,eth0具有mgmt IP,eth1具有如下配置

ip netns exec 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

所以我有一个使用tcp协议的脚本,我需要同时发送流量

from eng51[51.51.1.10 vlan-id 51] to eng52[ 51.51.2.10 vlan-id 52]
and i use same script to send traffic from eng52[ 51.51.1.10 vlan-id 511] to eng522 [51.51.2.10 vlan-id 522]

我在名称空间下运行脚本:

ip netns exec eng51 python client.py 51.51.2.10
ip netns exec eng511 python client.py 51.51.2.10

client.py内部,我将源端口始终绑定为63999,并且我在名称空间eng52eng522的端口8000上运行了一个HTTPserver

 sock.bind(('0.0.0.0',63999))

我将源端口绑定到63999的原因是我需要源地址,目标,地址,源端口,目标端口和协议相同 在两个流量会话中。

我面临的问题是,即使我在不​​同的命名空间下运行此脚本,也不会将源端口视为唯一端口 我只能运行一个导致问题的脚本实例,因为我希望此源端口重叠。

0 个答案:

没有答案