linux-运维进阶-18 DHCP动态管理主机地址

linux-运维进阶-18 DHCP动态管理主机地址

配置实验环境

有Test和client两台虚拟机,Test用作服务器,client用作客户端,客户端的ip由服务器分配而来。举个栗子,就是你连上了别人家wifi后,那么他家的路由器会给你的电脑或者手机分配一个ip,这样你的电脑或手机才能上网。

做实验之前,最好把用过的虚拟机恢复到比较干净的快照,或者重新装两台虚拟机。例如我的虚拟机Test在前面的章节中,就改了网卡ip,至今它的ens33网卡还有192.168.141.12 、13、14、15多个ip呢,而且ens37我们之前也配置过静态ip,这样会影响本实验的观察,因此我是恢复到之前改网卡配置之前的快照后再进行下面的实验的。

Server硬件配置

Client硬件配置

VMware Workstation Pro 软件设置

在软件上找到“编辑”->“虚拟网络编辑器”->“更改设置”,做如下图的设置

注意:ip不用改,例如我的VMnet1的ip是192.168.23.0网段,VMnet8的ip是192.168.141.0网段,那就让它保持原样,不用去改。

下图中,如图选择即可。注意,不要勾选“使用本地DHCP服务将ip分配给虚拟机”,如果你勾选了,那分配ip给client的就不是Test这台服务器,而是VMware Workstation Pro软件分配的了。

两台虚拟机开机,开始配置。

Test配置DHCP服务

配置网络

Test中能上网的网卡(NAT模式的网卡,也就是网络适配器1,也就是ens33)不用管,给新增的网卡(仅主机模式的网卡,也就是网络适配器2,也就是ens37)配置一个跟默认网卡不同网段的固定IP,此处以网段192.168.10.0/24为例。

[root@localhost ~]# nmcli connection add con-name ens37 ifname ens37 type ethernet autoconnect yes ipv4.method manual ipv4.addresses 192.168.10.254/24
Connection 'ens37' (cae18d83-b6d8-4945-b704-aaf9b918ef04) successfully added.
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:9b:23:d9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.141.173/24 brd 192.168.141.255 scope global noprefixroute dynamic ens33
       valid_lft 1798sec preferred_lft 1798sec
    inet6 fe80::be8c:1227:c5b2:e66d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:9b:23:e3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.254/24 brd 192.168.10.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::81bc:c746:2ead:eb30/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 
可以看到,ens37的ip已经变成了192.168.10.254/24

安装dhcp服务

[root@localhost ~]# yum install dhcp -y

查看参考示例

[root@localhost ~]# cat /usr/share/doc/dhcp*/dhcpd.conf.example | grep -v "^$" | grep -v "#"
参数作用
ddns-update-style [类型]定义DNS服务动态更新的类型,类型包括none(不支持动态更新)、interim(互动更新模式)与ad-hoc(特殊更新模式)
[allow | ignore] client-updates允许/忽略客户端更新DNS记录
default-lease-time [21600]默认超时时间
max-lease-time [43200]最大超时时间
option domain-name-servers [8.8.8.8]定义DNS服务器地址
option domain-name [“domain.org”]定义DNS域名
range定义用于分配的IP地址池
option subnet-mask定义客户端的子网掩码
option routers定义客户端的网关地址
broadcase-address[广播地址]定义客户端的广播地址
ntp-server[IP地址]定义客户端的网络时间服务器(NTP)
nis-servers[IP地址]定义客户端的NIS域服务器的地址
Hardware[网卡物理地址]指定网卡接口的类型与MAC地址
server-name[主机名]向DHCP客户端通知DHCP服务器的主机名
fixed-address[IP地址]将某个固定的IP地址分配给指定主机
time-offset[偏移误差]指定客户端与格林尼治时间的偏移差

配置dhcp服务

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0{
range 192.168.10.50 192.168.10.150;
option subnet-mask 255.255.255.0;
option routers 192.168.10.254;
option domain-name "feng.io";
option domain-name-servers 8.8.8.8;
default-lease-time 21600;
default-lease-time 43200;
}     

保存退出             

PS:如果要将某个固定的IP分配给指定的主机,需要在主配置文件追加如下(实际上是将MAC地址和IP做了一个映射):

host subnet1
{
        hardware ethernet 00:0c:29:66:3d:fd;  #机器的mac地址
        fixed-address 192.168.10.88;          #提供的独立IP

}

参数作用

参数解析
ddns-update-style none;设置DNS服务不自动进行动态更新
ignore client-updates;忽略客户端更新DNS记录
subnet 192.168.1.0 netmask 255.255. 255.0作用域为192.168.1.0/24网段
range 192.168.1.50 192.168.1.150;IP地址池为192.168.1.50-150(约100个IP地址)
option subnet-mask 255.255.255.0;定义客户端默认的子网掩码
option routers 192.168.1.1;定义客户端的网关地址
option domain-name “test.com”;定义默认的搜索域
option domain-name-servers 192.168. 1.1;定义客户端的DNS地址
default-lease-time 21600;定义默认租约时间(单位:秒)
max-lease-time 43200;定义最大预约时间(单位:秒)
}结束符

启动dhcp服务

[root@localhost ~]# firewall-cmd --add-service=dhcp --permanent 
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@localhost ~]# 

client客户端设置成自动获取ip(默认就是),测试

[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip add

可以看到,client获取到的ip是192.168.10.50/24,恰恰是我们IP地址池为192.168.1.50-150(约100个IP地址)的第一个地址,说明我们的DHCP服务配置成功了。

这时,我们试试在Test上关掉DHCP服务

Test上:

[root@localhost ~]#  systemctl stop dhcpd
[root@localhost ~]# 

client上:

[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip add

可以看到,一旦Tset上面的DHCP服务关掉了,那么client重启网络服务就会直接报错,再次查看其ip发现,它连IP地址都没了,只能看到其物理地址(Mac地址),上图中我的Mac地址就是00:0c:29:98:66:4e。

接下来,我们把它的ens33网卡的Mac地址记下来,加入到Test的DHCP配置中(Mac地址这么长不要敲错了哈,那个冒号:是英文的冒号,容易敲错):

Test上:

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0{
range 192.168.10.50 192.168.10.150;
option subnet-mask 255.255.255.0;
option routers 192.168.10.254;
option domain-name "feng.io";
option domain-name-servers 8.8.8.8;
default-lease-time 21600;
default-lease-time 43200;
}
host subnet1
{
        hardware ethernet 00:0c:29:98:66:4e;  #机器的mac地址
        fixed-address 192.168.10.88;          #提供的独立IP

} 
保存退出,重启DHCP服务
[root@localhost ~]#  systemctl restart dhcpd
[root@localhost ~]# 

client上:

[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip add

​ 可以看到,它的ip已经变成了我们指定分配给它的192.168.10.88/24了,配置成功!

​ 实验到此结束!

虚拟机和虚拟网卡的通信原理

host-only(仅主机)模式与VMnet1虚拟网卡进行通信
NAT模式与VMnet8虚拟网卡进行通信
桥接使用的是你机器的真实网卡进行上网

1.仅主机模式

此模式下,虚拟机与VMnet1虚拟网卡进行通信,咱们做一下测试:

在虚拟网络编辑器中,我们将VMnet1如下图设置,给它设置一个DHCP地址池192.168.23.50-150。这样一来,我们的虚拟机网络适配器但凡是使用仅主机模式且以DHCP方式获取ip的,就能从这个地址池中获取到ip。

这样设置以后,只要你的虚拟机网卡是仅主机模式且网卡配置文件里设置的ip获取方式是DHCP(默认就是DHCP),则其ip就会从上图中那个DHCP地址池中选取。例如,我新安装的一台虚拟机,网卡设置为仅主机模式后,打开后其ip如下图:

可以看到它的ip为192.168.23.50,恰恰是上述地址池的第一个ip。

2.NAT模式

​ 此模式下,虚拟机与VMnet8虚拟网卡进行通信,咱们做一下测试:

在虚拟网络编辑器中,我们将VMnet8如下图设置,给它设置一个DHCP地址池192.168.100.50-150。这样一来,我们的虚拟机网络适配器但凡是使用NAT模式且以DHCP方式获取ip的,就能从这个地址池中获取到ip。

这样设置以后,只要你的虚拟机网卡是NAT模式且网卡配置文件里设置的ip获取方式是DHCP(默认就是DHCP),则其ip就会从上图中那个DHCP地址池中选取。例如,刚刚那台虚拟机,网卡设置为NAT模式后,打开后其ip如下图:

可以看到它的ip为192.168.100.50,恰恰是上述地址池的第一个ip。

3.桥接模式

桥接模式使用的是你机器的真实网卡进行上网,也就是说,如果你的虚拟机网络适配器设置为桥接模式的话,则相当于虚拟机与你的电脑物理主机桥接,桥指的是网桥,就是交换机。所以,桥接模式下,你的虚拟机和你的物理机是在同一个网段的,如下图:

​ 我们将刚刚那台虚拟机设置为桥接模式,查看其ip:

可以看到它的ip为192.168.1.105,那么我们看看我的物理机ip:

可以看到我的物理机ip是192.168.1.108,与之确实是同一个网段的。

我们常用的是NAT模式的虚拟机,所以我们按刚刚的NAT那样设置就好。

本篇到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值