将树莓派打造成无线路由器

步骤

1 在电脑一端ssh登录树莓派
2 更新Raspbian wheezy系统,命令:

 sudo apt-get update && sudo apt-get upgrade

3  安装必要的组件, 将树莓派打造成AP需要如下组件:

  • rfkill: 一个无线网络工具
  • zd1211-firmware: 一个常见的路由器固件,与很多USB无线网卡兼容
  • hostapd:  hostap守护程序
  • hostap-utils 附加的hostap工具
  • iw: 无线配置工具
  • dnsmasq: DHCP和DNS工具
  • bridge-utils: 用来桥接多个以太网设备

使用以下命令来安装以上组件:

sudo apt-get install rfkill zd1211-firmware hostapd hostap-utils iw dnsmasq bridge-utils

4  设置USB无线网卡
1) 验证树莓派可以识别USB无线网卡, 命令:

lsusb

2)  验证无线网卡支持AP模式, 命令:

iw list

如果这条命令的输出没有显示关于AP模式的信息,那么无线网卡就不支持AP模式
如果使用 rtl8188cus 芯片的无线网卡,那么可能会出现错误: nl80211 not found ,执行命令:

dmesg | grep rtl

若输出结果类似于以下

[    6.240292] usbcore: registered new interface driver rtl8192cu

那么这无线网卡很可能支持AP模式

5  设置无线功能
1) 备份/etc/network/interfaces文件,然后打开此文件

sudo cp /etc/network/interfaces /etc/network/interfaces.orig
sudo vi /etc/network/interfaces

2)  将文件内容更改成如下

psb

3) 重启wlan0

ifdown wlan0
ifup wlan0

6    设置hostapd
1) 备份/etc/hostapd/hostap.conf文件,然后打开此文件

sudo cp /etc/hostapd/hostap.conf /etc/hostapd/hostap.conf.orig
sudo vi /etc/hostapd/hostap.conf

2) 将文件修改成如下,适当调整country_code, ssid等。
rpi
3) 如果之前的iw list出错,那么也要备份/etc/default/hostapd(如果此文件存在的话)。

sudo cp /etc/default/hostapd /etc/default/hostapd.orig
sudo vi /etc/default/hostapd

在文件中找到DAEMON_CONF这一行,去年前面的#号,修改成如下:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

4)   如果之前的iw list出错,那么需要安装另外一个版本的/usr/sbin/hostapd,点出此链接下载。
备份原来的/usr/sbin/hostapd

sudo cp /usr/sbin/hostapd /usr/sbin/hostapd.orig

删除原来的/usr/sbin/hostapd

cd /usr/sbin
sudo rm -f hostapd
sudo wget http://dl.dropbox.com/u/1663660/hostapd/hostapd ;

为新的/usr/sbin/hostapd设置文件权限

sudo chown root:root hostapd
sudo chmod 755 hostapd

重启hostapd以使设置生效。

sudo service networking restart
sudo service hostapd restart

如果hostapd重启失败,执行下面的命令看看问题出在哪里

sudo hostapd -d /etc/hostapd/hostap.conf

7  现在树莓派路由的SSID应该可以被扫描出来了。但在连接之前还需要进行一些设置,特别是dnsmasq的设置。
1)备份/etc/dnsmasq.conf文件,然后打开此文件

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo vi /etc/dnsmasq.conf

2)  找到以下三行,去掉前面的#符号,并添加相应的参数。

raspberry pi

 

3) 重启dnsmasq服务以使修改生效

sudo service dnsmasq restart

8  启用IPv4端口映射,命令:

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

如果上面的命令返回permission denied错误,那么执行下面的命令:

sudo sysctl -w net.ipv4.ip_forward=1

启用NAT

sudo iptables -t nat -A POSTROUTING -j MASQUERADE

在使用过程中发现,自己安装的hostapd守护程序需要手动启动,也就是执行下面的命令:

sudo hostapd -d /etc/hostapd/hostap.conf

若要在开机时自动启动hostapd守护程序,可以编辑/etc/rc.local文件,在exit 0 的上一行添加如下命令:

hostapd -d /etc/hostapd/hostap.conf &

完毕。

为这篇文章评分
[Total: 7 Average: 3.3]

Leave a Reply

Your email address will not be published.

The maximum upload file size: 2 MB. You can upload: image, audio, video, document, spreadsheet, interactive, text, archive, code, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here