最近在备考openEuler的HCIP考试,打算使用学校给的Exsi服务器进行集群实验,由于分配的交换机与外网不通,使用ict-master充当dhcp服务器,对下属的主机进行地址分配和主机名管理;同时充当ansible服务器,方便后期统一运维所有主机;同时添加外网NAT出口,让所有下属主机经过这里访问外部管理。因此记录一下搭建的一些重要过程~

0.规划拓扑图

Hostname IP
ict-master 10.0.0.1
ict-a 10.0.0.2
ict-b 10.0.0.3
ict-c 10.0.0.4
ict-d 10.0.0.5
ict-e 10.0.0.6

1.正常创建虚拟机ict-master,ict-a 安装操作系统。

注意,ict-a不要在安装时指定主机名,否则dhcpclient不会使用dhcpd下发的主机名,如已指定,可以使用echo "" > /etc/hostname来清空。

2.在ict-master上配置dhcpd服务、SNAT转发

在openEuler22.03 SP4的Server安装上,dhcpd已默认安装,只需要配置文件即可。如未安装,可以执行yum install dhcp
我们需要让10.0.0.0/24作为我们的地址池,并且由mac地址来决定给哪一台主机下发什么ip地址和hostname,因此,配置也十分简单。
注意:可以先配置子网和ict-a,验证正常工作后等后续克隆得到其他虚拟机的mac地址再进行补充。

INTERFACES="ens34";

subnet 10.0.0.0 netmask 255.255.255.0 {
        range 10.0.0.2 10.0.0.20;
        option routers 10.0.0.1; //dhcpd服务器本身的地址
        option subnet-mask 255.255.255.0;
        option domain-name-servers 8.8.8.8;
}
host ict-a {
        hardware ethernet 00:0C:29:A3:9D:7A;
        fixed-address 10.0.0.2;
        option host-name "ict-a";
}
host ict-b {
        hardware ethernet 00:0C:29:CC:61:56;
        fixed-address 10.0.0.3;
        option host-name "ict-b";
}
host ict-c {
        hardware ethernet 00:0C:29:02:CB:71;
        fixed-address 10.0.0.4;
        option host-name "ict-c";
}
host ict-d {
        hardware ethernet 00:0C:29:DF:C8:E3;
        fixed-address 10.0.0.5;
        option host-name "ict-d";
}
host ict-e {
        hardware ethernet 00:0C:29:B2:3B:AE;
        fixed-address 10.0.0.6;
        option host-name "ict-e";
}

配置完成后,将dhcpd服务设置成开机启动。

systemctl enable dhcpd --now

接着,使用iptables实现SNAT,让从机也能上网

sysctl -w net.ipv4.ip_forward=1 #打开转发功能
systemctl enable iptables --now
iptables -I FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ens37 -j SNAT --to-source 192.168.11.215 #ens37为外网网卡,--to-source是外网网卡的ip地址

验证ict-a可以正常上网后,执行service iptables save保存。

3.配置ict-a

通过配置dhcpclient的脚本,让主机自动根据dhcpd服务器更新hostname

vim /etc/dhcp/dhclient.d/set-hostname
#!/bin/sh
if [ "$new_hostname" ]; then
        hostnamectl set-hostname "$new_hostname"
        echo "$new_host_name" > /etc/hostname
fi

在openEuler中,dhclient并没有被默认添加到systemd中,所以手动添加:
注意,每个系统中dhclient安装位置、网卡名称都有所不同,请按需修改。

vim /etc/systemd/system/dhclient.service

[Unit]
Description= Enable ens34 dhclient
After=network.target
[Service]
Type=oneshoot
ExecStart=/usr/sbin/dhclient ens34
[Install]
WantedBy=default.target

systemctl daemon-reload
systemctl enable dhclient.service --now

重启,观察hostname是否被更新为dhcpd中的hostname。

3.在ict-a,ict-master上配置hosts

vim /etc/hosts
10.0.0.1 ict-master
10.0.0.2 ict-a
10.0.0.3 ict-b
10.0.0.4 ict-c
10.0.0.5 ict-d
10.0.0.6 ict-e

4.克隆虚拟机

由于没有vShapere,通过复制法克隆虚拟机
复制完成后,开机,选择“我已复制” 将得到的mac地址继续填入ict-master中的dhcpd.conf
2024-10-29T04:39:43.png

5.配置master免密登录其他主机

ssh-keygen
ssh-copy-id ict-a
····
ssh-copy-id ict-e

6.结束

对所有虚拟机打上快照,保存现在的状态 方便未来还原