代码之家  ›  专栏  ›  技术社区  ›  osexp2000

如何防止systemd networkd发送客户端标识符?

  •  1
  • osexp2000  · 技术社区  · 6 年前

    我有一个coreos1800(或1855)安装到磁盘上的机器,下面是 systemd-networkd config (机器中只有一个网络接口):

    $ cat /etc/systemd/network/zz-default.network
    [Network]
    DHCP=yes
    
    [DHCP]
    ClientIdentifier=mac
    UseMTU=true
    UseDomains=true
    

    当我重新启动机器,将有两个DHCP IP分配给它,我通过检查确认 /var/lib/dhcpd.leases

    lease 100.79.223.152 { 
      starts 5 2018/09/28 02:34:00; ends 6 2018/09/29 02:33:59; tstp 6 2018/09/29 02:33:59; cltt 5 2018/09/28 02:34:00; 
      binding state active; next binding state free; rewind binding state free; 
      hardware ethernet 08:9e:01:d9:28:64; 
      option agent.circuit-id 0:5:8:b9:1:0:29;
    }
    lease 100.79.223.150 { 
      starts 5 2018/09/28 02:34:29; ends 6 2018/09/29 02:34:28; tstp 6 2018/09/29 02:34:28; cltt 5 2018/09/28 02:34:29; 
      binding state active; next binding state free; rewind binding state free; 
      hardware ethernet 08:9e:01:d9:28:64; uid "001010236001331(d"; 
      option agent.circuit-id 0:5:8:b9:1:0:29;
    }
    
    • 租用记录100.79.223.152由PXE加载程序请求,但被DHCP服务器拒绝。
    • 租赁记录100.79.223.150由的systemd networkd请求 systemctl restart systemd-networkd

    一切看起来都很好,但是PXE租约记录100.79.223.152会导致其他问题(当PXE真正启动机器并向其部署另一个操作系统时,它将获得100.79.223.152而不是150,然后会导致其他私有问题)。

    如果我安装了其他不使用systemd networkd的操作系统,那么重新启动只会导致1条租用记录。

    您可以看到租约100.79.223.150有一个字段uid“001010236001331(d)”,意思是让DHCP服务器通过uid(客户端标识符)来分配IP,目前它实际上是mac地址的相同内容,只是打印成八进制。

    为了防止这个双IP问题,我尝试设置 deny duplicates 在里面 /etc/dhcp/dhcpd.conf

    我想知道是否有可能告诉systemd networkd不要发送uid(客户端标识符)。根据 source of systemd ,有意实现为“始终发送客户端标识符”,

    在这种情况下,如何防止systemd networkd发送客户端标识符?

    编辑2019/02/17:我发现我误解了 ,对这个问题没有帮助。

    ignore-client-uids on;
    

    ignore client uids语句

    忽略客户端UID标志;

    如果存在ignore client uids语句并且其值为true 或在上,将不记录客户端的UID。如果这句话是 记录。

    https://www.isc.org/wp-content/uploads/2017/08/dhcp43.html

    DHCP服务器版本为isc-dhcpd-4.2.4

    编辑2019-03-12:我有一些错误,发现了一些东西,所以自己回答这个问题。简单的答案是 ignore-client-uids true; ClientIdentifier=mac 客户机端的工作不好。

    2 回复  |  直到 5 年前
        1
  •  2
  •   John Greene    6 年前

    您尝试过将客户端标识符设置为(空)吗?

    $ cat /etc/systemd/network/zz-default.network
    [Network]
    DHCP=yes
    
    [DHCP]
    ClientIdentifier=
    UseMTU=true
    UseDomains=true
    
        2
  •  0
  •   osexp2000    5 年前

    只有 ignore-client-uids true; 不断的工作,所有的神秘都消失了。 ,设置时,可以确认否 uid "....." 出现在/var/lib/dhcp/dhcpd.leases`文件中,服务器完全忽略从客户端发送的客户端标识符,只使用MAC来确定如何分配IP。

    如果你坚持使用 ClientIdentifier=mac ,你可以看看我的发现:

    • ClientIdentifier=mac (在客户端*.network上)确实允许我获得与以前相同的IP。我之所以说它不工作,可能是因为我有另一个网卡,默认情况下也启用了DHCP,因此导致了一个新的IP。

    /lib/systemd/network/zz-default.network

    [Network]
    DHCP=yes
    
    [DHCP]
    UseMTU=true
    UseDomains=true
    

    我把上面的文件改成

    [Network]
    DHCP=no
    

    我只得到1和以前一样的IP。

    • 客户端标识符将是一个字符串“\0x1”+MAC,您可以通过grep进行确认 uid "..." 在/var/lib/dhcp/dhcpd.leases中 file, e.g., uid“001304TDD210272”`,对于任何不可打印的字符,它将被编码为3位八进制,如304。某些客户机自动生成这样的客户机标识符“\0x1”+“MAAS”+MAC。。。

    • .

      • 对于客户端标识符为的DHCP请求->服务器发送带有客户端标识符哈希的DDNS请求->DNS服务器:为安全起见,由于哈希不相同而被拒绝。

    这就是我所发现的,希望能有所帮助。