这里的环境是archlinux
首先是启用网卡转发功能
1
2
|
sudo vim /etc/sysctl .conf net.ipv4.ip_forward=1 |
重启使之生效
再之是安装hostapd这一建ap利器。
1
|
sudo pacman -S hosapd |
然后是配置/etc/hostapd.conf 在arch下这个配置文件有非常详细的注释,而且默认的配置已经能满足基本需求,所以修改起来不难也不多。我也忘了我具体改了哪些参数,最后的配置文件主体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
interface=wlan0 driver=nl80211 logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 dump_file= /tmp/hostapd .dump ctrl_interface= /var/run/hostapd ctrl_interface_group=0 ssid=chliny hw_mode=g channel=11 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=2347 fragm_threshold=2346 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 #wep_default_key=0 #wpa=1 #wpa_passphrase=secret passphrase #wpa_key_mgmt=WPA-PSK WPA-EAP #wpa_pairwise=TKIP CCMP #rsn_pairwise=CCMP |
这时候用 sudo systemctl start hostapd.service 能够开启hostapd,用ifconfig查看的话会发现多出一个mon.wlan0。但这时手机虽然能扫描到这个AP,连接却获取不到ip地址。所以 我们要先给wlan0赋个地址
1
|
ifconfig wlan0 10.5.5.1 netmask 255.255.255.0 |
再然后是开启一个dhcp server服务。我一开始用的是dhcpd,也是网上大多数教程用的,但发现这样能给手机分配到ip地址,但手机却获取不到dns。直到饭桌上跟一师兄谈及,师兄指点可以用dnsmasq才大悟。
关于dnsmasq的配置, arch wiki上已经讲得非常详细了,这里就不再叙述。
最后是在iptables 设置nat
1
|
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
至此完成 。
初次搭建ap会比较麻烦,但后面基本只要四句命令而已:
1
2
3
4
|
sudo systemctl restart hostapd.service sudo ifconfig wlan0 10.5.5.1 netmask 255.255.255.0 sudo systemctl restart dnsmasq.service sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
也可以通过安装脚本实现:
wget https://codeload.github.com/oblique/create_ap/zip/master
unzip create_ap-master.zip
make install
然后systemctl enable create_ap
注意修改/usr/lib/systemd/system/create_ap.service
[Unit]
Description=Create AP Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/create_ap wlp2s0 enp3s0 devwireless password
KillSignal=SIGINT
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target