之前一直在 ubuntu 的图形界面中使用,突然需要在 ARM 板上打开热点,一时给弄蒙了,在此记录一下
显示所有网络信息
sudo ip link show
关闭或打开网络
sudo ip link set wlan0 down
sudo ip link set wlan0 up
激活或启动网络
sudo ifconfig wlan0 up
设置 ip 地址
sudo ifconfig wlan0 192.168.1.102
查看是否支持 ap 模式
sudo iw dev wlan0 info
在 linux 中管理 WIFI 的工具有很多,比如 wpa_supplicant、iw、netctl、connmanctl等
# 进入管理工具
sudo connmanctl
# 是能wifi
connmanctl enable wifi
# 开启代理
agent on
# 扫描 wifi
scan wifi
# 列出扫描的wifi列表,包括已连接的
services
# 连接wifi
connect <UUID>
# 断开wifi
disconnect <UUID>
# 检查当前连接的网络信息
info <UUID>
# 删除连接记录
remove <UUID>
# 退出
exit
打开热点主要使用的工具是 hostapd
编写热线 /etc/hostapd/hostapd.conf
配置文件,文件名可以任意
interface=wlan0 # 你的无线接口名
driver=nl80211 # 无线驱动类型
ssid=MyHotspot # 热点名称
hw_mode=g # 工作模式,g为802.11g,n为802.11n
channel=6 # 无线频道
macaddr_acl=0 # 不限制MAC地址
auth_algs=1 # 认证算法
ignore_broadcast_ssid=0
wpa=2 # WPA2安全
wpa_passphrase=MyPassPhrase # 密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
注意: 通畅情况下这么配置没问题,需要注意的是不热模块之间可能有细微的区别,主要查看对应的手册
启动热点
sudo hostapd -B /etc/hostapd/hostapd.conf
注意:此时启动的热点可以扫描到,但是无法连接,因为热点还无法为设备自动分配ip
目前常用的工具有 dnsmasq 和 udhcp,可以更具自己的需要进行选择,需要注意的是这两个工具都分为服务端和客户端,想要为热点分配 动态 ip 时,工具都要作为服务端才行
安装 udhcp
安装的过程这里就不介绍了,可以参考这位大佬的博客:https://www.cnblogs.com/schips/p/12132115.html
在 /etc/udhcpd.conf 中配置服务端信息,文件不存在创建即可
# The start and end of the IP lease block
start 192.168.1.20 #default: 192.168.0.20 客户端分配的地址范围
end 192.168.1.25 #default: 192.168.0.254
# The interface that udhcpd will use
interface wlan0 #default: eth 0 #目标板子上的无线网卡wlan0
#Examles
opt dns 222.201.130.30 222.201.130.33 #dns服务器
option subnet 255.255.255.0
opt router 192.168.1.10 #wlan的 ip地址,做为网关地址
option dns 192.168.1.10 # appened to above DNS servers for a total of 3
option domain local
option lease 864000 # 10 days of seconds
启动服务
sudo udhcpd
主要:这个和热点的启动无先后顺序,但是需要启动动态 ip 分配热点才能连接,但是会发现此时的热点还不能上网,需要进行 ip 转发才行
配置 ip 转发
# 检查是否启用了IP转发
sudo sysctl net.ipv4.ip_forward
# 临时启动转发
sudo sysctl -w net.ipv4.ip_forward=1
# 永久启动转发,文件不存在时创建即可
sudo vi /etc/sysctl.conf
# 在文件中添加
net.ipv4.ip_forward=1
# 立即生效
sudo sysctl -p /etc/sysctl.conf
# 检查是否应用
cat /proc/sys/net/ipv4/ip_forward
设置 NAT 规则
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
arm linux 移植 udhcp 与 使用:https://www.cnblogs.com/schips/p/12132115.html