一开始参考了这篇文章的方法设置,但是按照他的方法走一遍之后发现其他设备连的时候获取不到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请求