2개의 인터페이스가 있는 Linux 가상 머신이 있고 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 비캐스트: 51.51.1.255 마스크: 255.255.255.0
ip netns exec eng52 ifconfig eth1.52 링크 encap: 이더넷 HWaddr 52:54:00:bd:68:c3 inet addr:51.51.2.10 브로드캐스트: 51.51.2.255 마스크: 255.255.255.0
ip netns exec eng522 ifconfig eth1.522 링크 encap: 이더넷 HWaddr 52:54:00:bd:68:c3 inet addr:51.51.2.10 브로드캐스트: 51.51.2.255 마스크: 255.255.255.0
ip netns exec eng511 ifconfig eth1.511 링크 encap: 이더넷 HWaddr 52:54:00:bd:68:c3 inet addr:51.51.1.10 브로드캐스트: 51.51.1.255 마스크: 255.255.255.0
그래서 TCP 프로토콜을 사용하는 스크립트가 있고 동시에 트래픽을 보내야 합니다.
eng51[51.51.1.10 vlan-id 51]에서 eng52[51.51.2.10 vlan-id 52]까지 동일한 스크립트를 사용하여 eng52[51.51.1.10 vlan-id 511]에서 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로 바인딩하고 네임스페이스 eng52 및 eng522 sock.bind(('0.0.0.0',63999)) 에 대해 포트 8000에서 실행되는 HTTPserver를 가지고 있습니다.
소스 포트를 63999로 바인딩한 이유는 두 트래픽 세션에서 소스 주소, 대상, 주소, 소스 포트, 대상 포트 및 프로토콜이 동일해야 하기 때문입니다.
내가 직면한 문제는 다른 네임스페이스에서 이 스크립트를 실행하더라도 소스 포트가 고유한 것으로 간주되지 않는다는 것입니다. [동일한 포트 63999를 사용하기 때문에] 동시에 다른 네임스페이스에서 스크립트를 실행할 수 없습니다.
답변1
그래서 저는 단순히 여러 인터페이스를 사용하여 가상 머신의 각 인터페이스를 네임스페이스에 매핑함으로써 이를 달성했습니다. 그런 다음 동시에 2개의 동시 세션에서 소스 포트 63999를 사용할 수 있습니다.
ip netns eng51 ifconfig eth1.51 link encap: Ethernet HWaddr 52:54:00:bd:68:c3 inet addr:51.51.1.10 브로드캐스트: 51.51.1.255 마스크: 255.255.255.0
ip netns exec eng52 ifconfig eth2.52 링크 encap: 이더넷 HWaddr 52:54:00:bd:68:c3 inet addr:51.51.2.10 브로드캐스트: 51.51.2.255 마스크: 255.255.255.0
ip netns exec eng522 ifconfig eth3.522 링크 encap: 이더넷 HWaddr 52:54:00:bd:68:c3 inet addr:51.51.2.10 브로드캐스트: 51.51.2.255 마스크: 255.255.255.0
ip netns exec eng511 ifconfig eth4.511 링크 encap: 이더넷 HWaddr 52:54:00:bd:68:c3 inet addr:51.51.1.10 브로드캐스트: 51.51.1.255 마스크: 255.255.255.0