
图中的树莓派平时担任二级路由为逸龙笔记本组提供无线网络。必要时候,切换成一级路由。
2 配置无线网卡为固定ip地址
输入命令
编辑网络配置文件,找到这几行注释掉。
添加以下几行。
这里需要说明的是 192.168.2.1是给 raspberry pi 做的路由器分配的网关 ip,这个不能跟局域网里其他路由网关ip重复。
重启。
查看wlan0的IP是不是生效了。这次显示
3 安装DHCP服务
复制粘贴如下内容
保存退出,然后重启服务
4 配置路由转发
通过前面的配置过程,已经可以通过无线网络连接到Raspberry pi的无线网卡,但是还不能连接到互联网,下一步就是让从无线网卡 wlan0 进来的数据 转发到 有线网卡 eth0上面 通过有线网卡连接网络接到互联网。
因为eth0是获取的动态ip,所以这里通过iptables来实现简单的路由转发。
输入命令
输入命令
把下面两行复制粘贴到编辑窗口
保存退出,输入命令。
开启内核转发,输入命令。
找到这里。
去掉 net.ipv4.ip_forward 前面的#,保存退出,输入命令。
配置完毕 通过无线连接上以后ping一下外网,可以通了,这样就可以把Raspberry Pi 当作路由器来用了。
5 设置开机自动启动
完成上面的步骤,如果没什么问题,应该可以上网了。但是重启后还要手动启动hostapd和dhcp服务。打算用 chkconfig 支持开机启动。因为网上的大侠和菜鸟都是这么些的。
可是,我怎么安装,怎么都提示错误,不能安装,没有这个东西。逗逼。终于有一次在千难万险之后安装上了。每次开机的时候会有很大的概率自启动失败。
只好自己写脚本检测dhcp服务并打开。
写入
保存。上面这个脚本的作用是在运行之后每5秒钟检测一次dhcp服务是否处于启动状态,如果不是则启动它。需要注意的是,linux系的shell脚本的语法相对来说比较严格,需要严格注意空格等格式问题。
修改权限为可执行:
为了让它开机运行,
在程序之前添加:
这句指令的作用是让这个脚本开机即在后台启动,并把所有的输出信息丢弃。
好了重启试试
已经可以连接上
6 公共DNS查询服务器
将树莓派(Raspberry Pi)设置为无线路由的,试用了一段时间觉得效果不错,但是总觉得树莓512MB内存仅仅作为路由太浪费了,于是我就想能不能将DNS公共查询服务器也架设在上面,这样常用的DNS查询将会缓存到树莓派上,也起到DNS查询加速的作用。
首先我找到了网上的解决方案,在树莓讨论版上《[HOW TO] Use your RPI as a DNS server and speed up yo’ net!》,当然这个解决方案是基于这篇文章的《DNS on Raspberry Pi — Speed up your internet Experience》,使用树莓派最大的好处是有强大的社区支持,基本上你所遇到的问题网上都有相关的解决方案,得益于Debian的丰富的包,一些软件可以直接apt安装
下面我们就需要配置DNSMASQ了,配置文件一般位于路径/etc/dnsmasq.conf。
由于通篇默认是#注释了,我就顺势在篇末加上这些
这里的server所指示的就是上级DNS服务器的地址,也就是说本地缓存查不到的域名将会发送给上级DNS服务器然后本地再缓存结果。这里用的是Google的8.8.8.8和8.8.4.4,可以改成你所需要的,一般就用谷歌的,我就不改了:-)
保存,重启服务:
到这里基本上就配置完成了,你可以在树莓派上nslookup或者dig一下看看结果,当然如果找不到这些命令是因为你没有安装dnsutils,直接通过下面的命令安装即可:
然后
或者
再讲解一个小技巧,大家电脑上的hosts文件一般不陌生,在DNS被投毒污染或者我们需要配置测试Web服务器时会要改这里的域名和IP对应关系,这里我们可以让dnsmasq替我们代劳。切换到/etc/dnsmasq.d/路径下,新建一个test.conf文件,内容如下:
别忘了重启一下服务:
这样当查询appspot.com的时候,dnsmasq将直接返回这里设定的IP地址,轻松避免了DNS投毒攻击。
拿树莓派做个无线路由器,配置的结果就是把树梅派的网络连接通过无线网卡分享出来。做分享的无线网卡当然就不能同时来连接网络了。
root登录
运行
接下来
没有插入USB无线网卡时候输入
是没有显示
插入USB无线网卡,我的无线网卡是 『EDUP EP-N8508GS黄金版 迷你USB无线网卡 树莓派专用』
出现
1 安装hostapd
因为 raspbian 官方安装源提供的 hostapd 需要 无线网卡 支持 nl80211 驱动。如果你的网卡支持 nl80211 驱动。你可以直接 用原生安装方式 安装
我需要确认一下我的无线网卡是否 支持 nl80211 驱动 。先安装
运行
找不到它。网卡不支持 nl80211 协议。唔,这个原因是……螃蟹卡不是使用 nl80211 作为驱动,而是使用螃蟹自己的 rtl871xdrv 作为驱动。需要自行编译 rtl871xdrv 作为驱动 的 hostapd 软件包。
卸载从官方安装的 hostapd
这个是第三方的
原地址
编辑hostapd 默认配置文件
找到#DAEMON_CONF= "",修改为:
然后编辑:
修改为
保存退出,然后重启服务
root登录
运行
lsusb
查看USB设备root@raspberrypi:~# lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
接下来
lsmod
看一下有沒有 8192cu 這個東西在裡面,他就是无线驱动。root@raspberrypi:~# lsmod
Module Size Used by
snd_bcm2835 16165 0
snd_soc_bcm2708_i2s 5474 0
regmap_mmio 2806 1 snd_soc_bcm2708_i2s
snd_soc_core 131268 1 snd_soc_bcm2708_i2s
regmap_spi 1897 1 snd_soc_core
8192cu 550816 0
snd_pcm 81593 2 snd_bcm2835,snd_soc_core
snd_page_alloc 5156 1 snd_pcm
regmap_i2c 1645 1 snd_soc_core
snd_compress 8076 1 snd_soc_core
snd_seq 53769 0
snd_timer 20133 2 snd_pcm,snd_seq
snd_seq_device 6473 1 snd_seq
leds_gpio 2059 0
led_class 3688 1 leds_gpio
snd 61291 7 snd_bcm2835,snd_soc_core,snd_timer,snd_pcm,snd_seq,snd_seq_device,snd_compress
没有插入USB无线网卡时候输入
ifconfig
wlan0
的插入USB无线网卡,我的无线网卡是 『EDUP EP-N8508GS黄金版 迷你USB无线网卡 树莓派专用』
ifconfig
wlan0
证明已经发现USB无线网卡1 安装hostapd
因为 raspbian 官方安装源提供的 hostapd 需要 无线网卡 支持 nl80211 驱动。如果你的网卡支持 nl80211 驱动。你可以直接 用原生安装方式 安装
sudo apt-get install hostapd
我需要确认一下我的无线网卡是否 支持 nl80211 驱动 。先安装
iw
sudo apt-get install iw
iw list
结果root@raspberrypi:~# iw list
nl80211 not found.
找不到它。网卡不支持 nl80211 协议。唔,这个原因是……螃蟹卡不是使用 nl80211 作为驱动,而是使用螃蟹自己的 rtl871xdrv 作为驱动。需要自行编译 rtl871xdrv 作为驱动 的 hostapd 软件包。
卸载从官方安装的 hostapd
sudo apt-get remove hostapd
这个是第三方的
wget
https://googledrive.com/host/0B6hvW6XtZ2CdNERMNmdnTTRnLTQ/v1.1.tar.gz
tar -zxvf v1.1.tar.gz
cd RTL8188-hostapd-1.1/hostapd
make && sudo make install
https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz
编辑hostapd 默认配置文件
sudo nano /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
然后编辑:
sudo nano /etc/hostapd/hostapd.conf
# Basic configuration
interface=wlan0
ssid=wlan2.guoruei.net
channel=2
#bridge=br0
# WPA and WPA2 configuration
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=youpassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
beacon_int=100
auth_algs=3
wmm_enabled=1
# Hardware configuration
driver=rtl871xdrv
ieee80211n=1
hw_mode=g
device_name=RTL8192CU
manufacturer=Realtek
保存退出,然后重启服务
sudo service hostapd restart
[ ok ] Stopping advanced IEEE 802.11 management: hostapd.
[ ok ] Starting advanced IEEE 802.11 management: hostapd.
2 配置无线网卡为固定ip地址
输入命令
sudo nano /etc/network/interfaces
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
添加以下几行。
iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0
这里需要说明的是 192.168.2.1是给 raspberry pi 做的路由器分配的网关 ip,这个不能跟局域网里其他路由网关ip重复。
reboot
ifconfig
192.168.2.1 了。
sudo apt-get install isc-dhcp-server
sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
sudo nano /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.101 192.168.2.106;
option routers 192.168.2.1;
option broadcast-address 192.168.2.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
4 配置路由转发
通过前面的配置过程,已经可以通过无线网络连接到Raspberry pi的无线网卡,但是还不能连接到互联网,下一步就是让从无线网卡 wlan0 进来的数据 转发到 有线网卡 eth0上面 通过有线网卡连接网络接到互联网。
因为eth0是获取的动态ip,所以这里通过iptables来实现简单的路由转发。
输入命令
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 nano /etc/network/if-pre-up.d/iptables
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
保存退出,输入命令。
sudo chmod 755 /etc/network/if-pre-up.d/iptables
开启内核转发,输入命令。
sudo nano /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
5 设置开机自动启动
完成上面的步骤,如果没什么问题,应该可以上网了。但是重启后还要手动启动hostapd和dhcp服务。打算用 chkconfig 支持开机启动。因为网上的大侠和菜鸟都是这么些的。
sudo apt-get instsall chkconfig
只好自己写脚本检测dhcp服务并打开。
nano /usr/sbin/keep_dhcp_on
#!/bin/bash
i=0
while [ i=1 ]
do
dhcpstatus=$(sudo service isc-dhcp-server status)
tmp=$dhcpstatus
dhcpstatus=${tmp##*is }
echo second cut for dhcpstatus:
echo $dhcpstatus
if [ "$dhcpstatus" = "not running." ]
then
echo "Restartig dhcpd..."
sudo service isc-dhcp-server start
else
echo "Do nothing."
fi
sleep 5
done
保存。上面这个脚本的作用是在运行之后每5秒钟检测一次dhcp服务是否处于启动状态,如果不是则启动它。需要注意的是,linux系的shell脚本的语法相对来说比较严格,需要严格注意空格等格式问题。
修改权限为可执行:
sudo chmod +x /usr/sbin/keep_dhcp_on
为了让它开机运行,
nano /etc/rc.local
#
service isc-dhcp-server start
/usr/sbin/keep_dhcp_on 1>/dev/null &
这句指令的作用是让这个脚本开机即在后台启动,并把所有的输出信息丢弃。
好了重启试试
reboot
6 公共DNS查询服务器
将树莓派(Raspberry Pi)设置为无线路由的,试用了一段时间觉得效果不错,但是总觉得树莓512MB内存仅仅作为路由太浪费了,于是我就想能不能将DNS公共查询服务器也架设在上面,这样常用的DNS查询将会缓存到树莓派上,也起到DNS查询加速的作用。
首先我找到了网上的解决方案,在树莓讨论版上《[HOW TO] Use your RPI as a DNS server and speed up yo’ net!》,当然这个解决方案是基于这篇文章的《DNS on Raspberry Pi — Speed up your internet Experience》,使用树莓派最大的好处是有强大的社区支持,基本上你所遇到的问题网上都有相关的解决方案,得益于Debian的丰富的包,一些软件可以直接apt安装
sudo apt-get install -y dnsmasq
nano /etc/dnsmasq.conf
# Dnsmasq.conf for raspberry pi
# /etc/dnsmasq.conf
# http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example
# Set up your local domain here
domain=raspberry.local
resolv-file=/etc/resolv.dnsmasq
min-port=4096
server=8.8.8.8
server=8.8.4.4
# Max cache size dnsmasq can give us, and we want all of it!
cache-size=10000
# Below are settings for dhcp. Comment them out if you dont want
# dnsmasq to serve up dhcpd requests.
# dhcp-range=192.168.2.101,192.168.2.106,255.255.255.0,1440m
# dhcp-option=3,192.168.2.1
# dhcp-authoritative
这里的server所指示的就是上级DNS服务器的地址,也就是说本地缓存查不到的域名将会发送给上级DNS服务器然后本地再缓存结果。这里用的是Google的8.8.8.8和8.8.4.4,可以改成你所需要的,一般就用谷歌的,我就不改了:-)
保存,重启服务:
sudo service dnsmasq restart
到这里基本上就配置完成了,你可以在树莓派上nslookup或者dig一下看看结果,当然如果找不到这些命令是因为你没有安装dnsutils,直接通过下面的命令安装即可:
sudo apt-get install dnsutils
nslookup www.google.com
dig www.google.com
再讲解一个小技巧,大家电脑上的hosts文件一般不陌生,在DNS被投毒污染或者我们需要配置测试Web服务器时会要改这里的域名和IP对应关系,这里我们可以让dnsmasq替我们代劳。切换到/etc/dnsmasq.d/路径下,新建一个test.conf文件,内容如下:
address=/appspot.com/74.125.155.141
别忘了重启一下服务:
sudo service dnsmasq restart