
私の仕事をするには、ローカルLinuxシステムでdhcpクライアントとサーバーの交換をダンプする必要があります。
- まず、ISC dhcpソースからdhcpサーバーとクライアントを複製して構築しました。https://github.com/isc-projects/dhcp。
- 私の実験のために、BridgeでTapインターフェースを作成して設定します。
sudo ip link add test_eth0 type tap
sudo ip link add test_eth1 type tap
sudo ip link add test_eth2 type tap
sudo ifconfig test_eth0 up
sudo ifconfig test_eth1 up
sudo ifconfig test_eth2 up
sudo ifconfig test_eth0 10.1.1.7 netmask 255.255.255.0 up
sudo ip link add test_br0 type bridge
sudo ip link set dev test_eht0 master test_br0
sudo ip link set dev test_eht1 master test_br0
sudo ip link set dev test_eht2 master test_br0
sudo ip link set test_br0 up
- dhcpd サーバーの起動
sudo ./dhcpd -d -f # start dhcp daemon in foreground mode
dhcpd.confを使用してください:
...
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
option routers 10.1.1.1;
}
...
- 指定されたターゲットインターフェイスとdhcpサーバーに対してdhclientを起動します。
sudo ./dhclient -lf ./dhclient.leases test_eth1 -s 10.1.1.0 -v
クライアント出力:
...
DHCPDISCOVER on test_eht1 to 10.1.1.0 port 67 interval 3
DHCPDISCOVER on test_eht1 to 10.1.1.0 port 67 interval 6
DHCPDISCOVER on test_eht1 to 10.1.1.0 port 67 interval 11
...
クライアントを起動した後、実行中のサーバーを検出してtest_eth1インターフェイスに動的アドレスを提供し、dhcpdumpを使用してダンプできると予想しましたが、思ったほどネットワーキングにはうまくいきませんでした。
答え1
1つ以上のテストインターフェイスに手動でアドレスを割り当てる必要があり、DHCPサーバーはそのインターフェイスにバインドし、そのアドレスを別のインターフェイスにデプロイします。
これは、dhcpdはどのインターフェイスにバインドするかを知る方法がないためです。
また、すべてのテストインターフェイスをブリッジに追加して一緒に「接続」する必要があります。