zoukankan      html  css  js  c++  java
  • 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

     

     

  • 相关阅读:
    第一节 2字符串 简单
    第一节 1C#基础 简单
    终于找到wamp修改密码方式了!
    js通过class name获得元素
    JavaScript中arguments
    对技术的态度
    C++的坑真的多吗?
    js 常用正则
    js利用Array.splice实现Array的insert/remove
    c# asp.net webform web页面打印,可以控制需要打印和不需要打印的位置
  • 原文地址:https://www.cnblogs.com/yyuuee/p/15117499.html
Copyright © 2011-2022 走看看