0

Linux システムで、独自のトンネリング プロトコルを構築しました。このプロトコルでは、標準化されていないが検証済みのメディアを介してパケットを中継します。私がしていることは、iptables と NFQUEUE を使用してパケットをキャプチャし、メディアを介してそれらを中継し、もう一方の端で raw ソケットを使用してパケットを再注入することです。トンネルに入るパケットは、出てくるパケットとまったく同じであり、検証済みです。問題は、ping の宛先がトンネル エンドポイントと同じである場合、これが ICMP Ping (エコー要求) に対して機能しないことです。宛先がトンネル エンドポイントと同じでない場合、ping パケットは再ルーティングされて受信者に到着し、ping 応答が送信者に返されます。誰が何が起こっているのか知っていますか。生のICMPを自分に送信することはできませんか? そうでない場合、誰かが私が代わりに何をすべきか考えていますか?

私が持っているものは次のとおりです。

R1 ---- T1 -----T2 ------ R2

R1 は R2 に ping を送信します。

R1、R2、ルーター 1 およびルーター 2 T1、T2、トンネル ポイント 1 および 2 (R1 と T1 は同じルーター上にあり、R2 と T2 は同じルーター上にあります)。このセットアップは機能しません。

これはうまくいきます:

R1 ---- T1 -----T2 ------ R2 ----- R3

R1 ping R3、これは機能します。

何か案は?

/アンディ

4

1 に答える 1

1

可能かどうかはわかりませんが、パケットを傍受して再注入するための推奨される方法は、tun/tapインターフェースを使用することです (カーネルの Documentation/ ディレクトリも参照してください)。切り替えるとICMPが機能すると思います。

于 2011-02-21T16:51:12.460 に答える