有些地方网线不方便弄,于是将树莓派的 wifi
模块网络转到以太网口形成有线网络(有些设备只能有线上网),自身当做上级路由来提供上网服务。当然反过来也是可以的。
网络结构走向是这样的 :
光猫拨号上网 => 通过有线连接
=> 路由器(形成局域网A) => 通过wifi 连接
=> 树莓派 (形成局域网B)= > 通过以太网口有线连接上网
连接到路由器的设备全部在局域网A下,通过树莓派以太网口连接的设备全部在局域网B下。
注意:以下步骤在 Ubuntu-Server 18.04
系统上操作,系统安装请看 树莓派安装官方Ubuntu-Server版系统
一、安装网桥配置工具
apt install -y bridge-utils
二、创建临时网桥
-
查看网口驱动
ifconfig -a
一般有线网口驱动名为eth0
,无线网口驱动名为wlan0
-
新增网桥,一个逻辑网,一个
VLAN
,br0
为VLAN
名
brctl addbr br0
-
让
eth0
成为br0
的一个interface
brctl addif br0 eth0
注意:这里的eth0
是以太网口驱动名,如果想换成wifi
输出,这里改成对应wifi
的驱动名。 -
给
br0
虚拟网卡配置IP:192.168.1.1
,实现远程管理网桥,192.168.1.0/24
网段内主机都可telnet
到网桥对其配置
ifconfig br0 192.168.1.1 up
-
清除
interface
的ip
ifconfig eth0 0.0.0.0 up
网桥的每个物理网卡作为一个端口,运行于混杂模式,且在链路层工作,所以不需要IP
-
查看网桥
brctl show
三、配置系统流量转发
有好几种方式都可以完成,这里我只写一种。
-
打开内核转发
vi /etc/sysctl.conf
注释去掉net.ipv4.ip_forward=1
保存sysctl -p
-
如果我们中继的是运营商的
wifi
,那么可能会获得一个公网的IP
,这种情况下想让内网的所有设备共享这一个公网IP
,需要在wlan0
网口启用nat
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
注意:如果是用以太网卡作为输入,这里将wlan0
改为eth0
四、安装 dns
服务器
作为一台准路由器,插在上面的设备最好能够自动获取IP
-
安装
dnsmasq
apt install -y dnsmasq
-
配置
dnsmasq
vi /etc/dnsmasq.conf
增加一行dhcp-range=192.168.1.50,192.168.1.150,255.255.255.0,12h
这句配置的意思是 :
dhcp
自动获取ip
的地址为192.168.1.50
到192.168.1.150
之间;
子网掩码为255.255.255.0
;
ip
续租期为12
小时
启动服务service dnsmasq start
这时候网桥已经可以工作了,但是重启系统后,之前配置的临时网桥就没有了。
五、配置开机自动执行网桥配置脚本
- 创建网桥配置脚本
vi bridge-init.sh
输入以下内容:
#!/bin/sh
set -m
brctl addbr br0
brctl addif br0 eth0
ifconfig br0 192.168.1.1 up
ifconfig eth0 0.0.0.0 up
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
service dnsmasq start
- 设置脚本开机启动
cp bridge-init.sh /etc/init.d
chmod 755 /etc/init.d/bridge-init.sh
cd /etc/init.d
update-rc.d bridge-init.sh defaults 95
- 卸载开机启动脚本
cd /etc/init.d
update-rc.d -f bridge-init.sh
到这里就全部完成了,此时树莓派每次上电都会自动启动创建一个网桥,使用 wifi
连接网络,以太网口变成下级网络的输出口,可以正常上网,也能正常访问与树莓派同级的内网设备。
评论区