Я пытаюсь создать туннель 3-го уровня, используя Tun-интерфейс между двумя виртуальными машинами Ubuntu, работающими под Windows на python.

Текущая конфигурация:

VM1:

  • enp0s3 мой основной интерфейс 192.168.0.105 (мостовой интерфейс в VirtualBox) конфигурация
  • tun0 192.168.0.121 pointopoint 192.168.0.122

VM2:

  • enp0s3 192.168.0.106 (мостовой интерфейс в VirtualBox)
  • tun0 192.168.0.122 pointopoint 192.168.0.121

Сценарий Python, который я использую: https://gist.github.com/glacjay/585369/b229da72a0dc84dd27d12afc5b76d0c5c44bb9c3
Я также попробовал pytun (упаковщик python для устройств tun/tap).

Поэтому, как я понимаю, моей главной проблемой является то, что tun0 не получает / не отправляет пакеты на мой основной интерфейс.

Если я попытаюсь пропинговать tun0 из enp0s3 (ping -I enp0s3 192.168.0.121):

  1. На enp0s3 tcpdump я вижу запросы ARP, 192.168.0.105 ищет 192.168.0.121
  2. На tun0 tcpdump ничего нет.

Если я попытаюсь пропинговать enp0s3 из tun0 (ping -I tun0 192.168.0.105):

  1. запросы icmp на tun0
  2. ничего не связанного с этим icmp запросами на enp0s3

Я пробовал множество идей: route, iproute, iptables, но потерпел неудачу, возможно, потому что я не очень хорош в маршрутизации и администрировании Linux.

Как я понимаю, если что-то написано на интерфейсе Tun, ядро помещает это в "провод", а ядро помещает входящие пакеты в интерфейс Tun. И другая программа должна манипулировать этими пакетами. Это моя цель - написать программу, которая может писать и читать через интерфейс Tun и выполнять операции. Но я не могу начать, потому что я застрял на настройке интерфейса Tun.

Любая помощь и идеи будут высоко оценены.

PS. Извините за английский, впервые задаю вопросы по таким услугам. Обычно я копаю ответы в Интернете, но я застрял на них в течение 4 дней.

0