奇怪的树莓派3B+无线网卡桥接现象

想把树莓派当作路由器用,eth1(USB网卡)连接外网,eth0跟wlan0则是内网,想把后两者桥接起来,但是每一次启动都只有eth0加进了桥接

问题

无法通过修改/etc/network/interfaces正常桥接wlan0eth0,系统启动后只有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选项,开启后,成功了。。。

linux下使用KVM虚拟window玩游戏(先挖坑)

今天突发奇想,在linux下使用kvm虚拟windows,借助全虚拟化,岂不是可以一边上linux一边玩windows下的游戏(好吧我承认我主要是为了游戏)咯?查了一下,让虚拟机直接调用显卡好像需要VT-d(Intel),好像我笔记本不支持。哼哼哈哈哈,我的电脑支持VT-d,这下有得玩了~

这几天应该是折腾不起了,先挖个坑。

视频:

Qemu/KVM + vfio = Virtual machine for gaming with 95% of native performance = no more dual booting

Windows Gaming with QEMU/KVM on Ubuntu Linux – AMD Radeon R9 280

文章:

Windows Gaming with QEMU/KVM on Ubuntu Linux – AMD Radeon R9 280

Windows Gaming VM – KVM / UEFI Version – HowTo

CentOS 6.3系统安装kvm虚拟机并安装Windows系统

KVM 介绍(1):简介及安装

Intel虚拟化技术-从VT-x到VT-d

Read More

校园网穿透记录

学校不拦截dns查询,尝试使用dns隧道(iodine)

结果:

可以连出去,但丢包严重,丢包率在百分之三十多,峰值带宽只有100+kB/s,延迟(从本机到隧道提供的服务器)30+ms.

PS:今晚太疯狂了

固定树莓派网卡标号

自己的树莓派上有俩无线网卡,卡1通过hostapd创建热点,卡2连接其他wifi。

若同时插着俩网卡开机,每一次开机后,网卡的标号有可能会不同,有时开机后卡1是wlan0,卡2是wlan1,有时却相反。

然而由于硬件和驱动原因,卡2不能够创建热点,而像udhcp、hostapd、interfaces的配置文件都是依靠wlanX这样来配置的。于是,为了避免开机后卡2成了wlan0,放不了热点,我每一次开机前都要先拔出卡2,等搜到卡1放出的热点后,才将卡2插进去。

难道就没有方法,在开机前,就已经固定好网卡标号的方法吗?

灵感来自那个装了Debian的移动硬盘。

当时将Debian装在了移动硬盘上,插谁电脑都能启动我的系统。然而,系统却会为曾使用过的网卡保留标号。于是,在某一天,当我发觉我插了一个无线网卡后系统显示wlan7后,我开始寻找清除的方法:

找到

/etc/udev/rules.d/70-persistent-net.rules

网上说是直接删除文件,而我只删掉那些不需要的内容。

那么要让树莓派记住,只要反其道而行就好了。

创建文件

/etc/udev/rules.d/70-persistent-net.rules

加入以下内容

1
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="01:23:45:ab:cd:ef", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

NAME即为网卡标号,可以根据意愿修改成wlan1、wlan3之类的,ATTR{address}==后面接的是设置成该网卡的mac地址。上面的内容表示为,我想将mac地址为”01:23:45:ab:cd:ef”的无线网卡设为wlan0。

实测有效。

树莓派下wifi自动重连

上午在外发现连不回去,回去后查syslog发现是wifi断掉了,手动重连后思索这怎么自动重连。

发觉网上很多都是依靠脚本实现,要么是while true,要么是crontab,都是先检测通不通,然后判断是否重连。

查syslog发觉ifplugd会在网络挂掉后执行命令,于是思索着怎样让它掉了执行重连的命令。

搜出这篇,楼下有一人给出方法,把/etc/ifplugd/action.d/ifupdown/etc/wpa_supplicant/ifupdown.sh替换。

另外,另一篇亦有人讲到该方法,并将链接指向前一篇。

暂未实测,亦未能看懂,先挖个坑。

firefox搜索框在启动时产生流量

昨天闲着无聊开wireshark,发觉开了火狐后不断有流量蹦出,指向一个地址,浏览器直接输入该IP,出现百度主页。

然而默认启动时是没有开这页面,我把注意力放在了搜索框上,我记得我设的是百度搜索,开了搜索建议,应该是这里的问题。

首选项-搜索,切换,恩,没有指向百度的流量了。