树莓派4B开启WIFI热点并提供互联网访问
网络规划目标
-
eth0
网卡接入到互联网 wlan0
开启wifi提供热点;1.由wifi可以直接登录到树莓派、2.可以通过此wifi上互联网
准备工作
为树莓派烧制系统,我使用的系统是树莓派2020-05-27发布的树莓派4B 64位操作系统,2020-05-27-raspios-buster-arm64.img
,具体操作过程不赘述,开机安装系统设置是基本操作,eth0
网卡默认就是dhcp获取,按照我的规划,树莓派接入到其他路由器或者网络,应该都应该可以获取到IP地址,从而可以正常支持上网~
设置树莓派网口地址
- eth0: 给树莓派连上网线,根据实际网络环境使用dhcp自动获取IP或者设置eth0的静态IP,由于我是需要DHCP连接自动获取IP地址,树莓派默认就已经开启了DHCP,所以此次不做配置,如果需要静态地址,可以百度搜索树莓派如何设置网卡静态地址的。
- wlan0:编辑文件/etc/dhcpcd.conf, 添加如下配置,以下配置是为无线网卡设置IP地址,并禁止开启就搜索附近的WIFI热点。
interface wlan0
static ip_address=10.10.0.1/24
nohook wpa_supplicant
将上述配置文件添加后,我们需要重启动dhcpcd
服务,使其生效;补充一句,树莓派的新系统修改网卡地址已改为/etc/dhcpcd.conf
这个文件
sudo systemctl restart dhcpcd #重启dhcpcd服务
设置树莓派DHCP服务
我们刚刚给我们的无线网卡设置的是10.10.0.1的IP地址,并设置的为24位的掩码地址,我们的IP范围已经是规划好的。
由于系统不自带DHCP服务,我们需要使用下面的命令进行安装
sudo apt-get install dnsmasq -y #安装dnsmasq服务
安装dnsmasq服务后,我们编辑/etc/dnsmasq.conf
,添加如下配置,设置DHCP分配地址范围。
listen-address=127.0.0.1,10.10.0.1 interface=wlan0 dhcp-range=10.10.0.50,10.10.0.150,12h
sudo systemctl reload dnsmasq #重启服务使配置生效
设置树莓派热点服务hostapd
我们是使用hostapd来启用wifi热点的,我们通过如下命令来进行安装.
sudo apt-get install hostapd -y #安装hostapd服务
#安装时如果出现无法下载软件包的情况,请尝试更换为国内软件源,如阿里、中科大的源
然后增加配置文件/etc/hostapd/hostapd.conf
如下
interface=wlan0
driver=nl80211
hw_mode=a
ieee80211n=1
ieee80211ac=1
ieee80211d=1
ieee80211h=1
require_ht=1
require_vht=1
wmm_enabled=1
country_code=US
vht_oper_chwidth=1
channel=149
vht_oper_centr_freq_seg0_idx=155
ht_capab=[HT40-][HT40+][SHORT-GI-40][DSSS_CCK-40]
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ssid=Raspberry_4B
wpa_passphrase=password
请更改配置文件中的ssid
和wpa_passphrase
属性,分别对应无线AP的名称和密码.
如何我们可以通过下面命令来测试wifi热点是否启动正常,如无报错且我们可以通过上级搜索到该热点且可连接代表正常:
sudo hostapd -d /etc/hostapd/hostapd.conf
接下来按CTRL+C退出,编辑/etc/default/hostapd
,设置DAEMON_CONF
属性为我们hostapd.conf文件路径
DAEMON_CONF="/etc/hostapd/hostapd.conf"
启动我们的hostapd服务
sudo systemctl unmask hostapd #删除安装留下的连接
sudo systemctl enable hostapd #设置hostapd服务开启启动
sudo systemctl start hostapd #启动hostapd服务
上述命令执行后我们可以关机重启下看是否可以正常开启热点并可以连接,如果可以连接代表热点开启成功~
使WIFI热点可以正常浏览互联网
树莓派默认是不转发IP流量的,我们需要先在配置文件/etc/sysctl.conf
中将包转发的注释清除掉。
net.ipv4.ip_forward=1 #默认前面是带#号的,将#号去掉
运行sudo sysctl -p
来刷新/etc/sysctl.conf
中的配置,使其生效
如何在运行下面命令,来启动eth0的NAT转换
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
配置防火墙
在经过我们上面的步骤后,我们的树莓派热点就已经可以正常上网了,不过我们的NAT转换会在重启后丢失配置,为了可以让上面设置的NAT规则自动生效,我们可以安装iptables-persistent
这个服务来帮助我们实现规则的自动加载,默认是没有带这个服务的,我们需要使用下列命令来进行安装:
sudo apt-get install iptables-persistent -y #安装iptables-persistent服务
sudo service netfilter-persistent save #保存现有规则
sudo service netfilter-persistent reload #读取规则并应用
我们可以重新启动树莓派,通过手机或者是笔记本电脑连接到这个wifi热点,我们发现可以正常上网了,这样我们的树莓派不但可以当作你的网站服务器,还可以当成一个路由器连接wifi上网,这样是不是很美,树莓派带到哪里,插上网线就可以上网~~~