赞
踩
现在的无线路由器非常便宜,所以实际上除了有特殊的要求比如搭建VPN之类的需求处,没有人会使用树莓派或者其它安装了Linux系统的主机去配置成无线路由器。有一些老式设备,没有无线网卡也没有USB接口,所以不能简单的通过USB接口扩展一个无线网卡,只能通过有线网卡上网。但无线路由器通常被我们安装在不方便连接网线的地方,所以我们有时候会需要共享无线网络或者说是将无线网络转换成有线的以太网络。如下图:
+- RPi -------+ +- old pc1----+
| Eth0+----------+ Eth0 |
+- Router ----+ | DHCP server| | 10.0.0.10 |
| Firewall | | 10.0.0.1 | | |
(Internet)---WAN-+ DHCP server +-WLAN AP-+-))) (((-+ WLAN | +-------------+
| 192.168.3.1 | | |
+-------------+ | |
| |
| |
+-------------+
相当于给老式设备添加了一块无线网卡。
归结起来需要以下4步:
本文档描述的方法在:最新树莓派OS bullseys + 树莓派 zero W上测试通过过。
sudo apt install dnsmasq
sudo apt install -y netfilter-persistent iptables-persistent
在这个配置里树莓派将无线网络和以太网网络之间提供路由功能,接入无线网络,并将无线网络转换成有线网络,或者说将无线网络分享给有线客户端,为有限客户端提供互联网访问。
树莓派为有线网络运行一个DHCP服务器;树莓派的有线网卡eth0需要配置成静态IP 。树莓派这时是做为这个新的网络上的路由器,一般都会配置成这个IP子网里的第一个IP地址:10.0.0.1。
我们需要修改配置文件dhcpcd:
sudo vi /etc/dhcpcd.conf
在文件末尾添加以下内容:
interface eth0
static ip_address=10.0.0.1/24
配置树莓派让有线客户端可以通过无线网络访问主网络上的计算机或者访问互联网。我们需要启用IP转发功能(允许流量在树莓派中从一个网络流向另一个网络),用以下命令创建一个文件:
sudo vi /etc/sysctl.d/routed-ap.conf
文件内容如下(开启IPv4的转发功能)):
# Enable IPv4 routing
net.ipv4.ip_forward=1
开启IP转发功能后,因为我们不能修改主路由器配置,所以为了让10网段的有线终端可以访问外网,树莓派需要开启IP“伪装”功能,把有线终端的IP地址替换为自己在无线网络上的IP地址192.168.3.xx。
我们需要在树莓派上开启IP伪装,既NAT功能:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
保存并通过netfilter-persistent服务在系统启动时自动启用这个IP伪装功能
sudo netfilter-persistent save
注意,这个NAT规则,是保存到目录/etc/iptables/ 中的。
前面安装的dnsmasq提供了DHCP和DNS服务, 默认的配置文件模板很大,但我们其实只需要其中很小的功能,所以这里我们选择从空文件开始添加配置,这样还更容易一些。
备份原始的配置模板文件,并新建一个空的配置文件:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo vi /etc/dnsmasq.conf
把以下内容添加到文件中并保存:
interface=eth0 # Listening interface
dhcp-range=10.0.0.2,10.0.0.20,255.255.255.0,24h
# Pool of IP addresses served via DHCP
domain=eth0 # Local wireless DNS domain
address=/gw.eth0/10.0.0.1
# Alias for this router
树莓派会在10.0.0.2和之间10.0.0.20选择一个IP为有线终端端提供IP地址,租用时间为 24 小时。
重启树莓派,并测试有线接入点是否已经可用。
sudo systemctl reboot
树莓派重新启动后,使用有线客户端就会自动分配到一个10网段的IP地址。也可以正常的访问外网了。
我们的树莓派有二个以太网口,如下图所示,所以更好的和家用路由器更一至的方案是:
拓扑图如下:
+- RPi -------+ +- old pc1----+
| Eth0+----------+ Eth0 |
+- Router ----+ | DHCP server| | 10.0.0.10 |
| Firewall | | 10.0.0.1 | | |
(Internet)---WAN-+ DHCP server +-WLAN AP-+-))) (((-+ WLAN | +-------------+
| 192.168.3.1 | | |
+-------------+ | | +- old pc2----+
| Eth1+----------+ Eth0 |
| | | 10.0.0.4 |
+-------------+ | |
+-------------+
ls -l /etc/systemd/network/br*
-rw-r--r-- 1 root root 40 May 22 21:19 /etc/systemd/network/br0-menber-eth0.network
-rw-r--r-- 1 root root 40 May 22 21:19 /etc/systemd/network/br0-menber-eth1.network
-rw-r--r-- 1 root root 30 May 22 21:19 /etc/systemd/network/bridge-br0.netdev
文件内容分别为:
cat /etc/systemd/network/br0-menber-eth0.network [Match] Name=eth0 [Network] Bridge=br0 cat /etc/systemd/network/br0-menber-eth1.network [Match] Name=eth1 [Network] Bridge=br0 cat /etc/systemd/network/bridge-br0.netdev [NetDev] Name=br0 Kind=bridge
sudo systemctl enable systemd-networkd
把以下内容加入/etc/dhcpcd.conf文件中
denyinterface eth0
denyinterface eth1
interface br0
static ip_address=10.0.0.1/24
把以下内容加入到/etc/dnsmasq.conf文件中
cat /etc/dnsmasq.conf
interface=br0 # Listening interface
dhcp-range=10.0.0.2,10.0.0.10,255.255.255.0,24h
# Pool of IP addresses served via DHCP
domain=br0 # Local wireless DNS domain
address=/gw.br0/10.0.0.1
# Alias for this router
重启后就可以升级到高阶网桥方案。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。