用树莓派做无线路由器

原文 http://craftor.org/?p=623


原理:Pi使用有线连入网络,然后接USB无线网卡作为热点,提供Wifi接入。

1、有线网络,如果是自动获取IP的,直接接上网线即可。

2、关于USB无线网卡驱动问题。如果接上USB无线网卡,使用ifconfig命令,能直接看到wlan0,那么恭喜你,可以直接跳过这一步。官方推荐的无线网卡是TL-WN725N,我上淘宝买了,很不幸,买到的是2.0版的。而官方的驱动只支持1.0,好在有爱好者做了第三方驱动。如果你淘宝上买到的也是2.0版的,看我的这篇文章安装驱动TL-WN725N v2.0 Driver for Raspberry Pi

3、修改wlan0为静态IP

sudo vim /etc /network /interfaces

把原来关于wlan0的注释掉:

#allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

添加下面的:

iface wlan0 inet static
address 192.168.10.1
netmask 255.255.255.0

4、安装hostapd

sudo apt-get install hostapd

编辑hostapd 默认配置文件

sudo vim /etc /default /hostapd

找到#DAEMON_CONF= "",修改为:

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

然后编辑:

sudo vim /etc /hostapd /hostapd.conf

添加

# 把无线网卡wlan0 作为接入点
interface=wlan0
# 使用nl80211驱动
driver=nl80211
#共享网络的SSID是RaspberryPi
ssid=RaspberryPi
# 网卡工作在802.11G模式
hw_mode=g
#无线网卡选用11信道
channel= 11
# WPA2 配置
wpa= 2
#wpa密码是raspberry
wpa_passphrase=raspberry
#认证方式为WPA-PSK 加密方式为CCMP
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
beacon_int= 100
auth_algs= 3
wmm_enabled= 1

保存退出,然后重启服务:

sudo service hostapd restart

如果你使用的也是TL-WN725N v2.0,那么,很显然,你这一步不会成功的。出现的应该是这样的错误:

$ sudo hostapd /etc /hostapd /hostapd.conf
Configuration file: /etc /hostapd /hostapd.conf
nl80211: 'nl80211' generic netlink not found
Failed to initialize driver 'nl80211'
rmdir [ctrl_interface ]: No such file or directory

不是说了么,官方的是支持1.0版的,不支持2.0的。那么,还是要使用第三方的hostapd。首先,要删除原来的hostapd

sudo apt-get autoremove hostapd

再下载第三方驱动并安装

wget https: //github.com /jenssegers /RTL8188-hostapd /archive /v1.1.tar.gz
tar -zxvf v1.1.tar.gz
cd RTL8188-hostapd- 1.1 /hostapd
sudo make
sudo make install

然后再重启服务,应该提示成功:

$ sudo service hostapd restart
[ ok ] Stopping advanced IEEE 802.11 management: hostapd.
[ ok ] Starting advanced IEEE 802.11 management: hostapd.

5、安装DHCP服务

sudo apt-get install isc-dhcp-server

备份配置文件

sudo mv /etc /dhcp /dhcpd.conf   /etc /dhcp /dhcpd.conf.bak

编辑配置文件:

sudo vim /etc /dhcp /dhcpd.conf

复制粘贴如下内容:

default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.10.0 netmask 255.255.255.0 {
  range 192.168.10.10 192.168.10.100;
  option routers 192.168.10.1;
  option broadcast-address 192.168.10.127;
  option domain-name-servers 8.8.8.8,8.8.4.4;
  default-lease-time 600;
  max-lease-time 7200;
}

保存退出,然后重启服务:

$ sudo service  isc-dhcp-server restart

6、配置路由转发

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo bash
iptables-save > /etc /iptables.up.rules
exit

编辑:

sudo vim /etc /network /if-pre-up.d /iptables

添加下面两行代码:

#!/bin/bash
/sbin /iptables-restore < /etc /iptables.up.rules

保存退出,然后修改iptables权限:

sudo chmod 755 /etc /network /if-pre-up.d /iptables

开户内核转发:

sudo vim /etc /sysctl.conf

找到下面两行:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

把net.ipv4.ip_forward 前面的#去掉,保存退出。然后

sudo sysctl -p

7、服务自启动到第6步,如果没什么问题,用手机接Wifi,应该可以上网了。但是如果Pi断电了,hostapd和dhcp服务还是要手动来启动。这样比较麻烦,所以我们要添加这两个服务的自启动,以便Pi断电再上电后,wifi能自动连上。

$ sudo chkconfig --add hostapd
$ sudo chkconfig --add isc-dhcp-server

你可能感兴趣的:(用树莓派做无线路由器)