Python を使用してタップ インターフェイスにパケットを送信しようとしています。Wireshark を使用してタップ インターフェイスを監視していますが、パケットが受信されていません。これは主に、Python での vpn、イーサネット ブリッジング、およびソケット プログラミングの理解を助けるための演習として行っています。
私のシステム設定は次のとおりです。
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 インターフェイスが開始され、tap0 経由で 10.0.0.1/24 へのカーネル ルーティング ルールが作成されます。
ルートテーブルは次のとおりです。
$ 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))
私は、tap0 で Wireshark モニタリングを使用して sendto コマンドを実行します。現在、ネットワークの 10.0.0.2 にホストはありませんが、少なくとも、tap0 インターフェースで発信トラフィックがいくつか見られるはずです。これをWindowsで複製しましたが、問題なく動作するようです。
Linux での tap0 インターフェースのセットアップのどこかに問題があるとしか思えません。それまたはこのことについての私の平凡な理解。
ありがとう