接上一篇 使用Linux+三层交换机做NAT路由器https://linsir.org/post/multi-vlan-Nat-Server-use-linux 在使用华为交换机S5700 或者8500系例做DHCP服务器的时候,发现二层交换机下的客户端获取地址是非常的慢,特别是第一次,达到1min左右,谷歌说可能是STP生成树协议打开时,在计算生成树的时候耗时过多,我上三层交换机看,根本就没开STP啊。不行,自建DHCP服务器试试,果然速度快多了。
# 环境
简化成:多Vlan+路由器 用户层到二层交换机,然后汇聚到核心三层交换机。 linux(CentOS 7)服务器一公网地址网卡,一张内网网卡。
# 硬件连接
三层交换机GigabitEthernet2/2/4接服务器enp7s0f1网卡
华为交换机配置:
vlan 3000
q
interface vlanif 3000
ip address 172.16.254.254 255.255.255.0
q
interface GigabitEthernet2/2/4
port link-type aceess
port default vlan 3000
linux服务器的网卡设置静态地址为172.16.254.253
最后我们再加一条默认路由,将流量转发到linux服务器接口。
ip route-static 0.0.0.0 0.0.0.0 172.16.254.253
下一跳地址就是服务器内网网卡的地址。
# DHCP Server
# dnsmasq
Dnsmasq是轻量级的dhcp+dns cache服务器。这是我配置多个vlan网段,并且设置dns缓存。 vi /etc/dnsmasq.conf
# Configuration file for dnsmasq.
no-resolv
listen-address=172.30.254.253
interface=enp7s0f1
no-dhcp-interface=enp7s0f0
bind-interfaces
#vlan 1000
dhcp-range=10.0.0.2,10.0.0.100,255.255.255.0,12h
#vlan 1001
dhcp-range=192.168.0.0,192.168.0.253,255.255.255.0,12h
dhcp-option=6,172.30.254.253,61.139.2.69
server=223.5.5.5#53
cache-size=10000
conf-dir=/etc/dnsmasq.d/*.conf
# dhcpd
dhcpd的配置也是非常简单 vi /etc/dhcpd.conf
option domain-name-servers 172.30.254.253,61.139.2.69;
option subnet-mask 255.255.255.0;
##上面是全局参数
subnet 172.30.254.0 netmask 255.255.255.0 {
}
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.150 10.0.0.250;
routers 10.0.0.254;
host macbookpro{
hardware ethernet 00:11:22:33:44:55;
fixed-address 10.0.0.1;
}
}
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.150 192.168.0.250;
}
# 路由表
上一步做好配置后,我们就做回程路由,不然数据包不能回到内网。
route add -net 10.0.0.0/24 gw 172.16.254.254 dev enp7s0f1
route add -net 192.168.0.0/24 gw 172.16.254.254 dev enp7s0f1
# 三层交换机配置
首先是全局打开dhcp
dhcp enable
dhcp server group dhcpgroup1
dhcp-server 172.16.254.253
#
interface Vlanif1000
ip address 10.0.0.254 255.255.255.0
dhcp select relay
dhcp relay server-select dhcpgroup1
interface Vlanif1001
ip address 192.168.0.254 255.255.255.0
dhcp select relay
dhcp relay server-select dhcpgroup1
# 查看地址分配情况
cat /var/lib/dnsmasq/dnsmasq.leases
# 遇到的问题
- 用户不能手动释放ip,重新获取新的地址.