2017-02-09 11 views
0

似たような質問がある人もいるようですが、特に具体的だと思います。私は一般的な問題にぶつかるかもしれないと思う。Linuxのデバイスをタップしても、ARP/IPパケットが正しく渡されませんか?

Linux(Cで作成)に別のネットワークに接続されたTAPデバイスがあり、このTAPデバイスを介してコンピュータが他のネットワークと通信できるようにします。

私はariパケットがwiresharkではっきりと来るのを見ることができますが、私のカーネルは応答しません。私はブリッジを設定し、ブリッジのIPアドレスを無駄に設定しようとしました。私はまた、物理的なハードウェアへのブリッジを試みました。何らかの理由で、Linuxはデータを他のNICに渡すようには見えません。

私が静的なARPルートを設定した場合、このLinuxボックスは、そのデバイスのpingに応答しないようです。

# ifconfig tap0 up 
# brctl addbr br0 
# brctl addif br0 tap0 
# brctl addif br0 eth9 
# ifconfig br0 up 

br0、eth9、またはtap0をIPに設定できますが、pingまたはarpsには応答がありません。私が橋を破壊しても、何もない。

"ふりをする"というインターフェースがほしいと思っています。 "これは偽のイーサネットカード"のように、そのことを話しています。私はそれがタップで可能であるべきであるように感じる。

同様の問題:

Linux TUN/TAP: Unable to read data back from TAP devices

Why aren't ARP or ICMPv6 packets processed by a Linux TAP device

+0

ARPはレイヤ2ブロードキャストをルーティングできないため、ルーティング(レイヤ2フレームはレイヤ3に到達する前に取り除かれ、例えばルーティング)されていません。 ARPはブリッジすることができるが、ブリッジはレイヤ3を理解しない。 IP。 2つの異なるIPネットワークを橋渡しするべきではありません。ネットワーク層やTUN/TAPの目的を誤解していると思います。 –

答えて

0

私は、これはタップ/ TUNデバイスは、Linuxで動作する方法とは無関係であったことを後悔しています。実際には、このメカニズムは機能します。

問題は、生のタップデバイスと通信するために「send」と「recv」を使用していたことです。 Wiresharkは違いを知ることはできませんが、Linux OSはソケットからのデータの使用を拒否します。

使用この男の例:http://www.cis.syr.edu/~wedu/seed/Labs/VPN/files/simpletun.c

関連する問題