概要
Linux 系统中还是使用 TP-Link TL-WN722N v1 创建热点(AP 模式),需要借助工具如 hostapd(创建热点)和 dnsmasq(提供 DHCP 服务)
热点创建
-
插入网卡,linux NetworkManager自动加载,先使用iw list查看是否支持ap模式
或者使用iw list | grep “Supported interface modes” -A 8
-
安装依赖工具
遇到的问题:更新失败
域名无法解析,定位是dns的问题
保存并重启网络配置
sudo systemctl restart NetworkManager
问题解决 -
安装hostapd
sudo apt install hostapd
-
停止冲突服务(不需要linuxwlanmanager来管理wifi了)
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager -
配置dhcp和dns
sudo vim /etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,24h
dhcp-option=3,192.168.1.1 # 网关
server=8.8.8.8 # DNS 服务器 -
启动dnsmasq服务
sudo systemctl restart dnsmasq
出现了启动失败问题:
查看报错详情:dnsmasq 默认使用端口 53(DNS)和 67(DHCP)。这些端口被其他服务占用,就会导致启动失败
检查端口占用
sudo netstat --ldtun | grep -E ‘:53|:67’
确实被占用了
停止冲突服务
systemd-resolved 占用了端口,可以临时停止它:systemd-resolved是systemd套件的一部分,主要用于DNS解析管理
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
服务正常启动:
-
创建配置热点文件(hostapd)
interface=wlan0
driver=nl80211
ssid=0000TP-LINK_ath9 # 热点名称
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=1234567890 # 密码
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP -
启动热点
sudo hostapd /etc/hostapd/hostapd.conf -B
出现了初始化失败:
注意:我们需要确认hostapd配置文件的语法规则。hostapd的配置文件是键值对的形式,每行一个参数,不允许在值后面添加注释
修改后:
再次启动,启动成功:
-
热点创建验证
此时已经可以扫描到wifi,并且可以拿到ip地址了:
网络连通性
用基础框架说明转发逻辑
- 启用 IP 转发
echo 1 > /proc/sys/net/ipv4/ip_forward
这是默认规则:sudo iptables -S
- 设置 iptables 规则:将 wlan0 的流量通过 ens33 转发
当连接到 wlan0 的设备访问外网时,其流量会通过 ens33 转发,且源 IP 地址会被替换为 ens33 的 IP 地址,从而实现 NAT 功能必须保留
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
允许所有从 wlan0 到 ens33 的转发流量
sudo iptables -A FORWARD -i wlan0 -o ens33 -j ACCEPT
允许所有从 ens33 到 wlan0 的转发流量
sudo iptables -A FORWARD -i ens33 -o wlan0 -j ACCEPT
再次查看规则:
- 为什么有一条规则不在这表里?
就要使用sudo iptables -t nat -S来查看了:
- 终端连接测试网络连通性
可以访问外网
看流量统计
ping百度:
如果 pkts 和 bytes 增加,说明规则生效
sudo iptables -t nat -L POSTROUTING -v -n
创建成功