отправка пакетов на интерфейс тапа с помощью Python - PullRequest
3 голосов
/ 24 января 2012

Я пытался отправлять пакеты на интерфейс крана, используя 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.Это или мое посредственное понимание этого материала.

Спасибо

1 Ответ

1 голос
/ 25 января 2012

В интерфейсе ethertap вы, вероятно, на самом деле не увидите исходящий трафик, если в кэше ARP все еще есть отрицательная (неполная) запись. В противном случае вы, вероятно, видели только пакет ARP.

Я не думаю, что это на самом деле связано с питоном.

Вы пробовали ping - вы видите, что пакет icmp вышел? Как выглядит таблица arp?

...