本文来自依云's Blog,转载请注明。
首先看看你的网卡和驱动组合是否支持这样的操作。
>>> iw list | grep -A2 combinations: valid interface combinations: * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1, total <= 3, #channels <= 2
上边这个输出说明支持,并且频道可以不一样。
然后,添加一个用途 AP 的网络接口,并配置 IP 地址。我的无线网络接口名字是 wlan0,因为我通过创建空 /etc/udev/rules.d/80-net-setup-link.rules 文件的方式禁用了 systemd 的网络接口改名。
sudo iw dev wlan0 interface add wlan0_ap type __ap sudo ifconfig wlan0_ap 192.168.17.1
配置 NAT:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward sudo iptables -w -t nat -A POSTROUTING -s 192.168.17.0/24 -j MASQUERADE
配置 DHCP。我用的是 dnsmasq。它本来是作为 DNS 缓存用的,但是也支持 DHCP,那就用它了:
interface=wlan0_ap no-dhcp-interface=wlan0 dhcp-range=192.168.17.50,192.168.17.150,12h
注意不要在其它只提供 DNS 服务的接口上提供 DHCP 服务,以免出现冲突。
然后就可以开启热点啦。hostapd 配置如下:
interface=wlan0_ap driver=nl80211 ssid=名字 channel=1 hw_mode=g ieee80211d=1 country_code=cn ieee80211n=1 ieee80211h=1 ignore_broadcast_ssid=0 auth_algs=1 wpa=2 wpa_passphrase=secret wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
最后把它们跑起来就可以了。
为了方便使用,我创建了个 systemd 服务 wlan0_ap.service:
[Unit] Description=Setup wlan0_ap Before=hostapd.service After=sys-subsystem-net-devices-wlan0.device After=iptables.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/iw dev wlan0 interface add wlan0_ap type __ap ExecStart=/usr/bin/ip address add dev wlan0_ap 192.168.17.1/24 ExecStart=/usr/bin/iptables -w -t nat -A POSTROUTING -s 192.168.17.0/24 -j MASQUERADE ExecStop=-/usr/bin/iptables -w -t nat -D POSTROUTING -s 192.168.17.0/24 -j MASQUERADE ExecStop=/usr/bin/ip address delete dev wlan0_ap 192.168.17.1/24 ExecStop=/usr/bin/iw dev wlan0_ap del [Install] WantedBy=hostapd.service
systemctl enable wlan0_ap 之后就可以直接 systemctl start hostapd 来启动了~当然也很容易停止服务:systemctl stop hostapd wlan0_ap。我的 dnsmasq 总是开启的,所以就不用加依赖了。还有 ipv4_forward 我也是早就写到配置文件 /etc/sysctl.d/99-sysctl.conf 里的。
Sep 14, 2016 05:07:52 PM
为什么不试试 yaourt -S create_ap 呢?
Sep 14, 2016 05:28:03 PM
因为我怕它弄坏我的 iptables 或者别的什么。
Sep 14, 2016 05:32:52 PM
近两千行的 shell,太可怕了!
Sep 16, 2016 05:06:43 PM
现在竟然涨到2k行了?我记得去年还是三四百行。
Sep 19, 2016 02:08:08 PM
以前在学校的时候,也在我电脑上用hostapd折腾过共享Wi-Fi, 记得当时好像结果是室友的Windows在我不设置密码的时候可以正常连接,但是设置密码后就连接不了? 大概是这样的结果吧, 然后就没折腾过了。 ( 话说刚才打开你博客超级慢, 不造是不是公司网络在抽风。。 现在打开速度就正常了。
Sep 19, 2016 06:13:28 PM
嗯,现在博客用的 CloudFlare,从国内访问会时常抽风的。
Sep 19, 2016 06:13:51 PM
当然也可能那个时候 spammers 比较活跃,服务器比较累……