树莓派+无线网卡在DHCP网络环境下实现有线网向无线网的扩展

前言

目前很多学校的校园网都是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呢?


 
 


 

猜你喜欢

转载自blog.csdn.net/zebra2011/article/details/12871779