web-dev-qa-db-ja.com

nc(netcat)を使用してメッセージをブロードキャストする

Netcatを使用してブロードキャストメッセージを送信しようとしています。

私はファイアウォールを開いており、このような通常のメッセージを送信しています。

  Host: nc -l 192.168.1.121 12101
  client: echo "hello" | nc 192.168.1.121 12100

しかし、私はこのようなものを機能させることはできません。

  Host: nc -lu 0.0.0.0 12101
  client: echo "hello" | nc -u 255.255.255.255 12100

正しいフラグを使用していますか?ホストはMac上にあり、クライアントはLinux上にあることに注意してください。メッセージのブロードキャストに役立つ例を教えてください。

ありがとう!

20
Edwin Evans

GNU netcatのバージョンは壊れている可能性があります(とにかく0.7.1で動作することはできません。) http://sourceforge.net/p/netcat/バグ/ 8 /

Socatが動作するようになりました。以下のコードは、ポート24000へのUDPブロードキャストを行います。

socat - UDP-DATAGRAM:255.255.255.255:24000,broadcast

(socat-worldでは、「-」は「stdin」を意味します。)

20
Robert Calhoun

nc/netcat-bオプションを使用して、ブロードキャストすることを言っているのではありません。

nc -h 2>&1 | grep -- -b
-b          allow broadcasts
7
fork2execve

間違っていると思っているが、ファイアウォールが正しく設定されていると言っているので、ホストとクライアントが同じサブネット上にないのではないかと思いますか?

その場合、このファイアウォールがルーターとしても機能している場合(またはパケットがルーターを通過する必要がある場合)、そのパケットは処理されますが、他のインターフェイスには転送されません。それを実現したい場合は、ダイレクトブロードキャストを送信する必要があります。例えば;サブネット192.168.1.0/24の場合、ダイレクトブロードキャストはサブネットの最後のIPである192.168.1.255になります。次に、ファイアウォールは、192.168.1.0/24へのルートがあり、ダイレクトブロードキャストを転送するように設定されていると仮定して、そのブロードキャストを宛先またはネクストホップに転送します。ダイレクトブロードキャストを転送するようにデバイスを設定しています...そのドキュメントを参照する必要があります。 Cisco IOSの場合、インターフェイスの下に「ipdirected-broadcast」と入力します。

255.255.255.255は限定されたブロードキャストであり、ルーターに関係なく通過することはありません。これは、存在するレイヤー2リンク専用です。

Netcatのセットアップ方法:

-l 0.0.0.0 12101は、稼働していてIPアドレスが割り当てられているすべてのインターフェースでポート12101でlistenするようにnetcatに指示します。 -uは、netcatにUNIXドメインソケットgoogle IPC :)でリッスンするよう指示しているため、必要ありません(これがシナリオが機能しない最大の理由です)。

以下は、netcatを介して別のネットワークにブロードキャストを転送するために機能するはずです。

サーバー:nc -l 0.0.0.0 12101 
ホスト:echo "hello" | nc 192.168.1.255 12101 

お役に立てば幸いです。それが探していたものから長くかかったり、外れたりして申し訳ありません:)

3
matak