安装软件包:

$ sudo apt-get install hostapd 
$ sudo apt-get install dnsmasq
$ sudo apt-get install isc-dhcp-server

hostapd将开启无线适配器的AP功能
dnsmasq DNS服务
isc-dhcp-server DHCP服务


取消wlan0的DHCP功能: 修改/etc/dhcpcd.conf文件,添加一行内容:

denyinterfaces wlan0

设置wlan0的静态IP:

# 修改文件 /etc/network/interfaces.d/wlan0 内容如下:
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.8.1
    netmask 255.255.255.0
    network 192.168.8.0
    broadcast 192.168.8.255

更新配置: 重启DHCP服务(客户端)和wlan0

sudo service dhcpcd restart
sudo ifdown wlan0
sudo ifup wlan0

新建配置文件: /etc/hostapd/hostapd.conf

# 指完无线网络接口
interface=wlan0

# Use the nl80211 driver with the brcmfmac driver
driver=nl80211

# SSID:无线网络名称
ssid=HelloWorld

# 使用2.4GHz频段
hw_mode=g

# 设置无线信道
channel=6

# 使能 802.11n 协议
ieee80211n=1

# 使能 WMM
wmm_enabled=1

# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

# 允许所有MAC地址
macaddr_acl=0

# 使用 WPA 认证
auth_algs=1

# 设置是否隐藏SSID
ignore_broadcast_ssid=0

# 使用 WPA2 认证
wpa=2

# 使用预共享密钥
wpa_key_mgmt=WPA-PSK

# 网络密钥(有最小长度要求)
wpa_passphrase=88888888

# 使用AES, 而不用TKIP
rsn_pairwise=CCMP

测试网络:

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

能搜取网络即可, 修改/etc/default/hostapd文件,用于自动启动

# 将 DAEMON_CONF=""修改为
DAEMON_CONF="/etc/hostapd/hostapd.conf"

使能DHCP服务

修改配置文件/etc/dhcp/dhcpd.conf,内容如下

default-lease-time 600;
max-lease-time 7200;
log-facility local7;
 
subnet 192.168.8.0 netmask 255.255.255.0 {
    # IP地址范围
    range 192.168.8.10 192.168.8.100;
    option routers 192.168.8.1;
    option broadcast-address 192.168.8.255;
    option domain-name-servers 8.8.8.8,8.8.4.4;
    default-lease-time 600;
    max-lease-time 7200;
}

如果运行提示失败,尝试以下命令:

/usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf

设置IP转发(重要)
修改/etc/sysctl.conf文件,去掉net.ipv4.ip_forward=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

保存路由表:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

设为开机自动加载: 修改/etc/rc.local文件,添加一行内容

iptables-restore < /etc/iptables.ipv4.nat

https://www.waveshare.net/study/portal.php?mod=view&aid=744


问题处理:

Job for hostapd.service failed because the control process exited with error code.
See "systemctl status hostapd.service" and "journalctl -xe" for details.

查看状态:

$ systemctl status hostapd.service
● hostapd.service
   Loaded: masked (Reason: Unit hostapd.service is masked.)

原因是masked,直接unmask即可

sudo systemctl unmask hostapd