Повторное использование одного и того же порта источника в разных пространствах имен с использованием протокола tcp - PullRequest
0 голосов
/ 19 марта 2019

У меня есть виртуальная машина linux с 2 интерфейсами, у 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, и у меня работает HTTP-сервер на порте 8000 для обоих пространств имен eng52 и eng522

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

причина, по которой я привязываю порт источника к 63999, заключается в том, что мне нужно, чтобы адрес источника, пункт назначения, адрес, порт источника, порт назначения и протокол были одинаковыми в обоих сеансах трафика.

Проблема, с которой я сталкиваюсь, заключается в том, что, несмотря на то, что я запускаю этот сценарий в разных пространствах имен, порт источника не считается уникальным, скорее я могу запустить только один экземпляр сценария, который вызывает проблему, так как я хочу этот источникпорт для перекрытия.

...