Skip to content

Instantly share code, notes, and snippets.

@Larry-u
Last active December 20, 2018 13:47
Show Gist options
  • Save Larry-u/2174c8a43e15d018f331003dec3263db to your computer and use it in GitHub Desktop.
Save Larry-u/2174c8a43e15d018f331003dec3263db to your computer and use it in GitHub Desktop.
树莓派3设置AP

一开始参考了这篇文章的方法设置,但是按照他的方法走一遍之后发现其他设备连的时候获取不到ip地址。 由于原作者的DHCP服务是通过dnsmasq实现的,所以我怀疑是不是dnsmasq的设置出了问题。 检查一番,无果。

之后又参考这篇文章,done!

当然在第二次设置的时候也遇到了一些坑: 在第二篇文章里,作者在/etc/rc.local里面加了几行代码:

ifconfig wlan0 down
ifconfig wlan0 10.0.0.1 netmask 255.255.255.0 up
iwconfig wlan0 power off
service dnsmasq restart
hostapd -B /etc/hostapd/hostapd.conf & > /dev/null 2>&1
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

问题1: 命令iwconfig wlan0 power off是把wlan0的power management关掉,但是这个命令会报错Invalid argument,解决方法是将此行改成 iw dev wlan0 power_save off 这样重启之后用iwconfig显示wlan0的power management是off

问题2: hostapd -B /etc/hostapd/hostapd.conf & > /dev/null 2>&1这一行代码是开启hostapd,但是在boot的时候会报错Failed create xxx 我猜是因为在系统执行/etc/rc.loacal文件之前systemctl就把hostapd开启了,所以再开启的话就会报错,这样导致开机之后AP用不了。解决办法就是 注释掉这一行。

最后对比两种方法发现方法二只比第一种方法多设置两行:

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

感觉像是连接有线网卡和无线网卡的命令,反正用方法二手机就可以获取IP地址并且上网了

#####设置DNS解析 在/etc/dnsmasq.conf里加入address=/#/10.xx.xx.x#是dnsmasq的通配符,解析所有域名到后面的IP地址

然后在本机运行一个Django服务器,开80端口(因为访问网址默认是80端口),这样所有设备访问任何网址都会被解析到Django服务器。 由于是只是一个默认的Django server,好像不能接受https请求

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment