前言
目前很多学校的校园网都是IPv6网络,但是无线部分却只支持IPv4,所以用手提电脑想上IPv6网站还要插个网线才行。我是个懒人,什么事情是能省就得省,除了折腾技术方面的东西。。。所以我想能不能用树莓派加上一个无线网卡,把无线网卡设成AP模式,再搭个网桥把无线和有线网卡桥接起来,接到AP上的电脑不但能通过网桥向学校的DHCP服务器获取到IPv4地址,还能获取到IPv6地址。说干就干,想不到一次成功,特此记录一下,以造福广大爱折腾的同胞们。
网络环境
无需认证的DHCP网络,该网络同时支持IPv4和IPv6,实际上就算不支持IPv6也是可以的,只是这个方法的优点不能完全体现而已。
树莓派配置
树莓派安装的是wheezy系统,也就是官网上推荐新手安装的那个系统。
安装软件
首先是安装bridge-utils:
sudo apt-get install bridge-utils
然后安装hostapd:
sudo apt-get install hostapd
编辑hostapd 默认配置文件
sudo vim /etc/default/hostapd
找到:
#DAEMON_CONF= ""
修改如下
DAEMON_CONF="/etc/hostapd/hostapd.conf"
编辑 hostapd 配置文件
sudo nano /etc/hostapd/hostapd.conf
修改如下:
interface=wlan0 driver=nl80211 ssid=pi channel=6 hw_mode=g wpa=2 wpa_passphrase=your_password wpa_pairwise=TKIP rsn_pairwise=CCMP
保存退出
其中your_password是AP的密码,pi是AP的SSID。
编辑网络配置文件
sudo vim /etc/network/interfaces
找到这几行 注释掉
#allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
输入命令重启服务:
sudo service hostapd restart
配置网桥:
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 wlan0
到现在为止已经搞定了!!!
如果想每次开机都能够实现网络分享,只需要把配置网桥部分的代码写到/etc/rc.local中去就可以了
参考文章:
Linux 用作 IPv6 网关 http://bigeagle.me/2011/11/linux_as_ipv6_gateway/
树莓派上手实战之把Raspberry Pi 配置成无线路由器 http://www.raspicn.com/thread-83-1-1.html
后记
在以上设置完成之后通过树莓派是可以上网的,但是树莓派自己去上不了网,也无法通过ssh连接到树莓派上,这是比较奇怪的一件事。
经过几天研究发现,把eth0和wlan0加到网桥br0后,这两个接口就再也无法当普通的接口来用,应该把它们的地址信息和路由信息全部删除,再通过br0来进行对外的通信,以下是方法:
去掉eth0和wlan0的自动地址配置
根据上面“编辑网络配置文件”部分,把关于eth0和wlan0配置的有关行全部注释掉,最后剩下的应该就只有关于lo的配置部分,这样Ipv4的路由配置信息就没有了。
去掉eth0和wlan0上的IPv6路由信息
由于我的无线网卡没有自动获取到Ipv6地址,所以只需要删除eth0上的IPv6路由信息
#删除从eth0出去的默认路由
sudo ip route del default via fe80::20f:e2ff:fec9:3d83 dev eth0
#删除从eth0出去的2001:250:3002:1123::/64网段的路由
sudo ip route del 2001:250:3002:1123::/64 dev eth0
实际应该删除的前缀和默认路由地址要根据自己网络环境
经过以上设置,不必要的IP地址和路由信息都删掉了,但是br0上的地址还没有配置,如果是固定IP,可以直接配置上去,如果是想用DHCP,可以在interfaces文件中配置关于br0的信息然后再restart一下网络服务。
虽然以上过程可以达到目的,但是要想达到开机自动启动以上上骤就要把命令写进rc.local文件里,而在rc.local运行之前网络配置会根据interfaces文件来配置网络,而这时候br0是不存在的,所以要解决这个问题有个笨方法,在rc.local里再重启一下网络服务。但是我想知道有没有什么办法能让系统在网络配置之前就建立网桥br0呢?