Ubuntu DHCP服务器如何启用DHCP Snooping

在Ubuntu上启用DHCP Snooping,你需要按照以下步骤操作:

方法一:使用netplan配置

  1. 编辑netplan配置文件
    打开你的netplan配置文件,通常位于/etc/netplan/目录下,例如01-netcfg.yaml

    sudo nano /etc/netplan/01-netcfg.yaml
    
  2. 添加DHCP Snooping配置
    network部分下添加DHCP Snooping的相关配置。以下是一个示例配置:

    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: yes
          dhcp6: no
          addresses:
            - 192.168.1.10/24
          gateway4: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]
          optional: true
          dhcp4-overrides:
            use-dns: false
          set-name: eth0
          dhcp-snooping:
            trusted-interface: eth0
            port-security:
              - port: 1
                mac-address: 00:11:22:33:44:55
                ip-address: 192.168.1.10
    

    在这个示例中:

    • trusted-interface:指定信任的接口,通常是连接到DHCP服务器的接口。
    • port-security:可以配置特定端口的MAC地址和IP地址绑定。
  3. 应用配置
    保存并关闭文件后,应用新的网络配置:

    sudo netplan apply
    

方法二:使用iptables配置

如果你不想使用netplan,也可以通过iptables来启用DHCP Snooping。以下是步骤:

  1. 启用IP转发(如果尚未启用):

    sudo sysctl -w net.ipv4.ip_forward=1
    

    为了使更改永久生效,编辑/etc/sysctl.conf文件并添加以下行:

    net.ipv4.ip_forward=1
    
  2. 配置iptables规则

    假设你的DHCP服务器连接到eth0接口,客户端连接到eth1接口。

    sudo iptables -t mangle -A POSTROUTING -o eth0 -j MASQUERADE
    sudo iptables -A INPUT -i eth1 -p udp --dport 67:68 -j ACCEPT
    sudo iptables -A INPUT -i eth1 -p udp --sport 67:68 -m state --state ESTABLISHED,RELATED -j ACCEPT
    sudo iptables -A INPUT -i eth0 -p udp --dport 67:68 -j DROP
    sudo iptables -A INPUT -i eth0 -p udp --sport 67:68 -m state --state ESTABLISHED,RELATED -j DROP
    

    这些规则将允许DHCP请求从客户端到服务器,并阻止从服务器到客户端的DHCP响应。

  3. 保存iptables规则

    为了使iptables规则在重启后仍然有效,你可以使用iptables-persistent工具:

    sudo apt-get install iptables-persistent
    sudo netfilter-persistent save
    sudo netfilter-persistent reload
    

注意事项

  • 确保你的网络接口名称(如eth0)和MAC地址正确无误。
  • 在生产环境中,建议使用netplan配置,因为它更直观且易于管理。
  • 如果你使用的是虚拟机或容器环境,可能需要额外的配置来确保DHCP Snooping正常工作。

通过以上步骤,你应该能够在Ubuntu上成功启用DHCP Snooping。