之前一直在 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
二、WIFI 连接工具
在 linux 中管理 WIFI 的工具有很多,比如 wpa_supplicant、iw、netctl、connmanctl等
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
四、动态 ip 分配
目前常用的工具有 dnsmasq 和 udhcp,可以更具自己的需要进行选择,需要注意的是这两个工具都分为服务端和客户端,想要为热点分配 动态 ip 时,工具都要作为服务端才行
udhcp 使用
-
安装 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 转发
# 检查是否启用了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