簡體   English   中英

同時使用相同端口相同 IP 地址的應用程序/協議

[英]Applications/protocols using same port same IP addresses at the same time

我在設備上有一個接口,我需要同時從這個接口發送流量。 有以下要求

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 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 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 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM