Я пытаюсь создать туннель 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
):
- На enp0s3 tcpdump я вижу запросы ARP, 192.168.0.105 ищет 192.168.0.121
- На tun0 tcpdump ничего нет.
Если я попытаюсь пропинговать enp0s3 из tun0 (ping -I tun0 192.168.0.105
):
- запросы icmp на tun0
- ничего не связанного с этим icmp запросами на enp0s3
Я пробовал множество идей: route, iproute, iptables, но потерпел неудачу, возможно, потому что я не очень хорош в маршрутизации и администрировании Linux.
Как я понимаю, если что-то написано на интерфейсе Tun, ядро помещает это в "провод", а ядро помещает входящие пакеты в интерфейс Tun. И другая программа должна манипулировать этими пакетами. Это моя цель - написать программу, которая может писать и читать через интерфейс Tun и выполнять операции. Но я не могу начать, потому что я застрял на настройке интерфейса Tun.
Любая помощь и идеи будут высоко оценены.
PS. Извините за английский, впервые задаю вопросы по таким услугам. Обычно я копаю ответы в Интернете, но я застрял на них в течение 4 дней.