想把树莓派当作路由器用,eth1(USB网卡)连接外网,eth0跟wlan0则是内网,想把后两者桥接起来,但是每一次启动都只有eth0加进了桥接
问题
无法通过修改/etc/network/interfaces
正常桥接wlan0
和eth0
,系统启动后只有eth0
加入了br0
,而wlan0
没有加入。查看syslog发现如下输出
1
| networking[281]: Configuring network interfaces...can't add wlan0 to bridge br0: Operation not supported
|
上网查得Bridging wlan0 to eth0,里面提到,要桥接两者是不可能的。
但同时又搜到Raspberry PI 3 MODEL B - Wireless Bridge to ethernet,里面提到,需要输入命令
1
| iw dev wlan0 set 4addr on
|
但需要网卡的支持,而树莓派3B+板载无线网卡是不支持的。
附上interfaces部分配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| auto lo iface lo inet loopback iface eth0 inet manual iface wlan0 inet manual auto br0 iface br0 inet static address 192.168.1.1 netmask 255.255.255.0 metric 51 bridge_ports eth0 wlan0 bridge_stp on
|
尝试一
在开机后(此时eth0已加到br0)手动输入
1
| sudo brctl addif br0 wlan0
|
没有像网上别人提到的报错,而且无线网卡成功加入桥接。嗯,此处应该有一串问号。
加入桥接后查syslog,发觉出现如下输出
1 2 3 4 5
| [ 355.443955] device wlan0 entered promiscuous mode [ 355.444078] br0: port 2(wlan0) entered listening state [ 355.444121] br0: port 2(wlan0) entered listening state [ 370.467574] br0: port 2(wlan0) entered learning state [ 385.507531] br0: port 2(wlan0) entered forwarding state
|
故寻思或许是要提前开启promiscuous模式,故配置改为
1 2 3 4 5 6 7
| iface br0 inet static address 192.168.1.1 netmask 255.255.255.0 metric 51 pre-up ip link set wlan0 promisc on bridge_ports eth0 wlan0 bridge_stp on
|
重启,发觉还是失败,有意思的是,明明我设定的是pre-up
,但出错信息会出现在开启promiscuous模式的提示信息之前。
尝试二
修改interfaces
1 2 3 4 5 6 7
| iface br0 inet static address 192.168.1.1 netmask 255.255.255.0 metric 51 bridge_ports eth0 post-up brctl addif br0 wlan0 bridge_stp on
|
重启,仍是失败,而且那条networking出错信息在br0启动信息前边,说好的post-up
呢?
尝试三
在开机之后,wlan0还没有加入桥接的情况下,执行
1
| sudo service networking restart
|
wlan0成功加入网桥,syslog输出如下
1 2 3
| [ 429.555486] device wlan0 entered promiscuous mode [ 429.566743] br0: port 2(wlan0) entered forwarding state [ 429.566824] br0: port 2(wlan0) entered forwarding state
|
到底是怎么一回事。
最终结果
去翻看hostapd.conf是发觉没有开bridge=br0
选项,开启后,成功了。。。