使用相同端口的应用程序/协议在相同的tim上使用相同的IP地址

2024-09-28 17:00:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一台设备上有一个接口,我需要同时从这个接口发送流量。有以下要求

src地址、目标地址、源端口、目标端口和协议需要相同

因此,在我的linux虚拟机中,我使用名称空间,并将其配置如下

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

但我面临的问题是,即使我在两个单独的名称空间下启动tcp会话,端口63999也不是唯一的。当tcp会话在eng51名称空间下进行时,我启动eng522,eng51会话停止,说连接由对等方重置


Tags: 端口ip名称目标link空间bdinet
1条回答
网友
1楼 · 发布于 2024-09-28 17:00:21

因此,我通过简单地使用多个接口,将VM的每个接口映射到一个名称空间来实现这一点。然后我可以在两个同时进行的会话中同时使用源端口63999

ip网络eng51 ifconfig eth1.51链路封装:以太网HWaddr 52:54:00:bd:68:c3 inet地址:51.51.1.10 Bcast:51.51.1.255掩码:255.255.255.0

ip网络执行工程师52 ifconfig eth2.52链路封装:以太网HWaddr 52:54:00:bd:68:c3 inet地址:51.51.2.10 Bcast:51.51.2.255掩码:255.255.255.0

ip网络执行工程师eng522 ifconfig eth3.522链路封装:以太网HWaddr 52:54:00:bd:68:c3 inet地址:51.51.2.10 Bcast:51.51.2.255掩码:255.255.255.0

ip网络执行工程师511 ifconfig eth4.511链路封装:以太网HWaddr 52:54:00:bd:68:c3 inet地址:51.51.1.10 Bcast:51.51.1.255掩码:255.255.255.0

相关问题 更多 >