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

家里有个很挫的无线路由器,不能刷 OpenWRT,没什么可玩性,只好拿树莓派开刀了,顺便学点网络相关的知识。

既然是无线路由器,除了树莓派以外还需要一张无线网卡,本人使用的是 EP-N8508GS,这是一款廉价的无线网卡,支持软 AP,但是无法使用 aircrack,如果想用来破解无线网络,还是不要买这款了。如果你用的是其他型号的无线网卡,本文的大部分步骤应该仍然有效。如果是用的 360、百度、小米之类的随身 WiFi,可能有驱动问题,请参考这篇文章解决。

一、安装并配置 hostapd

为了使用无线网卡 AP 功能,需要安装 hostpad。如果你的芯片型号在支持之列,请直接从软件源安装:

sudo apt-get install hostapd

EP-N8508GS 使用的芯片型号是 Realtek RTL8188CUS,不能使用软件源里面的 hostapd,放狗搜发现国外大神的这篇文章,使用 Realtek 官方提供的 hostapd 源码编译,经测试,工作正常。大致步骤如下:

从 GitHub 下载最新源码并解压:

wget https://github.com/jenssegers/RTL8188-hostapd/archive/v2.0-beta.tar.gz
tar -zxvf v2.0-beta.tar.gz

进入源码目录,编译安装:

cd RTL8188-hostapd-2.0-beta/hostapd
sudo make
sudo make install

(建议养成良好的习惯,不要直接 make install,先使用 checkinstall 打包成 deb,然后再安装,方便管理,此处略过。)

然后打开 hostapd 的配置文件 /etc/hostapd/hostapd.conf,修改 ssidwpa_passphrase为 WiFi 热点的名称和密码,比如我的:

# Basic configuration

interface=wlan0
ssid=Raspberry_Pi
channel=6#bridge=br0


# WPA and WPA2 configuration

macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=123456
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
wmm_enabled=0


# Hardware configuration

driver=rtl871xdrv

ieee80211n=1
hw_mode=g
device_name=RTL8188CUS
manufacturer=Realtek

如果使用软件源的 hostapd,请修改 /etc/default/hostapd,设置 conf 文件路径:

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

最后,重启 hostapd 服务,并设置开机启动:

sudo service hostapd restart
sudo update-rc.d hostapd defaults

二、安装并配置 udhcpd

为了让连到热点的设备能通过 DHCP 获取 IP,需要安装 DHCP 服务程序,可以使用 udhcpd 或 dnsmasq。安装 udhcpd:

sudo apt-get install udhcpd

然后打开 udhcpd 配置文件 /etc/udhcpd.conf,修改 startend 为 DHCP 分配的 IP 段的起始和结束 IP,并修改 opt dnsopt subnetopt router 等选项设置 DNS、子网掩码、路由器 IP,例如:

start           192.168.42.2        #default: 192.168.0.20
end             192.168.42.20       #default: 192.168.0.254

interface       wlan0               #default: eth0

remaining       yes                 #default: yes

opt     dns     192.168.42.1
option  subnet  255.255.255.0
opt     router  192.168.42.1
option  dns     8.8.8.8             # appened to above DNS servers
option  lease   864000              # 10 days of seconds

这个地方我设置路由器 IP 为 192.168.42.1,并设置分配的 IP 范围为 192.168.42.2 –192.168.42.20,所有设备都在 192.168.42.0/24 这个子网内。

注意:上面设置 dns 服务器地址为 192.168.42.1 是因为我在树莓派上搭建了一个 DNS 服务器,如果你没有,请设置成其他公用 DNS,比如 114.114.114.114

接着修改 /etc/default/udhcpd,注释掉 DHCPD_ENABLED="no" 这一行。

重启 udhcpd 服务,并设置开机启动:

sudo service udhcpd restart
sudo update-rc.d udhcpd defaults

三、配置 iptables、ifconfig

打开网络接口配置文件 /etc/network/interfaces,设置 wlan0 为静态 ip,如下:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0

iface wlan0 inet static
    address 192.168.42.1
    netmask 255.255.255.0
#    gateway 192.168.1.1
#    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

然后使配置生效:

sudo ifdown wlan0
sudo ifup wlan0

接着开始配置 NAT。修改 /etc/sysctl.conf,打开内核 IP 转发,在末尾添加:

net.ipv4.ip_forward=1

然后,添加 iptables 规则,将 wlan0 的包通过 eth0 转发:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

由于 iptables 设置重启后将消失,常用的方法是先保存下来:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

然后启动时加载,编辑 /etc/network/interfaces,添加下面这一行:

up iptables-restore < /etc/iptables.ipv4.nat
针对tor补充语句
sudo iptables -t nat -A PREROUTING -i eth1 -p udp –dport 53 -j REDIRECT –to-ports 9053
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp –syn -j REDIRECT –to-ports 9040

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>