3

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 インターフェースのセットアップのどこかに問題があるとしか思えません。それまたはこのことについての私の平凡な理解。

ありがとう

4

1 に答える 1

1

ethertap インターフェースでは、ARP キャッシュにまだ否定的な (不完全な) エントリがある場合、実際には送信トラフィックが表示されない可能性があります。それ以外の場合は、おそらく ARP パケットのみが表示されます。

実際、これはpythonに関連しているとは思いません。

ping を試しましたか? icmp パケットが送信されていますか? ARPテーブルはどのように見えますか?

于 2012-01-24T22:38:57.053 に答える