之前一直在 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