如果我有 2 個 IP 分配給一個接口,我如何只釋放一個特定的 IP?

如果我有 2 個 IP 分配給一個接口,我如何只釋放一個特定的 IP?

我正在做一些 dhcp 任務作為家庭作業,在一項練習中,我需要在一個客戶端上釋放 IP,然後在伺服器中使用 tcpdump 捕獲描述整個 DHCP 通訊的套件。
當然,這工作得很好,問題是我的客戶被分配了 2 個 IP,舊的和新的。

對於我的任務來說,我真的不需要知道這一點,但我只是好奇為什麼一個介面可以有雙 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 都有效。但我仍然不知道為什麼這是允許的。

答案1

我只是好奇為什麼一個介面可以有雙IP

一個接口可以有任何它需要的 IP 位址數量,從零到數百。

儘管 DHCP 用戶端佔用多個租約的情況並不常見。也許您有兩個 DHCP 用戶端同時運行? (例如,systemd-networkd 和 NetworkManager?)

或者,也許您運行了 DHCP 用戶端兩次並在運行之間刪除了其租約檔案?

我怎麼能只釋放其中一個?

如前所述,您可能有兩個 DHCP 用戶端,每個用戶端管理自己的位址。如果是這種情況,則僅停止一個客戶端。

最後,您可以使用 簡單地刪除地址而不釋放 DHCP 租約ip addr del。但是,如果分配它的 DHCP 用戶端仍在運行,這將無濟於事,而且它當然不會在 DHCP 伺服器上釋放它:

ip addr del 192.168.100.11/24 dev eth1

相關內容