配置LINUX系统的wifi为AP模式(学习记录)

配置LINUX系统的wifi为AP模式(学习记录)

1.背景

需求:需要使用UDP服务,直接传输一定格式的数据文件给APP,所以,这里把英伟达的linux系统作为UDP
的服务端,APP作为UDP的客户端,当客户端发送心跳请求给服务器,服务器拿到客户端的ip和端口,就可以
读取数据文件,直接写到客户端。

1.1 为什么配置linux的WIFI为AP模式,就可以使用UDP服务

实现方案:选用wifi作为无线网络的基础设施

   配置 Linux 的 WiFi 为 AP(访问点)模式允许它充当无线网络的基础设施,这样其他设备可以连接到
该网络并访问其中的服务。
   UDP(用户数据报协议)是一种无连接的网络传输协议,它允许在网络上快速发送数据包,但不提供数据包
的可靠传递或按顺序传递。因此,UDP 在许多情况下用于实时通信或需要快速传输而不关心丢失一些数据的
应用中。
   当你将 Linux 设备配置为 WiFi 访问点并运行 UDP 服务时,其他设备可以连接到该访问点,并通过 
UDP 协议与 Linux 设备进行通信。这意味着,你可以在 Linux 设备上运行 UDP 服务(如游戏服务器、
流媒体服务器等),并允许连接到该 WiFi 网络的其他设备通过该服务进行通信。

总的来说,配置 Linux 的 WiFi 为 AP 模式允许其他设备连接到它,而运行 UDP 服务则允许这些连接的
设备通过 UDP 协议进行通信。

其实就是设置设备为AP模式之后,相当于一个服务器,其它设备作为客户端可以通过它的热点连接它,形成一个局域网,进行数据和资源分享。

1.2 其它概念

局域网(LAN)是指在相对较小的地理范围内(例如办公室、学校、家庭等)连接在一起的计算机网络。它通常由一组相互连接的计算机
和网络设备组成,这些设备可以共享资源和信息。

2. 配置linux的AP模式

2.1 概念

配置wifi模块网络模式
AP:无线接入点(Access Point),作为一个服务器,可以连接其他AP设备,允许STA设备接入,实现设备集中管理及局域网无线控制.
通常称wifi热点。

2.2 流程

调用命令行的方式,配置linux的AP模式,不需要在代码内编写

常用的wifi工具:iw、wireless、nmcli

wifi配置为AP模式的话,需要使用hostapd工具设置wifi的信息以及账号密码,使用dhcp,
用于分配连接设备的地址池。

一般流程:调用命令行wifi工具设置wif——>设置wifi为AP模式——>设置wifi账号和密码
-——>分配wifi静态地址即可

2.3 命令行配置linux的wifi的AP模式

2.3.1 因为我的linux系统上不了外网,所以先连接手机热点

1.扫描附近的 WiFi 网络:
   使用 nmcli 或其他网络管理工具扫描附近可用的 WiFi 网络。例如,使用以下命令扫描 WiFi 网络:
   nmcli device wifi list
2.连接到 WiFi 热点:
   一旦找到你想连接的 WiFi 热点,使用以下命令连接到它:
   nmcli device wifi connect “SSID” password “PASSWORD”
   其中,SSID 是 WiFi 网络的名称,PASSWORD 是连接密码。

2.3.2 下载相关工具(例如:hostapd)

sudo apt-get update
sudo apt-get install hostapd

2.3.3 配置wifi的hostapd(在 /ect/hostapd/hostapd.conf)

# 无线接口名称
interface=wlan0

# 驱动程序类型
driver=nl80211

# 访问点的名称
ssid=wifi_jetson

# 访问点的运行模式和频道
hw_mode=g
channel=6

# 访问点的认证方式和密码
auth_algs=1
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP

2.3.4 配置udhcpd.conf(在/etc/udhcpd.conf)

start       192.168.20.2    # 起始 IP 地址
end         192.168.20.20    # 结束 IP 地址
interface   wlan0             # 监听的网络接口
max_leases  50               # 最大租约数量
option      subnet   255.255.255.0
option      lease    864000   # 租约时长,单位秒(10 天)
option      router   192.168.20.1
option      dns     8.8.8.8 219.239.26.42  # DNS 服务器地址

2.3.5 用命令行配置wifi为AP模式

sudo nmcli connection down "wifi_name"    #断连以前连接的wifi热点
sudo ifconfig wlan0 down
sudo iw dev wlan0 set type __ap
nmcli connection show --active
sudo ifconfig wlan0 up
sudo kill hostapd /etc/hostapd/hostapd.conf -B(原来的)
sudo hostapd /etc/hostapd/hostapd.conf -B
ifconfig wlan0 192.168.20.1
udhcpd /etc/udhcpd.conf

2.4 配置开机自启动wifi为AP模式

2.4.1 配置和启动无线接入点(AP)的 Bash 脚本

cd  /etc/init.d/
sudo vi start_ap_mode
在start_ap_mode里边写:
#!/bin/bash
  
o=/tmp/log
echo start >> $o
sudo nmcli connection down "auto_zhd"
sudo ifconfig wlan0 down
sudo killall hostapd
sudo iw dev wlan0 set type __ap
nmcli connection show --active
sudo ifconfig wlan0 up
sudo kill $(pgrep hostapd)
sleep 5
sudo hostapd /etc/hostapd/hostapd.conf -B
# 等待连接建立
sudo ifconfig wlan0 192.168.20.1
sudo killall udhcpd
sudo udhcpd /etc/udhcpd.conf

echo done >> $o
2.4.1.1 解释
#!/bin/bash: 这是 Bash 脚本的开头,指定了脚本要使用的解释器。
o=/tmp/log: 定义了一个变量 o,用于指定日志文件的路径为 /tmp/log。
echo start >> $o: 将字符串 "start" 写入日志文件。
sudo nmcli connection down "auto_zhd": 使用 NetworkManager 命令行工具 nmcli 关闭名为 "auto_zhd" 的网络连接。
sudo ifconfig wlan0 down: 使用 ifconfig 命令关闭 wlan0 网络接口。
sudo killall hostapd: 终止所有名为 hostapd 的进程。
sudo iw dev wlan0 set type __ap: 将 wlan0 网络接口的模式设置为 AP(接入点)模式。
nmcli connection show --active: 显示当前激活的网络连接。
sudo ifconfig wlan0 up: 使用 ifconfig 命令启动 wlan0 网络接口。
sudo kill $(pgrep hostapd): 终止与 hostapd 相关的进程。
sleep 5: 等待 5 秒。
sudo hostapd /etc/hostapd/hostapd.conf -B: 启动 hostapd 进程,使用 /etc/hostapd/hostapd.conf 配置文件配置。
sudo ifconfig wlan0 192.168.20.1: 将 wlan0 网络接口的 IP 地址设置为 192.168.20.1。
sudo killall udhcpd: 终止所有名为 udhcpd 的进程。
sudo udhcpd /etc/udhcpd.conf: 使用 /etc/udhcpd.conf 配置文件启动 udhcpd 进程。
echo done >> $o: 将字符串 "done" 写入日志文件。
这个脚本的主要目的是配置并启动一个无线接入点,允许其他设备连接到该设备,并提供网络服务。

2.4.2 Systemd 服务单元文件

作用:在系统启动时启动无线网络服务,并在系统关闭时停止该服务。
cd /etc/systemd/system
sudo vi wlan0.service

[Unit]
Description=Wlan Service                                                 
#SourcePath=/etc/init.d/start_ap_mode                                              
#Requires=wcnss_wlan.service                                              
After=network.target auditd.service

[Service]
Restart=no                                                               
RemainAfterExit=yes                                                      
ExecStart=/etc/init.d/start_ap_mode start                                    
ExecStop=/etc/init.d/start_ap_mode stop                                      

[Install]
WantedBy=multi-user.target  
Alias=wlan.service

2.4.3 将服务加入开机自启动

# 将服务加入开机自启动
systemctl enable Service_Name

# 禁止服务开机自启动
systemctl disable Service_Name

# 查看服务是否开机自启动
systemctl is-enabled Service_Name

# 查看所有开机自启动服务
systemctl list-unit-files --type service | grep 'enabled'
参考大佬链接:
https://systemd-book.junmajinlong.com/auto_tasks_on_boot.html

2.4.4 异常情况

开机变成AP模式之后,过一会又变成manage了,原因是因为网络设置以前连接过别人的wifi热点,系统服务间断时间的去连接这个热点,
所以又改变了。

两种方法:第一:接显示器,配置断开wifi自动重连人家的热点;第二,找到配置自动连接wifi的配置文件,更改wifi节点,比如现在用的
是wlan0,那就随便改为wlan1,配置文件,不知道路径在哪,可以 sudo grep -inr wlan0,就可以

2.4.5 补充概念

/etc/wpa_supplicant/wpa_supplicant.conf是在Linux系统中用于配置Wi-Fi网络连接的文件,它由wpa_supplicant网络配置工具使用。
wpa_supplicant是一个常用的Wi-Fi连接管理工具,它允许Linux系统与Wi-Fi网络进行连接和通信。

在wpa_supplicant.conf文件中,您可以配置以下内容:

Wi-Fi网络的身份验证方式(如WPA-PSK、WPA-EAP等)和密码
记住过的Wi-Fi网络的信息
优先连接的Wi-Fi网络
该配置文件通常包含了Wi-Fi网络的SSID、密码、安全协议(如WPA、WPA2)、EAP类型(如果适用)、优先级等信息。

通过编辑/etc/wpa_supplicant/wpa_supplicant.conf文件,您可以手动配置Linux系统用于连接Wi-Fi网络的相关设置,包括自动连接到
Wi-Fi
网络以及管理已知的Wi-Fi网络信息。
/etc/network/interfaces文件是用于配置Linux系统网络接口的文件,在许多基于Debian的发行版(如Ubuntu)中被广泛使用。
这个文件定义
了系统中的网络接口的配置,包括IP地址、子网掩码、网关、DNS等信息。

在/etc/network/interfaces文件中,您可以配置以下内容:

静态IP地址、子网掩码、网关和DNS服务器
动态获取IP地址的方式(DHCP)
虚拟网桥和 VLAN 接口的设置
指定网络接口的启用和禁用
比如:
这个文件的典型内容可能如下所示:
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8
在这个例子中,eth0是网络接口的名称,配置为静态IP地址(static),并指定了IP地址、子网掩码、网关和DNS服务器。

通过编辑/etc/network/interfaces文件,您可以手动配置Linux系统中网络接口的各种设置,而不依赖于网络管理器等工具。需要注意的是,
对于使用NetworkManager的系统,可能会使用/etc/network/interfaces文件之外的其他配置方式来管理网络接口。
/etc/NetworkManager是Linux系统中NetworkManager网络管理器的配置文件目录。在这个目录下存储了NetworkManager服务的相关配置
文件,
用于管理网络连接和设置。

具体来说,您可以在/etc/NetworkManager目录下找到以下一些重要的配置文件和子目录:

NetworkManager.conf: 这是NetworkManager服务的主要配置文件,包含了全局配置选项,比如DNS设置、连接优先级、设备配置等。
conf.d/: 这个子目录用于存放额外的配置文件,可以对NetworkManager进行更细粒度的配置。
dispatcher.d/: 这个子目录包含了NetworkManager的事件处理脚本,可以在连接状态改变时执行特定操作。
system-connections/: 这个子目录存储了每个用户配置的网络连接文件,包括Wi-Fi、以太网、VPN等不同类型的连接配置文件。

3. 配置wifi可以连别的热点(STA)

3.1 概念

配置wifi模块的网络模式:STA ;   终端站点station,作为一个客户端,本身不接受无线的接入,
但是STA设备可以连接到AP节点进行网络访问和数据交换。

3.2 使用命令行方式配置

# 扫描可用的Wi-Fi网络
nmcli device wifi list

# 连接到指定热点
nmcli device wifi connect [SSID] password [password]
其中,[SSID]是热点的名称,[password]是连接密码

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值