我正在为家庭作业做一些 dhcp 任务,在一项练习中,我需要在一个客户端上释放 IP,然后在服务器中使用 tcpdump 捕获描述整个 DHCP 通信的包。
这当然工作得很好,问题是我的客户被分配了 2 个 IP,旧的和新的。
对于我的任务,我真的不需要知道这一点,但我只是好奇为什么一个接口可以有双 IP,以及我怎样才能只释放其中一个。
我将向您展示ip a
客户端的输出以获取更多信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:8d:c0:4d brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
valid_lft 81584sec preferred_lft 81584sec
inet6 fe80::a00:27ff:fe8d:c04d/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:e8:5c:2a brd ff:ff:ff:ff:ff:ff
inet 192.168.100.10/24 brd 192.168.100.255 scope global dynamic eth1
valid_lft 16802sec preferred_lft 16802sec
inet 192.168.100.11/24 brd 192.168.100.255 scope global secondary dynamic eth1
valid_lft 19310sec preferred_lft 19310sec
inet6 fe80::a00:27ff:fee8:5c2a/64 scope link
valid_lft forever preferred_lft forever
附言
我想知道旧IP现在是否行不通,也许ip a
只是在展示一种“历史”,但两个IP都行。但是,我仍然不知道为什么这是允许的。
一个接口可以有它需要的任意数量的 IP 地址,从零到数百个。
尽管 DHCP 客户端占用多个租约是不寻常的。也许您有两个 DHCP 客户端同时运行?(例如,systemd-networkd 和 NetworkManager?)
或者,也许您运行了两次 DHCP 客户端并在运行之间删除了它的租约文件?
如前所述,您可能有两个 DHCP 客户端,每个客户端管理自己的地址。如果是这种情况,则只停止一个客户端。
最后,您可以简单地删除地址而不释放 DHCP 租约,使用
ip addr del
. 但是,如果分配它的 DHCP 客户端仍在运行,这将无济于事,而且它当然不会在 DHCP 服务器上释放它: