使用树莓派将WiFi中继为有线网络

hamster 2021-04-14 PM 157℃ 0条

因为自己的笔记本电脑无线网卡型号旧性能渣,所以一直在考虑购买一个USB无线网卡。想起来手上有一块树莓派4B,考虑用树莓派将无线网络中继为有线网络供笔记本电脑连接,也剩下的买网卡的花销。一开始按照网上的中文教程进行了配置,结果发现这些教程都有问题,最后参考了这篇英文教程实现了我的目标。下面是具体操作步骤,这里假设我们已经配置好了WiFi连接。

安装DNSmasq

通过apt安装

sudo apt-get install dnsmasq

允许开机自动运行

sudo systemctl enable dnsmasq

配置静态IP

在配置文件/etc/dhcpcd.conf中添加以下内容,将以太网接口的IP设置为静态地址192.168.31.1

interface eth0
static ip_address=192.168.31.1/24
static routers=192.168.31.0

重启DHCP客户端并允许开机自动运行

sudo systemctl restart dhcpcd
sudo systemctl enable dhcpcd

配置DHCP服务器

编辑DNSmasq配置文件/etc/dnsmasq.conf,为以太网接口配置DHCP和DNS服务器

interface=eth0
except-interface=lo,wlan0
listen-address=127.0.0.1,192.168.31.1
dhcp-range=192.168.31.100,192.168.31.200,12h
server=114.114.114.114

这里server对应上游DNS服务器的地址,可以根据实际情况设置,dhcp-range是DHCP服务器给客户端分配IP地址的范围。完成配置后,重启DNSmasq

sudo systemctl restart dnsmasq

如果没有问题的话,此时用网线连接树莓派和笔记本电脑,树莓派的以太网接口的IP地址会变成192.168.31.1,而笔记本电脑可以获得IP地址192.168.31.x

以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::a1f5:7bc8:67f2:abc0%14
IPv4 地址 . . . . . . . . . . . . : 192.168.31.113
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.31.1

设置流量转发

最后还需要进行设置,把以太网的数据包转发给WiFi。启用IP转发

sudo sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf

设置转发规则

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE  
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

此时,你会发现,关闭笔记本电脑的WiFi后,笔记本电脑还可以通过以太网接口上网!

最后,还需要保存上面的iptables规则,这样系统重启后转发规则也不会丢失。切换到root用户,把iptables规则保存到文件中

iptables-save > /etc/iptables.up.rules

添加脚本文件,每次开机自动读取并载入iptables规则

vim /etc/network/if-pre-up.d/iptables

写入下面的内容

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules

给脚本文件添加执行权限

chmod +x /etc/network/if-pre-up.d/iptables

重启树莓派后,笔记本电脑仍然可以正常上网。

标签: 树莓派, DNSmasq

非特殊说明,本博所有文章均为博主原创。

评论啦~