目标
搭建一个支持安全访问的无线路由器,该路由器作为二级网络网关,上网设备经由无线网络连接到该路由器上后,通过以太网路由从主网访问Internet。
注:没有采用OpenWRT,用的是Raspbian。
硬件准备
树莓派B+ 1台
无线网卡EDUPEP-N8508GS 1个
16G TF卡 1枚(4G以上就可以,选大点可以做其他用途)
可以访问Internet的路由器
Windows机器 1台
显示器 1台(我用的是电视机替代)
键盘鼠标一套
软件准备
构建无线路由器
烧录树莓派系统
在Windows系统下格式化TF卡、烧录镜像实在是简单至极。
下载Raspbian系统镜像并解压。
插入TF卡(最好格式化一下),注意TF卡挂载的盘符。
运行Win32DiskImager,选择Raspbian镜像(.img文件),并选择TF卡挂载的盘符,然后点击写入。
设置树莓派系统
这一步主要完成树莓派系统的初始化相关工作。
连接设备
将树莓派通过以太网口连接到主路由器(可连接internet)上;
将树莓派连接到显示器上;
将键盘、鼠标连接到树莓派上。
将烧录好系统镜像的TF卡插入树莓派机器,并启动机器。
Raspbian系统启动成功后,先进行一些系统上的准备工作:
通过Menu->Preferences->Raspberry Pi Configuration,完成Change Password、Expand Filesystem、TimeZone、Locale修改。也可以在命令行下运行sudo raspi-config程序进行设置。
运行ifconfig查看以太网卡的ip地址。
从远端计算机(Mac或PC)上通过SSH Client连接到树莓派上。
更新树莓派系统:sudo apt-get update && sudo apt-get upgrade
重启树莓派机器:sudo reboot
从远端重新通过SSH Client连接上树莓派机器。
设置无线路由
安装hostapd和isc-dhcp-serverpi@rpi:~ $ sudo apt-get install hostapd isc-dhcp-server
配置hostapdpi@rpi:~ $ sudo vim /etc/hostapd/hostapd.conf
在文件中添加如下内容:
interface=wlan0
hw_mode=g
ssid=hotpot
channel=6
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0
ignore_broadcast_ssid=0
保存退出后可以使用下面的命令测试一下配置是否正确:
sudo hostapd /etc/hostapd/hostapd.conf
如果配置没有问题,则WiFi列表中应该可以扫描到hotpot且输入密码可以连接。
修改hostapd文件,使服务启用刚才创建的配置的文件。pi@rpi:~ $ sudo vim /etc/default/hostapd
添加:
DAEMON_CONF=“/etc/hostapd/hostapd.conf”
保存退出。
配置wlan0的ip为静态地址pi@rpi:~ $ sudo vim /etc/network/interfaces
在文件修改wlan0的配置为如下内容:
allow-hotplug wlan0
iface wlan0 inet static
address 10.10.0.1
netmask 255.255.255.0
配置DHCP服务pi@rpi:~ $ sudo vim /etc/dhcp/dhcpd.conf
首先,将option domain-name…内容注释掉,如:
# option domain-name "";
# option domain-name-servers , ;
其次,将authoritative的注释去掉,如:
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative
然后,在文件尾部添加wlan0的子网信息,如:
subnet 10.10.0.0 netmask 255.255.255.0 {
range 10.10.0.10 10.10.0.50;
option broadcast-address 10.10.0.255;
option routers 10.10.0.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
保存后退出。
修改isc-dhcp-server文件使wlan0支持DHCP请求:pi@rpi:~ $ sudo vim /etc/default/isc-dhcp-server
将文件中INTERFACES=“”改为INTERFACES=“wlan0”,保存退出。
设置无线网卡和以太网卡之间的ip路由
首先,设置sysctl.conf文件:pi@rpi:~ $ sudo vim /etc/sysctl.conf
在文件中将net.ipv4.ip_forward=1的注释去掉。
然后,运行命令启用ip转发:pi@rpi:~ $ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
接着,设置路由表:pi@rpi:~ $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
pi@rpi:~ $ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
pi@rpi:~ $ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
(如果运行iptables命令时出现“iptables v1.4.21: can’t initialize iptables table ‘nat’…”类似的错误信息,则需要检查系统是否已经更新——sudo apt-get update和sudo apt-get upgrade,并且确保已经重启机器)
下一步,将路由表保存到文件中:pi@rpi:~ $ sudo sh -c "iptables-save > /etc/myrouter.nat"
最后,修改interface文件,确保系统重启后路由表会自动重新载入:pi@rpi:~ $ sudo vim /etc/network/interfaces
在文件末尾添加:
up iptables-restore < /etc/myrouter.nat
保存退出。
将hostapd服务设定为开机启动。pi@rpi:~ $ sudo update-rc.d hostapd enable
重启服务(机器),测试。
其他
可以在系统上安装openconnect以连接安全服务。
首先,安装openconnect:pi@rpi:~ $ sudo apt-get install openconnect
然后,运行命令连接安全服务pi@rpi:~ $ echo service-password | sudo openconnect -u service-username -b --passwd-on-stdin site-url
运行ifconfig命令,可以看到新网卡信息tun0
添加tun0相关的路由信息:pi@rpi:~ $ sudo iptables –t nat –A POSTROUTING –o tun0 -j MASQUERADE
pi@rpi:~ $ sudo iptables –A FORWARD –i wlan0 –o tun0 -j ACCEPT
pi@rpi:~ $ sudo iptables –A FORWARD –i tun0 -o wlan0 –m state –state RELATED,ESTABLISHED –j ACCEPT
将路由表更新保存到文件:pi@rpi:~ $ sudo sh -c "iptables-save > /etc/myrouter.nat"
另,关闭openconnect,使用sudo killall openconnect命令即可。
最后
树莓派2代没有自带网卡,网上淘的网卡有时工作不稳定。建议还是使用树莓派3代,稳定性很好。
参考