質問: なぜpingをブロードキャストしないのですか? 私はルーターとしてfreebsdを持っています。 ローカルネットワークはインターフェースsk0上にあります:inet 10.254.239.1 netmask 0xffffff00 broadcast 10.254.239.255 私のローカルネットワークには、freebsdのdhcpサーバーからip(10.254.239.2)を取得するコンピューター(windows 7)があります。 正確なアドレス10.254.239.2へのpingは正常に機能します。 freebsd自体からbradcast10.254.239.255にpingを実行しようとしても、何も起こりません。--- 10.254.239.255 ping statistics --- 3 packets transmitted, 0 packets received, 100.0% packet loss #arp -a言う: .。 ? (10.254.239.255)sk0の(不完全)で期限切れ[イーサネット] .。 ファイアウォールはこのインターフェースですべてを許可します どこを見ればいいですか?放送を機能させるにはどうすればよいですか?
回答: ホスト検出を実行する場合は、ブロードキャストpingを使用せず、特定のサブネットに対して可能な各順列にpingを実行するだけです。重そうに聞こえますが、実際には数秒かかります(括弧は重要です)。$ time ( s=192.168.0 ; for i in $(seq 1 254) ; do ( ping -n -c 1 -w 1 $s.$i 1>/dev/null 2>&1 && printf "%-16s %s\n" $s.$i responded ) & done ; wait ; echo ) 192.168.0.5 responded 192.168.0.11 responded 192.168.0.2 responded 192.168.0.254 responded 192.168.0.4 responded real 0m1.317s user 0m0.004s sys 0m0.084s