基于树莓派,实现无线路由功能

版权声明:版权声明:本文为原创文章,版权归 Deng‘s Blog 所有,转载请注明出处! https://blog.csdn.net/deng_xj/article/details/88810322

基于树莓派,实现无线路由功能

Raspberry Pi 3板载了无线网络适配器和陶瓷天线,不需要额外增加无线网卡就可以把它打造成一个无线路由器。有一种方法是给Raspberry Pi刷上OpenWRT等路由器固件,这样它就变成了一个比较正宗的路由器。另一种方法是开启树莓派无线网络适配器的AP功能,并且共享其有线网络。这样依然使用Raspbian系统,可以发挥Raspiberry Pi作为一个微型服务器的优势。

本文主要介绍了如何开启树莓派无线网络适配器的AP功能,并且共享其有线网络,实现无线路由功能。

(1)开启无线适配器的AP功能

Sudo apt-get install hostapd dnsmasq  #dnsmasq是DHCPDNS服务器
Sudo apt-get install isc-dhcp-server  #Isc-dhcp-server是安装DHCP服务

(2)设置静态IP

将无线接口wlan0的IP配置成静态地址。

首先让dhcpcd不再管理wlan0,避免设置冲突。

vi /etc/dhcpcd.conf

在文件的开头增加一行:
denyinterfaces wlan0

在这里插入图片描述

vi /etc/network/interfaces

将wlan0相关的内容修改成如下内容:
在这里插入图片描述

192.168.0.1是给树莓派做路由器分配的网关IP,这个不能与局域网其他路由器网关IP重复,若重复此处可以修改IP地址为其他网关。

(3)重启服务和wlan0

service dhcpcd restart
ifdown wlan0
ifup wlan0

(4)安装hostapd

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

ssid= 输入无线网络的名字,wpa_passphrase= 输入密码。

测试配置是否正确:

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

通过手机等设备应该可以搜到名为RaspberryPi的WiFi,还不需要连接。

如果没有问题,按Ctrl+C停止测试。

使上述设置生效:

vi /etc/default/hostapd

将 #DAEMON_CONF="" 修改为 DAEMON_CONF="/etc/hostapd/hostapd.conf"。

sudo service hostapd restart

(5)配置DHCP服务

#备份配置文件:
cp /etc/dhcp/dhcpd.conf  /etc/dhcp/dhcpd.conf.bak

#编辑新的配置文件;
vi /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; 
}
#重启DHCP服务
service isc-dhcp-server restart

(6)开启ip路由转发

方法一(暂时):
echo 1 > /proc/sys/net/ipv4/ip_forward

方法二(永久):
sudo vim /etc/sysctl.conf
去掉net.ipv4.ip_forward=1 注释。
sudo sysctl -p

在这里插入图片描述

(5)设置iptables的NAT转发功能

通过iptables的NAT转发规则实现在外网可以直接访问局域网内的服务器进行远程连接。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

iptables -F
iptables -X
 
# 设置转发规则:
#目的:在nat表的POSTROUTING链的尾部伪装一个eth0网卡用于报文流出
#iptables -t 表名 -A 在哪个链的末尾添加规则 -o 报文流出的网卡 -j 动作

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#目的:eth0和wlan0相互交换数据
#iptables -A 链名 -i 报文流入的网卡 -o 报文流出的网卡 -m 使用什么的扩展模块(使用state的扩展模块)模块内容 -j 动作
#--state RELATED,ESTABLISHED:匹配已经建立的连接或由已经建立的连接所建立的新连接。即匹配所有的TCP回应包。

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

#iptables -A 链名 -i 报文流入的网卡 -o 报文流出的网卡 -j 动作

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
 
# 将转发规则保存到防火墙配置中
sudo sh -c “iptables-save > /etc/iptables.ipv4.nat”   #sh -c string:命令从-c后的字符串读取。

#设置为开机自动加载:
sudo vim /etc/rc.local
在exit 0上方增加:
iptables-restore < /etc/iptables.ipv4.nat

(6)启动服务

Service hostapd start
reboot

至此,树莓派已实现无线路由功能。

猜你喜欢

转载自blog.csdn.net/deng_xj/article/details/88810322
今日推荐