问题描述
使用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接口
# 这里我们使用172.16.0.0/8网段 ifconfig eth0 172.31.252.1 netmask 255.255.255.0 up
配置 dnsmasq 服务
在这里dnsmasq提供DHCP服务,它也提供DNS功能,但我们不使用DNS功能。
安装dnsmasq服务:
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服务:
# 启动服务 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功能:
# 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网口)……