私のLANはDHCPサーバーを持つPFSenseサーバーを使用します。
私のLANに2番目のDHCPサーバーが表示されないようにする必要があります。 PfSenseファイアウォールを使用して他のDHCPサーバーのIPアドレスを拒否できると思います。
どうすればいいですか?
答え1
残念ながら、同じLANで2番目のDHCPをブロックすることはできません(確かにファイアウォールレベルではなく、高度なエンタープライズスイッチング機器でこれを軽減するのは簡単なトピックではありません)。 IP要求は通常、LANからのブロードキャストサービスです。レベルなので、ファイアウォールレベルでサービスをブロックするルーティングサービスはありません。
たとえば、ファイアウォールは同じネットワークブロック/LANに属するコンピュータ間の会話をブロックしませんが、制御/サービスはファイアウォールを介してルーティングされ、他のネットワークと通信します。
DHCPプロトコルは、IPを要求するサイトに最初に到達する応答が許可される応答になるように定義します。したがって、誰が勝つかによって、ワークステーションは公式のIPアドレスまたは悪意のあるIPアドレスから任意のIPアドレスを取得します。
取ることができる措置は緩和措置です。つまり、問題のあるデバイスのMACを見つけてスイッチから検索するか、スイッチ/ワイヤレスAPからMACをブロックすることです。
これを見つけるには2つの方法があります。
影響を受けたコンピュータに移動し、要求を処理するDHCPサーバーのIPアドレスを確認します。またはその問題については、IPアドレスを解放して何度も要求してください。
外部ルータへの応答を取得したら、ipconfig /all
MACアドレスを取得するのではなく、対応するIPアドレス(Windowsクライアントなど)を取得し、不良DHCP IPアドレスが1.1.3.200であるとします。
$ping -c1 1.1.3.200
PING 1.1.3.200 (1.1.3.200) 56(84) bytes of data.
64 bytes from 1.1.3.200: icmp_seq=1 ttl=255 time=0.273 ms
--- 1.1.3.200 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.273/0.273/0.273/0.000 ms
$arp -a 1.1.3.200
xxxx.local (1.1.3.200) at 00:0b:fc:07:04:01 [ether] on eth0
あるいは、私が好む方法でLinuxボックスから複数のDHCP要求を受け取るために使用できますtcpdump
(ボックスにはすべてのテキストを見ることができる水平スライダーがあります)。
sudo tcpdump -n -c 10 -e port 68
09:23:57.298176 00:21:97:c6:76:fc > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.2.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:21:97:c6:76:fc, length 300
09:23:59.034798 00:19:21:3c:2c:22 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.116.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:19:21:3c:2c:22, length 300
09:24:00.191144 64:00:6a:09:58:16 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.142.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 64:00:6a:09:58:16, length 300
09:24:07.325291 6c:62:6d:d0:20:f4 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.2.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 6c:62:6d:d0:20:f4, length 300
09:24:31.500826 00:23:24:06:e8:0b > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 363: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:23:24:06:e8:0b, length 321
09:24:31.502554 00:0b:fc:07:04:00 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.254.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 300
09:24:31.502812 00:0b:fc:07:04:01 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.200.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 300
09:24:32.098505 00:0f:fe:fd:6c:27 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.10.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0f:fe:fd:6c:27, length 300
09:24:49.340908 64:00:6a:09:05:6d > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.174.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 64:00:6a:09:05:6d, length 300
09:24:53.444891 ac:16:2d:08:44:1b > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 1.1.3.170.68 > 255.255.255.255.67: BOOTP/DHCP, Request from ac:16:2d:08:44:1b, length 300
DHCPレスポンスという行を見てください。
この例では、DHCPサーバーは1.1.3.254で、MAC 00:0b:fc:07:04:00を持っています。 2番目のサーバーはIPアドレス1.1.3.200とMACアドレスを持っています。 00:0b:fc:07:04:01(出力の6行と7行)。
答え2
私は長い間DHCP飢餓(特に悪意のあるDHCPサーバーを対象としています)を使用してきました。努力するdhcdropまたはdhcpstarv、またはscapyスクリプト。私は後者の方がより柔軟で選択することになりました。 scapyとdhcpstarvの両方で正当なサービスを中断することなく、問題のあるDHCPサーバーを見つけることができます。
一部のルータとスイッチは、一連のルールに違反するホストからのリンクを削除できます。バラよりこのシスコサポートスレッド例えば。