捡了一个S912盒子,想要作为一个无线网关,用作智能家居的网关。有线网口接路由器,通过无线网卡发射WiFi等待其他物联网设备连接。其实说白了就是无线路由器。
前期准备
首先我们改一下systemd-resolved,解除53端口占用。
1 | echo "DNS=114.114.114.114">>/etc/systemd/resolved.conf |
然后要解除NetworkManager对wlan0的占用,先nmcli -s
记下wlan0的mac地址,比如ff:ff:ff:ff:ff:ff
,编辑/etc/NetworkManager/NetworkManager.conf
,改一下下面的字段,把你的wlan0划为unmanageable-devices
1 | [keyfile] |
最后重启NetworkManager生效
1 | sudo service NetworkManager restart |
配置WiFi
然后我们安装hostapd、dnsmasq
1 | sudo apt-get install hostapd dnsmasq -y |
hostapd负责发射WiFi,先编辑他的配置文件/etc/default/hostapd
,去掉下面这行注释并修改
1 | DAEMON_CONF="/etc/hostapd/hostapd.conf" |
再编辑他的配置文件/etc/hostapd/hostapd.conf
,我把我的配置粘贴一下
1 | interface=wlan0 |
最后启动hostapd
1 | sudo systemctl start hostapd.service && sudo systemctl enable hostapd.service |
打开你的手机搜索WiFi试试,能不能搜到WiFi。搜到就行了,连不上的,因为接下来才开始配置dhcp和dns呢。
配置DHCP和DNS
首先固定wlan0的IP地址,编辑/etc/network/interfaces
1 | auto wlan0 |
Dnsmasq是集DHCP和DNS服务器于一体的程序,我们编辑它的配置文件/etc/dnsmasq.conf
我把我的/etc/dnsmasq.conf
配置粘贴上,每个项字段在dnsmasq.conf
里面都有解释,我就不做解释了。
1 | interface=wlan0 |
我把我的/etc/hosts.dnsmasq
配置粘贴上,其实就一行
1 | 192.168.99.1 armbian.lan |
最后我们启动dnsmasq
1 | sudo systemctl start dnsmasq.service && sudo systemctl enable dnsmasq.service |
打开你的手机连接WiFi试试,这回可以连上,但是不能连接互联网,因为eth0和wlan0之间没有配置网络转发。
配置iptables
首先我们要允许内核进行网络转发,在/etc/sysctl.conf
中注意修改以下内容
1 | net.ipv4.ip_forward = 1 |
然后让内核参数即时生效
1 | sysctl -p |
配置路由表,开启转发
1 | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
如果一切正常现在应该可以通过WiFi热点连接互联网了,但是iptables配置是重启不会保存的,我们需要先保存iptables
1 | iptables-save > /etc/iptables.rules |
然后每次ifup时恢复,编辑/etc/network/interfaces
,在wlan0那一段添加up iptables-restore < /etc/iptables.rules
,下面贴上我完整的/etc/network/interfaces
。
1 | source /etc/network/interfaces.d/* |
到此结束~