ubuntu的dhcp server配置有好多,最近我测试用了两个,安装配置遇到一下问题记录如下:
1.isc-dhcp-server
安装:
sudo apt-get install isc-dhcp-server
配置:/etc/dhcp/dhcp.conf
# A slightly different configuration for an internal subnet.
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.0.2 172.16.0.240;
option domain-name-servers 172.16.1.120, 114.114.114.114;
option routers 172.16.1.120;
option broadcast-address 172.16.1.120;
default-lease-time 600;
max-lease-time 7200;
}
注意这个配置,第一次使用这个配置的时候,大意了,broadcast-address没看清楚,以为是网关地址,其实broadcast-address是广播地址,所以这么配置下去,dhcp的client侧的广播地址就变成了172.16.1.120,导致本设备发出的广播包,其他设备收不到。因为组网中设备默认的广播地址172.16.255.255,而本机的广播地址变成了172.16.1.120,所以导致,广播包无法正常收发,设备的只接表现是 arp列表出现:arp incomplete,应为本机发的arp报文,对端没有回应。
所以正确的配置应该是:
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.0.2 172.16.0.240;
option domain-name-servers 172.16.1.120, 114.114.114.114;
option routers 172.16.1.120;
option broadcast-address 172.16.255.255;
default-lease-time 600;
max-lease-time 7200;
}
或者不配置option broadcast-address,使用默认值。
2.Dnsmasq
Dnsmasq安装要先卸载设备自带的dnsmasq-base然后安装完全版的snamasq
apt-get remove dnsmasq-base
apt-get install dnsmasq
来个懒人配置,
/etc/dnsmasq.conf
bind-interfaces
listen-address=127.0.0.1,172.16.1.120
interface=br0
log-facility=/var/log/dnsmasq.log
# 异步log,缓解阻塞。
log-async=20
no-hosts
# 如果只使用dhcp服务,完全禁止DNS功能,则可将设置为0。
#port=0
dhcp-range=172.16.1.1,172.16.1.100,255.255.0.0,12h
#dhcp-option=3,172.16.1.120,114,114,114,114
这里我没有用 dns功能所以dns配置配置 ,给关了(no-hosts)
ubuntu在运行的时候会报错,地址被或者端口被占用
Address already is use
原因呢,53端口被其他进行占用了,干掉他就好了
netstat -anlp |grep 53
原来是named进程在搞事情,在启动脚本里面干掉它。
/etc/init.d/dnsmasq里面找到start,在开头的位置加入 killall -9 named就可以了。