配置前提:需要提前部署好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