RH358学习笔记--4(DHCP学习)

管理DHCP和IP地址分配

一,DHCP基本概念

动态主机配置协议(DHCP)为系统提供了一种方法来自动检索它们的网络配置参数,如IP地址、默认网关、DNS服务器和域或NTP服务器。

通过在网络上部署DHCP服务器,可以集中控制这些参数。您可以为客户端分配一定范围的IP地址,也可以为特定客户端分配保留的IP地址。
DHCP有两种类似的协议:用于IPv4组网的DHCPv4(原DHCP)和用于IPv6组网的DHCPv6。本节主要介绍DHCPv4。DHCPv6将在本章后面讨论。

二,部署DHCP服务器

服务器的静态IP地址必须在DHCP服务器管理的范围内。如上所示,DHCP服务器的地址为192.168.0.2/24。该服务器管理192.168.0.0/24 子网。

[root@host ~]# yum install dhcp-server

配置DHCP服务器
dhcpd服务使用/etc/dhcp/dhcpd.conf配置文件。dhcp-server包中提供了/usr/share/doc/dhcp-server/dhcpd.conf.example置文件示例。使用该文件作为配置的起点。

典型的DHCP配置为例:

 基于MAC地址预留IP地址
在配置文件中,主机声明可以将MAC地址与IP地址绑定。这种配置对于始终为特定系统的网络接口提供
相同的
IP地址特别有用,特别是当它提供web或数据库系统等服务时。

三,配置DHCP客户端

如果需要在客户端上配置用于DHCP的接口,请使用nmcli命令设置ipv4.method为auto。
[root@host ~]# nmcli con add con-name dhcp-connection type ethernet
ifname eth0 ipv4.method auto

 配置DHCP的步骤:

(1)安装dhcp-server

[root@servera ~]# yum -y install dhcp-server
[root@servera ~]# rpm -qa |grep dhcp

  [root@servera ~]# rpm -ql dhcp-server-4.3.6-34.el8.x86_64

 配置DHCP服务器如下表:

 修改DHCP的配置文件

[root@servera dhcp]# vim dhcpd.conf

 authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.100 192.168.0.200;
  option broadcast-address 192.168.0.255;
  option domain-name-servers 172.25.250.254;
  option domain-search "example.net";
  default-lease-time 600;
  max-lease-time 7200;
}

[root@servera dhcp]# dhcpd -t
[root@servera ~]# nmcli con add con-name ge-conn type ethernet ifname eth1 ipv4.addresses 192.168.0.10/24 ipv4.method manual
[root@servera ~]# umcli con up ge-conn
[root@servera ~]# systemctl restart dhcpd
[root@servera ~]# systemctl status dhcpd

四,配置分配IPV6地址

IPv6有多种配置网络接口的方法。在本节中,将学习其中的两个:
 无状态地址自动配置Stateless Address Autoconfiguration (SLAAC)
 动态主机配置协议Dynamic Host Configuration Protocol for IPv6 (DHCPv6)

使用ip addr show命令获取链路本地IPv6地址:

[root@servera ~]# ip addr show dev eth0

 IPv6无状态地址自动配置

 无状态地址自动配置(SLAAC)

方法依赖路由器为客户端系统提供网络配置。这可以包括IPv6网络的前缀(客户端可以用它来创建地址)和DNS信息。对于这种方法,您的网络团队必须激活并配置路由器上的邻居发现协议(NDP)。
在SLAAC中,当客户端系统启动时,或者当您激活网络连接时,接口使用它的链路本地地址发送一个Router Solicitation消息到ffo2::2组播地址。路由器应答路由器通告消息,提供网络参数。

路由器通告消息可以提供以下网络配置参数:
 IPv6前缀
 DNS服务器的IPv6地址
 DNS搜索列表

比较路由器通告报文与DHCPv6

 配置DHCPv6服务器

dhcpd6服务使用/etc/dhcp/dhcpd6.conf配置文件。dhcp-server包中提供了/usr/share/doc/dhcp-server/dhcpd6.conf文件以用作配置示例。可使用该文件作为配置的起点。

authoritative; # 权威指令指示服务器对其管理的IPv6前缀是权威的。
subnet6 fde2:6494:1e09:2::/64 { # subnet6位置提供子网的详细信息。
range6 fde2:6494:1e09:2::20 fde2:6494:1e09:2::60; # 服务器分配该范围内的IPv6地址。
option dhcp6.name-servers fde2:6494:1e09:2::cc; # 服务器还提供DNS名称服务器。
option dhcp6.domain-search "example.net"; # 服务器提供DNS域搜索参数。
default-lease-time 600; # 如果客户端没有要求任何特定的租期长度,default-lease-time参数提供了一个以秒为单位的默认值。
max-lease-time 7200; # max-lease-time表示服务器可以接受客户端请求的最大租约时间。
}

重要:
当您从同一个磁盘映像部署多个虚拟系统时,请确保在第一次引导之后重新生成/etc/machine-id文件。否则,所有这些系统将获得相同的机器ID,因此也将获得相同的DUID。要生成一个新的机器ID,使用以下命令: 

[root@host ~]# rm /etc/machine-id
[root@host ~]# systemd-machine-id-setup
[root@host ~]# systemctl restart NetworkManager

使用journalctl -u dhcpd6.service命令访问该信息的:

五,Ansible部署DHCP服务器

安装包
使用yum Ansible模块安装dhcp-server包如下:

 部署DHCP配置文件
DHCPv4的配置文件(/etc/dhcp/dhcpd.conf)和DHCPv6的配置文件(/etc/dhcp/dhcpd6 .conf)可由多个文件模块配置。

 启用和启动服务
使用Ansible service模块开启和启动服务。DHCPv4的服务名称为dhcpd。对于DHCPv6,服务名称为dhcpd6。

 配置防火墙规则
使用Ansible firewalld模块开启DHCPv4的dhcp服务和dhcpv6的dhcp服务。

 使用Ansible配置DHCP Client

客户端系统,使用网络系统角色。对于IPv4,将dhcp4变量设置为yes。对于IPv6,将auto6变量设置为yes。

 配置DHCP服务的Ansible剧本:

---

- name: Deploy a DHCPv4 and DHCPv6 server

  hosts: servera.lab.example.com

  become: true

  vars:

    network_connections:

      - name: static_net

        type: ethernet

        mac: "{{ mac_if2 }}"

        state: up

        ip:

          address:

            - 192.168.0.10/24

            - fde2:6494:1e09:2::a/64

  roles:

    - rhel-system-roles.network

  tasks:

    - name: the dhcp-server package is installed

      #FIXME: see "ansible-doc yum" for some examples

      yum:

        name: dhcp-server

        state: present

    - name: the DHCPv4 configuration file is deployed

      #FIXME: see "ansible-doc copy" for some examples.

      #       Copy files/dhcpd.conf to /etc/dhcp/dhcpd.conf

      #       on servera

      copy:

        src: files/dhcpd.conf

        dest: /etc/dhcp/dhcpd.conf

             

      notify: reload dhcpd

    - name: the DHCPv6 configuration file is deployed

      #FIXME: see "ansible-doc copy" for some examples.

      #       Copy files/dhcpd6.conf to /etc/dhcp/dhcpd6.conf

      #       on servera

      copy:

        src: files/dhcpd6.conf

        dest: /etc/dhcp/dhcpd6.conf

      notify: reload dhcpd6

    - name: the dhcpd and dhcpd6 services are started and enabled

      #FIXME: see "ansible-doc service" for some examples

      service:

        name: "{{item}}"

        state: started

        enabled: yes

      loop:

        - dhcpd

        - dhcpd6

    - name: the dhcp and dhcpv6 firewall services are opened

      #FIXME: see "ansible-doc firewalld" for some examples

      firewalld:

        service: "{{item}}"

        state: enabled

        immediate: yes

        permanent: yes

      loop:

        - dhcp

        - dhcpv6     

  handlers:

    - name: reload dhcpd

      service:

        name: dhcpd

        state: restarted

    - name: reload dhcpd6

      service:

        name: dhcpd6

        state: restarted

dhcp-client.yml Ansible剧本。
在系统上客户端组配置连接到次要网络的网络接口,使用DHCP获得IPv4地址,使用SLAAC和DHCPv6获得IPv6地址。

$ vim dhcp-client.yml

---
- name: Configure a DHCPv4 and DHCPv6 network interface
  hosts: clients
  become: true
  vars:
    network_connections:
      - name: dyn_net
        type: ethernet
        mac: "{{ mac_if2 }}"
        state: up
        ip:

            dhcp4: yes
            auto6: yes
  roles:
    - rhel-system-roles.network

  tasks:
    - name: the system can connect to servera IPv4 address
      wait_for:
        host: 192.168.0.10
        port: 22
        timeout: 10

    - name: the system can connect to servera IPv6 address
      wait_for:
        host: fde2:6494:1e09:2::a
        port: 22
        timeout: 10

 

 

原文地址:https://www.cnblogs.com/yyuuee/p/15117499.html