「DHCP」- 使用dnsmasq搭建DHCP服务

  CREATED BY JENKINSBOT

要实现的功能

使用dnsmasq配置一个DHCP服务。

树莓派上有两张网卡,一张有线(eth0),一张无线(wlan0)。无线网卡已经连接到无线热点,能够正常访问网络。

要实现的功能就是:把笔记本和树莓派用网线连接起来,笔记本能够通过DHCP获取IP地址,并访问网络。

所以,不光使用dnsmasq搭建了DHCP服务,还实现了SNAT(路由)功能。

所使用的环境

系统环境:Debian,准确说是Raspbian,又是树莓派。

硬件信息:Raspberry Pi 3B+

网络环境:树莓派上有两张网卡,一张有线(eth0),一张无线(wlan0)。无线网卡已经连接到无线热点,能够正常访问网络。

服务信息:DHCP地址范围为172.31.252.0/24;网关地址为172.31.252.1

开始进行配置……

配置eth0接口

配置eth0网卡:

#!/bin/bash

# 这里我们使用172.16.0.0/8网段
ifconfig eth0 172.31.252.1 netmask 255.255.255.0 up

配置dnsmasq服务

在这里dnsmasq提供DHCP服务,它也提供DNS功能,但我们不使用DNS功能。

安装dnsmasq服务:

#!/bin/bash

apt-get install dnsmasq

(其实,如果没有dnsmasq也是可以的,但手动配置设置笔记本的网络,这也是可以的,但是本文是介绍dnsmasq服务的,所以不讨论这个。)

修改/etc/dnsmasq.conf文件,写入如下内容:

interface=eth0
listen-address=172.31.252.1
no-dhcp-interface=

dhcp-range=172.31.252.2,172.31.252.254,12h

重启或启动dnsmasq服务:

#!/bin/bash

# 启动服务
systemctl start dnsmasq

# 重启服务
systemctl restart dnsmasq

# 或者手动启动
dnsmasq -C /etc/dnsmasq.conf

开启SNAT功能

开启内核ip_forward功能:

#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

# 写入/etc/sysctl.conf中持久化配置
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

配置SNAT功能:

#!/bin/bash

# 172.31.252.1/24:DHCP所使用的网段
# wlan0是连接到外部网络的接口
iptables -t nat -A POSTROUTING -s 172.31.252.1/24 -o wlan0 -j MASQUERADE

最后……

至此,已经配置完成了。把你的笔记本连接到树莓派上,然后使用dhclient -v eth0就能获取IP地址了,并访问网络了。

而你的树莓派,就相当于一个小路由器了,虽然只有一个WAN口(树莓派的wlan0网口)和一个LAN口(树莓派的eth0网口)……