1

レイヤー 2 インターフェイス (TAP) をエンドポイントとして使用する小さなトンネリング アプリを作成しています。OSX でこれをテストする過程で、トンネルが単一の OSX マシンで実行されているときと、OSX と Linux ボックスの間でトンネリングされているときの両方で、トンネルで予期しないあらゆる種類のトラフィックが発生していることに気付きました。このトラフィックを除外したいのですが、これを行う最善の方法は何だろうと考えています。

トンネルは次のようになります (両方のエンドポイントが同じマシン上にある可能性があることに注意してください)。

tap0 -> tunnel app -> UDP tunnel -> tunnel app -> tap1

注目すべきトラフィックは、宛先ポート 5353 の Bonjour パケットと ICMP/IGMP です。マルチキャストは、TAP インターフェイスで有効になっています。この種のトラフィックをブロックしたいと思います。これを行うことについての私の考え:

  1. インターフェイスでマルチキャストをオフにします (OSX では機能しません。以下を参照してください)。
  2. 使用するebtables
  3. トンネル アプリ内のインターフェイスから送信されるパケットを解析し、そこで無視する

これを行うためのより良い/より簡単な方法はありますか?

OSX インターフェイス (tap0 と呼びましょう) でマルチキャストをオフにしようとしましたが、エラーが発生します。

$ ifconfig tap0 -multicast
ifconfig: -multicast: bad value

編集: もう少し調べてみると、UNIX と BSD の ifconfig には異なるオプションがあるようです。OSX/BSD の特定のインターフェイスでマルチキャスト/ICMP トラフィックをブロックする別の方法はありますか?


ここにifconfigの出力があります...

OSX (osxtuntap を使用):

$ ifconfig tap1
tap1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 92:d9:e6:65:5a:8c 
    inet 10.0.0.2 netmask 0xffffff00 broadcast 10.0.0.255
    open (pid 17121)

Linux:

$ ifconfig tunX
tunX      Link encap:Ethernet  HWaddr 4a:29:02:e6:b0:b9  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::4829:2ff:fee6:b0b9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
4

1 に答える 1