天天看點

自動化配置網口動态擷取位址

配置前提:需要提前部署好dhcpv4和dhcpv6。

### 介紹下手動配置,如果使用下面playbook自動配置,可以忽略該框框内容。
[root@serverc <sub>]# rm /etc/machine-id 
[root@serverc </sub>]# systemd-machine-id-setup 
[root@serverc <sub>]# systemctl restart NetworkManager
[root@serverc </sub>]# nmcli connection add con-name dhcp-conn type ethernet ifname eth1 ipv4.method auto
[root@serverc <sub>]# nmcli connection up dhcp-conn 
[root@serverc </sub>]# nmcli connection show | grep eth1
dhcp-conn           10e01b13-ad6f-4c34-81b4-c3203bf50c7c  ethernet  eth1   
[root@serverc <sub>]# uuidgen 
770c3835-3877-453e-b47d-7a3480b1bafd
[root@serverc </sub>]# echo 770c3835-3877-453e-b47d-7a3480b1bafd | \
> sed -e 's/-//g' -e 's/\(..\)/:\1/g' -e 's/^://'
77:0c:38:35:38:77:45:3e:b4:7d:7a:34:80:b1:ba:fd
[root@serverc <sub>]# nmcli connection modify dhcp-conn ipv6.dhcp-duid '77:0c:38:35:38:77:45:3e:b4:7d:7a:34:80:b1:ba:fd' ipv6.method auto
[root@serverc </sub>]# nmcli connection up dhcp-conn      

4.1 編輯host_vars/serverc.lab.example.com來定義serverc的network_connections變量。使接口動态擷取IPv4和IPv6位址。

在host_vars/serverc.lab.example.com的執行個體中檔案中包含以下變量内容。

[student@workstation host_vars]$ vim serverc.lab.example.com
---
network_connections:

  # Create the ethernet connection
  - name: dhcp-conn
    type: ethernet
    interface_name: eth1
    state: up
    ip:
      dhcp4: yes
      auto6: yes      

4.2 在config-network.yml中修改hosts指令。playbook使用ansible清單檔案中的servers組包含的serverc。

4.2.1 先來看下這個inventory中的主機配置。

[student@workstation cr-network]$ cat inventory 
[control_node]
workstation.lab.example.com

[master_dns]
servera.lab.example.com

[caching_dns]
serverb.lab.example.com

[servers]
servera.lab.example.com
serverb.lab.example.com
serverc.lab.example.com
serverd.lab.example.com      

4.2.2 生成的config-network.yml應包含以下内容。

[student@workstation cr-network]$ vim config-network.yml
---

- name: Configure network interface
  hosts: servers
  become: true

  roles:
    - rhel-system-roles.network      

4.3 運作playbook來配置serverc的第二個網絡接口。

[student@workstation cr-network]$ ansible-playbook config-network.yml      

4.4 确認在serverc上設定了IPv4和IPv6位址。IPv6位址将從DHCP伺服器提供的動态池中選擇,并且在您的系統上可能與以下示例不同。

[root@serverc ~]# ip addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:01:fa:0c brd ff:ff:ff:ff:ff:ff
    inet 192.168.62.12/24 brd 192.168.62.255 scope global dynamic noprefixroute eth1
       valid_lft 418sec preferred_lft 418sec
    inet6 fc62:5265:6448:6174::60/128 scope global dynamic noprefixroute 
       valid_lft 421sec preferred_lft 196sec
    inet6 fe80::2fd0:b7cd:c5c7:7c50/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever      

4.5 擷取serverc的機器ID,以便可以配置DHCPv6伺服器,使其始終為該主機提供相同的IPv6位址。在servera上,通過檢查DHCPv6伺服器的日志來擷取serverc的DUID。

[root@servera ~]# journalctl -u dhcpd6.service | grep duid
May 18 15:13:51 servera.lab.example.com dhcpd[26740]: Reply NA: address fc62:5265:6448:6174::60 to client with duid 00:04:d0:04:6b:df:ee:fe:39:6a:a4:f9:72:a7:d4:4a:65:48 iaid = 713252315 valid for 600 seconds      

注意:這次輸出的IPv6位址是DHCPv6伺服器在上步驟運作playbook中配置設定給serverc的位址。

4.6 編輯/etc/dhcp/dhcpd6.conf檔案,在檔案末尾添加一個主機部分,将fc62:5265:6448:6174::c位址與在上一步找到的DUID相關聯。

authoritative;

subnet6 fc62:5265:6448:6174::/64 {
  range6 fc62:5265:6448:6174::20 fc62:5265:6448:6174::60;
  option dhcp6.name-servers fc62:5265:6448:6174::b;
  option dhcp6.domain-search "pvt.example.net", "lab.example.com", "example.com";
  default-lease-time 600;
  max-lease-time 7200;
}

host serverc {
  host-identifier option
    dhcp6.client-id 00:04:d0:04:6b:df:ee:fe:39:6a:a4:f9:72:a7:d4:4a:65:48;
  fixed-address6 fc62:5265:6448:6174::c;
}      
[root@servera ~]# dhcpd -t -6      
[root@servera ~]# systemctl restart dhcpd6      
[root@serverc <sub>]# nmcli connection down dhcp-conn 
[root@serverc </sub>]# nmcli connection up dhcp-conn 
[root@serverc ~]# ip -6 addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fc62:5265:6448:6174::c/128 scope global dynamic noprefixroute 
       valid_lft 595sec preferred_lft 370sec
    inet6 fe80::2fd0:b7cd:c5c7:7c50/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever      

繼續閱讀