最近在备考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
5.配置master免密登录其他主机
ssh-keygen
ssh-copy-id ict-a
····
ssh-copy-id ict-e
6.结束
对所有虚拟机打上快照,保存现在的状态 方便未来还原