Я пытался отправить пакеты на интерфейс крана с помощью Python. Я наблюдаю за интерфейсом крана, используя wireshark, и пакеты не принимаются. Я делаю это как упражнение, в основном, чтобы помочь моему пониманию vpns, мостов Ethernet и программирования сокетов в python.
Моя система настройки выглядит следующим образом:
Ubuntu Desktop 11.10
Python 2.7
eth0 ip: 192.168.1.6
tap0 ip: 10.0.0.1
Я сначала настроил кран следующим образом:
sudo openvpn --mktun --dev tap0
sudo ifconfig tap0 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255 promisc up
Это запускает интерфейс tap0 и создает правило маршрутизации ядра до 10.0.0.1/24 через tap0.
Вот таблица маршрутов:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 * 255.255.255.0 U 0 0 0 tap0
192.168.1.6 * 255.255.255.0 U 1 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Затем я запускаю Python Interactive и создаю простой UDP-сокет.
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.sendto('helloworld',('10.0.0.2',12345))
Я запускаю команду sendto с мониторингом Wireshark на tap0. Теперь в моей сети нет хоста 10.0.0.2, но я должен хотя бы увидеть некоторый исходящий трафик на интерфейсе tap0. Я повторил это в Windows, и, кажется, работает нормально.
Я могу только думать, что проблема заключается где-то в настройке интерфейса tap0 под linux. Это или мое посредственное понимание этого материала.
Спасибо