1966 г. Ответ Мустанга правильный.
pg_hba.conf
, если вы доверяли всем IP-адресам для подключения к серверу. Интерфейс tun/tap всегда принадлежит некоторому приложению. :Пакеты, отправляемые на интерфейс, считываются приложением, и пакеты, написанные приложением, поступают в сетевой стек ядра через этот интерфейс.
Как правило, пространство имен сети подключается к виртуальным парам Ethernet (veth ). Они просто пересылают пакеты на другой интерфейс пары.
Ничто не мешает вам написать приложение, которое делает именно это. :Откройте два интерфейса tun/tap, считывайте пакеты с одного и пересылайте их на другой, и наоборот. Существуют также готовые -приложения, которые можно использовать для этого, например. socat
.
Вы даже можете написать два приложения, где каждое приложение открывает один интерфейс tun/tap, и приложения взаимодействуют друг с другом, используя другие средства, и реализуют таким образом переадресацию. В основном все VPN-приложения работают таким образом (, хотя для VPN-приложений «другими способами» обычно используется «по существующему сетевому соединению», поэтому на самом деле это не считается ).
Итак, да, с правильным приложением (s )вы можете соединять пространства имен с интерфейсами tun/tap. Однако в общем случае делать это не имеет большого смысла, потому что вам придется писать такое приложение, и это будет менее эффективно, чем просто использование пары veth -.
Редактировать
Я попытался переместить один интерфейс tun из socat
в созданное мной сетевое пространство имен ns0
, и он работает нормально, как я и ожидал, несмотря на то, что socat
работает в основном сетевом пространстве имен:
socat TUN:10.1.0.254/24,tun-name=tun0a,iff-up TUN:10.1.0.1/24,tun-name=tun0b
ip link set tun0b netns ns0
, а затем вам снова нужно установить адрес для tun0b
после перемещения.
Таким образом, "пересечение" происходит при наличии одного (или обоих )сетевых интерфейсов tun/tap (с )в пространстве имен, отличном от пространства имен процесса.