温馨提示×

DHCP选项设置:Linux中的自定义配置

小樊
44
2025-12-27 19:52:54
栏目: 智能运维

Linux 中的 DHCP 选项自定义配置

一 基础概念与常用选项

  • DHCP 通过“选项”在服务器与客户端之间传递网络参数,例如子网掩码、网关、DNS、租约时间、启动文件等。常见标准选项与用途如下:
    • Option 1:子网掩码(Subnet Mask)
    • Option 3:路由器/默认网关(Routers)
    • Option 6:DNS 服务器(Domain Name Servers)
    • Option 12:主机名(Host Name)
    • Option 15:域名后缀(Domain Search)
    • Option 33:静态路由(Static Routes,有分类)
    • Option 51:租约时间(Lease Time)
    • Option 53:DHCP 消息类型(DHCP Message Type)
    • Option 55:请求参数列表(Parameter Request List)
    • Option 66:TFTP 服务器名(TFTP Server Name)
    • Option 67:启动文件名(Bootfile Name)
    • Option 121:无分类静态路由(Classless Static Routes)
    • Option 150:TFTP 服务器地址(TFTP Server Address)
  • 厂商与扩展:
    • Option 43:厂商特定信息(Vendor Specific Information),常以子选项形式携带如 ACS URLPXE 引导地址 等。
    • Option 82:中继代理信息(Relay Agent Information),用于记录客户端位置,便于定位与安全策略控制。

二 服务器端自定义选项 ISC DHCPd

  • 安装与配置路径
    • 安装 ISC DHCP 服务器(示例):RHEL/CentOS 系使用 yum install dhcp,Debian/Ubuntu 系使用 apt-get install isc-dhcp-server;主配置文件为 /etc/dhcp/dhcpd.conf
  • 基本结构与常用指令
    • 全局参数:option domain-nameoption domain-name-serversdefault-lease-timemax-lease-timeddns-update-style(常见为 none)。
    • 子网声明:subnet 网络 netmask 掩码 { range 起始IP 结束IP; option routers 网关; … }
    • 静态绑定:host 名称 { hardware ethernet MAC; fixed-address IP; }
    • 租约数据库:/var/lib/dhcp/dhcpd.leases
  • 自定义选项示例
    • 下发自定义字符串/数值(示例:Option 43 厂商信息,值为十六进制字节串)
      option space VENDOR-A;
      option VENDOR-A.code code 43;
      option VENDOR-A.string "myserver.example.com";
      option VENDOR-A.hex  43:0C:6D:79:73:65:72:76:65:72:2E:65:78:61:6D:70:6C:65:2E:63:6F:6D;
      
      subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.200;
        option routers 192.168.1.1;
        option domain-name-servers 8.8.8.8, 8.8.4.4;
        default-lease-time 600;
        max-lease-time 7200;
        vendor-option-space VENDOR-A;
      }
      
    • 下发无分类静态路由(Option 121)
      option rfc3442-classless-static-routes code 121 = array of integer 8;
      subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.200;
        option routers 192.168.1.1;
        option rfc3442-classless-static-routes
          24, 10,0,0, 192.168.10.1,    # 10.0.0.0/24 via 192.168.10.1
          0, 0,0,0, 192.168.1.1;         # 默认路由 via 192.168.1.1
      }
      
    • 启动与验证
      • 启动服务:RHEL/CentOS 使用 systemctl start dhcpd,Debian/Ubuntu 使用 systemctl start isc-dhcp-server;设置开机自启同理。
      • 查看状态与日志:systemctl status dhcpdjournalctl -u dhcpd;服务器端租约记录:/var/lib/dhcp/dhcpd.leases
      • 防火墙放行:DHCP 使用 UDP 67/68,需确保服务器与客户端所在网络的防火墙允许相关流量。

三 客户端自定义选项 dhclient

  • 配置文件与常用指令
    • 配置文件:/etc/dhcp/dhclient.conf。常用指令:
      • request 指定要请求的选项(如 routers、domain-name-servers 等)。
      • supersede/append/prepend domain-name-servers 覆盖/追加/前置 DNS。
      • send host-name “your-hostname”;send dhcp-client-identifier “id”;
      • 超时与重试:timeoutretryrebootselect-timeoutinitial-interval
  • 示例
    request subnet-mask, broadcast-address, routers,
            domain-name, domain-name-servers, domain-search, host-name;
    
    supersede domain-name-servers 8.8.8.8, 8.8.4.4;
    prepend domain-name-servers 1.1.1.1;
    
    timeout 60;
    retry 60;
    reboot 10;
    select-timeout 5;
    initial-interval 2;
    
    send host-name "myhost.example.com";
    send dhcp-client-identifier "my-client-id";
    
  • 命令行与调试
    • 释放/获取地址:dhclient -r eth0dhclient eth0;指定配置文件:dhclient -c /etc/dhcp/custom.conf eth0
    • 前台详细输出:dhclient -d -v eth0;查看租约:cat /var/lib/dhcp/dhclient.leases*;日志:journalctl -u networking
  • 发行版差异
    • RHEL/CentOS 可在接口配置 /etc/sysconfig/network-scripts/ifcfg- 中使用 PEERDNS=yes/noDNS1/DNS2 控制 DNS 是否由 DHCP 写入或覆盖。

四 验证与排错

  • 快速验证
    • 客户端:使用 ip a 检查是否获取到 IP;查看 /var/lib/dhcp/dhclient.leases* 的租约细节;必要时用 dhclient -d -v 观察交互过程。
    • 服务器:查看 systemctl status dhcpdjournalctl -u dhcpd;核对 /var/lib/dhcp/dhcpd.leases 的分配记录。
  • 抓包与防火墙
    • 抓包定位:tcpdump -i -nn port 67 or port 68;若跨网段,确认 DHCP 中继配置正确。
    • 防火墙:放行 UDP 67/68;若使用 Option 43/121 等特殊选项,确保服务器与客户端均能正确处理对应类型数据。

0