前言
因为软路由,需要玩下DHCP,看了下开源DHCP方案isc-dhcp-server还不错,遂拿这个试下
安装
环境
root@localhost:~# cat /etc/issue
Ubuntu 16.04.6 LTS \n \l
安装
apt install isc-dhcp-server dhcpdump
配置
安装完后主要有2个配置文件
/etc/default/isc-dhcp-server
/etc/dhcp/dhcpd.conf
配置DHCP Server
配置监听接口
vim /etc/default/isc-dhcp-server
INTERFACES="eth2"
配置主要配置
vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
option domain-name "zq.local";
option domain-name-servers 8.8.8.8, 4.4.4.4;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
option subnet-mask 255.255.0.0;
option broadcast-address 10.241.255.255;
option routers 10.241.255.254;
subnet 10.241.0.0 netmask 255.255.0.0 {
range 10.241.100.10 10.241.100.100;
range 10.241.100.150 10.241.100.200;
}
上面需要注意,DHCP server所监听网卡的IP地址要和配置的subnet在一个网段里,否则启动不起来
启动
service isc-dhcp-server restart
查看启动状态
root@localhost:~# service isc-dhcp-server status
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-08-16 19:44:20 CST; 1s ago
Docs: man:dhcpd(8)
Main PID: 1924 (dhcpd)
Tasks: 1
Memory: 9.0M
CPU: 14ms
CGroup: /system.slice/isc-dhcp-server.service
└─1924 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf eth2
Aug 16 19:44:20 localhost dhcpd[1924]: All rights reserved.
Aug 16 19:44:20 localhost dhcpd[1924]: For info, please visit https://www.isc.org/software/dhcp/
Aug 16 19:44:20 localhost dhcpd[1924]: Wrote 1 leases to leases file.
Aug 16 19:44:20 localhost dhcpd[1924]: Listening on LPF/eth2/00:50:56:ab:36:16/10.241.0.0/16
Aug 16 19:44:20 localhost sh[1924]: Listening on LPF/eth2/00:50:56:ab:36:16/10.241.0.0/16
Aug 16 19:44:20 localhost sh[1924]: Sending on LPF/eth2/00:50:56:ab:36:16/10.241.0.0/16
Aug 16 19:44:20 localhost sh[1924]: Sending on Socket/fallback/fallback-net
Aug 16 19:44:20 localhost dhcpd[1924]: Sending on LPF/eth2/00:50:56:ab:36:16/10.241.0.0/16
Aug 16 19:44:20 localhost dhcpd[1924]: Sending on Socket/fallback/fallback-net
Aug 16 19:44:20 localhost dhcpd[1924]: Server starting service.
上面就是成功的,Actice显示failed,请按具体提示解决问题,还可到/var/log/syslog下去看详情错误信息
配置DHCP Client & 测试
大部分操作系统自带dhcp client,修改网卡配置为DHCP启动即可
vim /etc/network/interfaces.d/eth2 (我是eth2和dhcp server连接的,请各位按自己需求修改)
auto eth2
iface eth2 inet dhcp
方便观察变化,先down掉eth2
root@localhost:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
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: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:50:56:ab:1a:3d brd ff:ff:ff:ff:ff:ff
再启动eth2
root@localhost:~# ifup eth2
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth2/00:50:56:ab:1a:3d
Sending on LPF/eth2/00:50:56:ab:1a:3d
Sending on Socket/fallback
DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 3 (xid=0x513dab2e)
DHCPREQUEST of 10.241.100.10 on eth2 to 255.255.255.255 port 67 (xid=0x2eab3d51)
DHCPOFFER of 10.241.100.10 from 10.241.4.6
DHCPACK of 10.241.100.10 from 10.241.4.6
bound to 10.241.100.10 -- renewal in 241 seconds.
可见经过discover offer request ack获取到了一个10.241.100.10的IP地址
查看dhcp server端分配文件,/var/lib/dhcp/dhcpd.leases
root@localhost:~# cat /var/lib/dhcp/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.3.3
lease 10.241.100.10 {
starts 0 2020/08/16 11:58:25;
ends 0 2020/08/16 12:08:25;
cltt 0 2020/08/16 11:58:25;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:50:56:ab:1a:3d;
client-hostname "localhost";
}
可见,分给了mac地址是00:50:56:ab:1a:3d的,同时hostname也推了过来。
停止网卡
root@localhost:~# ifdown eth2
Killed old client process
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth2/00:50:56:ab:1a:3d
Sending on LPF/eth2/00:50:56:ab:1a:3d
Sending on Socket/fallback
DHCPRELEASE on eth2 to 10.241.4.6 port 67 (xid=0x40090583)
停止时,可见发送了一个release的请求,来释放IP
下发路由测试
dhcp server也可下发路由配置,在dhcpd.conf配置如下
option classless-routes code 121 = array of unsigned integer 8;
option classless-routes 24,172,16,0,10,241,0,254,
24,172,16,1,10,241,1,254,
24,172,16,2,10,241,2,254,
24,172,16,3,10,241,3,254,
24,172,16,4,10,241,4,254,
24,172,16,5,10,241,5,254,
24,172,16,6,10,241,6,254,
24,172,16,7,10,241,7,254,
24,172,16,8,10,241,8,254,
24,172,16,9,10,241,9,254;
重启dhcp server
service isc-dhcp-server restart
重启dhcp client
root@localhost:~# ifup eth2
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth2/00:50:56:ab:1a:3d
Sending on LPF/eth2/00:50:56:ab:1a:3d
Sending on Socket/fallback
DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 3 (xid=0xbb593e37)
DHCPREQUEST of 10.241.100.10 on eth2 to 255.255.255.255 port 67 (xid=0x373e59bb)
DHCPOFFER of 10.241.100.10 from 10.241.4.6
DHCPACK of 10.241.100.10 from 10.241.4.6
bound to 10.241.100.10 -- renewal in 279 seconds.
ip route查看路由
root@localhost:~# ip route
default via 101.251.217.9 dev eth1
10.10.0.0/18 dev eth0 proto kernel scope link src 10.10.0.7
10.241.0.0/16 dev eth2 proto kernel scope link src 10.241.100.10
101.251.217.8/29 dev eth1 proto kernel scope link src 101.251.217.13
172.16.0.0/24 via 10.241.0.254 dev eth2
172.16.1.0/24 via 10.241.1.254 dev eth2
172.16.2.0/24 via 10.241.2.254 dev eth2
172.16.3.0/24 via 10.241.3.254 dev eth2
172.16.4.0/24 via 10.241.4.254 dev eth2
172.16.5.0/24 via 10.241.5.254 dev eth2
172.16.6.0/24 via 10.241.6.254 dev eth2
172.16.7.0/24 via 10.241.7.254 dev eth2
172.16.8.0/24 via 10.241.8.254 dev eth2
172.16.9.0/24 via 10.241.9.254 dev eth2
可见,路由也已经正确下发下来了
来源:oschina
链接:https://my.oschina.net/u/914655/blog/4497933