avatar

甄天祥-Linux-个人小站

A text-focused Halo theme

  • 首页
  • 分类
  • 标签
  • 关于
Home Ubuntu-20.04 新建 AP 热点并分享
文章

Ubuntu-20.04 新建 AP 热点并分享

Posted 2025-03-3 Updated 2025-03- 3
By Administrator
41~53 min read

hostapd 是一个在 Linux 系统上运行的用户空间守护进程,用于将网络接口(如无线网卡)配置为 无线接入点(AP)。它支持多种无线标准,包括 IEEE 802.11a/b/g/n/ac,并且能够管理 Wi-Fi 网络的安全性、加密、身份验证等。

hostapd 的功能:

  1. 创建无线接入点: hostapd 允许你通过配置文件定义无线网络的参数,例如 SSID(服务集标识符)、信道、加密方式等,从而将无线网卡转换为无线接入点。

  2. 无线网络安全: 支持多种加密协议(如 WPA/WPA2-PSK、WPA3)和身份验证机制(如 RADIUS、802.1X),提供强大的无线网络安全保障。

  3. 管理无线设备: hostapd 能够实时管理无线设备的连接、认证、身份验证等。例如,能够控制客户端的连接、断开、重新认证等。

  4. 支持多种认证方式: 支持多种无线认证协议,包括:

    • WPA2-PSK(基于密码的认证方式)

    • WPA2-EAP(基于 RADIUS 的企业级认证)

    • WPA3(更加安全的认证协议)

    还可以与 RADIUS 服务器配合使用,进行集中式认证和授权。

  5. 支持频谱控制和信号强度调节: 可以配置无线网络的信道、频段、信号强度等,帮助避免干扰并提高网络的稳定性。

  6. 性能优化: 支持高效的 802.11n/ac 数据传输和性能调优选项,如调整无线频段、信道带宽等。

  7. 客户端控制: 提供有关连接的客户端信息,并能够在某些情况下进行访问控制,如限制连接数量或封禁特定设备的 MAC 地址。

hostapd 配置文件

hostapd 的配置文件通常位于 /etc/hostapd/hostapd.conf,其中包含了定义无线接入点的所有参数。以下是一个常见的 hostapd.conf 配置文件示例:

conf复制编辑# 配置无线接口
interface=wlp2s0
driver=nl80211  # 使用 nl80211 驱动程序(大多数现代 Linux 系统)
ssid=Ubuntu-20.04-WiFi  # SSID 是你的无线网络名称
channel=6  # 无线信道
hw_mode=g  # 工作模式:g表示2.4GHz 802.11g
auth_algs=1  # 认证算法,1 表示仅使用 WPA
wpa=3  # WPA2 加密
wpa_passphrase=Tian18332825309.  # WPA2 密码
wpa_key_mgmt=WPA-PSK  # WPA-PSK 密钥管理模式
rsn_pairwise=CCMP  # 加密算法:CCMP 是 AES 加密算法

常用参数解释:

  • interface:指定无线网络接口,如 wlp2s0。

  • driver:指定使用的无线驱动程序,通常为 nl80211,这是现代 Linux 系统的默认驱动。

  • ssid:设置无线网络的 SSID(名称),即设备扫描时显示的名称。

  • channel:设置无线信道(1-13 范围内的信道)。根据地域法规,不同的信道可用性有所不同。

  • hw_mode:设置工作模式,如 g(2.4GHz 802.11g)、a(5GHz 802.11a)等。

  • auth_algs:指定认证算法,1 表示 WPA、WPA2 认证,3 表示 WPA、WPA2 和 802.1X 认证。

  • wpa:设置 WPA 加密版本,2 代表 WPA2。

  • wpa_passphrase:设置无线网络的密码。

  • wpa_key_mgmt:指定 WPA 密钥管理协议,WPA-PSK 是最常用的个人密码密钥管理协议。

  • rsn_pairwise:设置加密算法,CCMP 是 AES 加密算法,适用于 WPA2。

一、网络基本信息设置

首先我的网络信息如下:

确保使用 networkd 来管理的网络服务,而不是 Network-Manager

root@big-server:~# cat /etc/netplan/01-network-manager-all.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: false
      addresses:
        - 192.168.1.12/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 223.5.5.5
          - 8.8.8.8
    enp6s0:
      dhcp4: false
      addresses:
        - 10.0.0.1/16
    wlp2s0:
      dhcp4: false
      addresses:
        - 192.168.10.1/24

在此为大家介绍一下,enp3s0 也就是属于 WAN 口,属于出网网口,其余的是 LAN 口,输入内网网口,那么客户端再连接到本机之后如何上网呢,就是通过如下的 iptables 规则实现的。

1. 配置 iptables 规则

root@big-server:~# cat route-iptables.sh 
#!/bin/bash
# /data/firewall-set.sh
​
# 根据你的WAN网卡名称对应修改!!!
WAN_NAME='enp3s0'
​
# IPv4设置
iptables -t nat -N mt_rtr_4_n_rtr
iptables -t nat -A POSTROUTING -j mt_rtr_4_n_rtr
iptables -t nat -A mt_rtr_4_n_rtr -o ${WAN_NAME} -j MASQUERADE # 添加路由到作为WAN的网卡的自动源地址转换规则
​
# 添加IPv4转发优化规则
iptables -t mangle -N mt_rtr_4_m_rtr 
iptables -t mangle -A FORWARD -j mt_rtr_4_m_rtr
iptables -t mangle -A mt_rtr_4_m_rtr -o ${WAN_NAME} -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu # 针对PPPoE链接的优化
iptables -t mangle -A mt_rtr_4_m_rtr -m state --state RELATED,ESTABLISHED -j ACCEPT # 允许已建立连接的数据包直接通过
iptables -t mangle -A mt_rtr_4_m_rtr -m conntrack --ctstate INVALID -j DROP
iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -t mangle -A mt_rtr_4_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -t mangle -A mt_rtr_4_m_rtr -i br_lan -o ${WAN_NAME} -j ACCEPT
​
# IPv6 NAT设置,与IPv4基本一致
ip6tables -t nat -N mt_rtr_6_n_rtr
ip6tables -t nat -A POSTROUTING -j mt_rtr_6_n_rtr
ip6tables -t nat -A mt_rtr_6_n_rtr -o ${WAN_NAME} -j MASQUERADE # 添加路由到作为WAN的网卡的自动源地址转换规则
​
# 添加IPv6转发优化规则
ip6tables -t mangle -N mt_rtr_6_m_rtr
ip6tables -t mangle -A FORWARD -j mt_rtr_6_m_rtr
ip6tables -t mangle -A mt_rtr_6_m_rtr -o ${WAN_NAME} -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip6tables -t mangle -A mt_rtr_6_m_rtr -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -t mangle -A mt_rtr_6_m_rtr -m conntrack --ctstate INVALID -j DROP
ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
ip6tables -t mangle -A mt_rtr_6_m_rtr -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
ip6tables -t mangle -A mt_rtr_6_m_rtr -i br_lan -o ${WAN_NAME} -j ACCEPT

2. 配置内核转发

root@big-server:~# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.route_localnet=1
​
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1

lsmod 查看有没有加载此模块, nf_conntrack 用于跟踪 iptables 规则

root@big-server:~# vim /etc/modules-load.d/custom-modules.conf
# Located in /etc/modules-load.d/custom-modules.conf
nf_conntrack

3. 应用规则

root@big-server:~# bash  route-iptables.sh

使用 iptables-persistent 进行持久化配置: apt -y install iptables-persistent root 身份运行脚本, 然后执行 netfilter-persistent save

二、安装配置 hostapd 服务

1. 安装

root@big-server:~# apt-get update
root@big-server:~# apt-get install hostapd dnsmasq 

2. 准备配置文件

root@big-server:~# vim /etc/hostapd/hostapd.conf
interface=wlp2s0
driver=nl80211
ssid=Ubuntu-20.04-WiFi
channel=6
auth_algs=1
hw_mode=g
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=Tian18332825309.
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

确保 /etc/default/hostapd 文件中正确指定了配置文件路径

root@big-server:~# vim /etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

3. 检查网卡是否支持 AP

root@big-server:~# iw list | grep -A 2 "Supported interface modes"
	Supported interface modes:
		 * managed
		 * AP

4. 启动 hostapd:

可以通过以下命令启动 hostapd 服务:

root@big-server:~#  systemctl start hostapd

如果希望 hostapd 在系统启动时自动启动,可以启用该服务:

root@big-server:~#  systemctl enable hostapd

5. 查看 hostapd 服务状态:

root@big-server:~# systemctl status hostapd
● hostapd.service - Advanced IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP Authenticator
     Loaded: loaded (/lib/systemd/system/hostapd.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2025-02-27 22:27:22 CST; 28min ago
   Main PID: 888 (hostapd)
      Tasks: 1 (limit: 9219)
     Memory: 1.9M
     CGroup: /system.slice/hostapd.service
             └─888 /usr/sbin/hostapd -B -P /run/hostapd.pid -B /etc/hostapd/hostapd.conf

2月 27 22:39:43 big-server hostapd[888]: wlp2s0: STA 42:de:64:a8:df:7d IEEE 802.11: authenticated
2月 27 22:39:43 big-server hostapd[888]: wlp2s0: STA 42:de:64:a8:df:7d IEEE 802.11: associated (aid 1)
2月 27 22:39:43 big-server hostapd[888]: wlp2s0: STA 42:de:64:a8:df:7d RADIUS: starting accounting session 62AD224C1AD7BBA1
2月 27 22:39:43 big-server hostapd[888]: wlp2s0: STA 42:de:64:a8:df:7d WPA: pairwise key handshake completed (RSN)
2月 27 22:40:10 big-server hostapd[888]: wlp2s0: STA 46:43:e5:00:d8:56 IEEE 802.11: authenticated
2月 27 22:40:10 big-server hostapd[888]: wlp2s0: STA 46:43:e5:00:d8:56 IEEE 802.11: associated (aid 2)
2月 27 22:40:10 big-server hostapd[888]: wlp2s0: STA 46:43:e5:00:d8:56 RADIUS: starting accounting session 060FF170B718B516
2月 27 22:40:10 big-server hostapd[888]: wlp2s0: STA 46:43:e5:00:d8:56 WPA: pairwise key handshake completed (RSN)
2月 27 22:47:21 big-server hostapd[888]: wlp2s0: STA 46:43:e5:00:d8:56 WPA: group key handshake completed (RSN)
2月 27 22:47:23 big-server hostapd[888]: wlp2s0: STA 42:de:64:a8:df:7d WPA: group key handshake completed (RSN)

6. 解决报错

如果出现报错:Failed to start hostapd.service: Unit hostapd.service is masked

root@big-server:~# systemctl unmask hostapd
root@big-server:~# systemctl enable hostapd
root@big-server:~# systemctl restart hostapd

三、安装 DHCP 服务

1. 安装

root@big-server:~# apt update
root@big-server:~# apt install isc-dhcp-server

2. 准备配置文件

root@big-server:~# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
root@big-server:~# vim /etc/dhcp/dhcpd.conf
# 全局配置
option domain-name "example.com";  # 设置域名
option domain-name-servers 223.5.5.5, 8.8.4.4;  # 设置 DNS 服务器(可以使用 Google 的公共 DNS)

default-lease-time 600;  # 默认租期(秒)
max-lease-time 7200;  # 最大租期(秒)
authoritative;  # 声明 DHCP 服务器是权威的

# 定义子网
subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.100 192.168.10.200;  # 可分配的 IP 地址范围
    option routers 192.168.10.1;  # 网关地址,就是无线网卡地址
    option broadcast-address 192.168.1.255;  # 广播地址
    option subnet-mask 255.255.255.0;  # 子网掩码
}

3. 启动服务

root@big-server:~# systemctl enable isc-dhcp-server --now
root@big-server:~# systemctl status isc-dhcp-server
● isc-dhcp-server.service - ISC DHCP IPv4 server
     Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2025-02-27 22:39:44 CST; 15min ago
       Docs: man:dhcpd(8)
   Main PID: 46014 (dhcpd)
      Tasks: 4 (limit: 9219)
     Memory: 6.1M
     CGroup: /system.slice/isc-dhcp-server.service
             └─46014 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf wlp2s0

2月 27 22:40:13 big-server dhcpd[46014]: DHCPOFFER on 192.168.10.101 to 46:43:e5:00:d8:56 (iPhone) via wlp2s0
2月 27 22:40:14 big-server dhcpd[46014]: DHCPREQUEST for 192.168.10.101 (192.168.10.1) from 46:43:e5:00:d8:56 (iPhone) via wlp2s0
2月 27 22:40:14 big-server dhcpd[46014]: DHCPACK on 192.168.10.101 to 46:43:e5:00:d8:56 (iPhone) via wlp2s0
2月 27 22:40:14 big-server dhcpd[46014]: reuse_lease: lease age 0 (secs) under 25% threshold, reply with unaltered, existing lease for 192.168.10.101
2月 27 22:40:14 big-server dhcpd[46014]: DHCPREQUEST for 192.168.10.101 (192.168.10.1) from 46:43:e5:00:d8:56 (iPhone) via wlp2s0
2月 27 22:40:14 big-server dhcpd[46014]: DHCPACK on 192.168.10.101 to 46:43:e5:00:d8:56 (iPhone) via wlp2s0
2月 27 22:45:00 big-server dhcpd[46014]: DHCPREQUEST for 192.168.10.101 from 46:43:e5:00:d8:56 (iPhone) via wlp2s0
2月 27 22:45:00 big-server dhcpd[46014]: DHCPACK on 192.168.10.101 to 46:43:e5:00:d8:56 (iPhone) via wlp2s0
2月 27 22:45:21 big-server dhcpd[46014]: DHCPREQUEST for 192.168.10.100 from 42:de:64:a8:df:7d (iPhone) via wlp2s0
2月 27 22:45:21 big-server dhcpd[46014]: DHCPACK on 192.168.10.100 to 42:de:64:a8:df:7d (iPhone) via wlp2s0


Linux系统与应用
Linux
License:  CC BY 4.0
Share

Further Reading

Aug 6, 2025

Linux 使用 lvm 管理设备挂载分区

LVM(逻辑卷管理)是Linux环境下用于灵活管理磁盘分区的机制。它允许管理员将多个磁盘分区整合为一个卷组,形成存储池,并在卷组上创建逻辑卷以供使用。LVM的主要优点包括:文件系统大小不受物理磁盘限制、可在线扩展文件系统、支持新磁盘添加到存储池中、数据冗余以及方便的数据迁移。然而,LVM也存在一些局限性,比如移除磁盘时的操作复杂性、单个磁盘故障可能影响整个卷组、不能减小文件系统大小以及可能影响存储性能。LVM的基本组成包括物理卷(PV)、卷组(VG)、逻辑卷(LV)和物理块(PE)。创建LVM的过程涉及初始化物理卷、创建卷组、创建逻辑卷、格式化逻辑卷、挂载并配置自动挂载等步骤。通过这些操作,LVM提供了一种高效且灵活的方式来管理和扩展Linux系统的存储资源。

May 19, 2025

Linux 运维常用脚本和工具

本文档详细介绍了多个脚本及其用途,涵盖了ETCD备份、远程同步、Harbor仓库同步、压缩与解压缩、计划任务、网站健康监控、带宽流量统计、MySQL查询、SSH管理及K8S相关操作等。以下是每个部分的简洁摘要: ### 一、ETCD 备份 - **主程序脚本**:通过选择健康的ETCD节点进行快照备份,并删除超过7天的旧备份。 - **systemd 管理脚本**:配置systemd服务以定时执行ETCD备份。 - **systemd 定时任务**:每4小时运行一次ETCD备份。 ### 二、远程同步 - **定时远程同步本地文件**:每天凌晨1点将最新的6个ETCD备份文件同步到远程服务器。 - **脚本本地目录同步到远程**:同步本地目录(如mysql-backup、pgsql-backup和mongodb-backup)到远程服务器,支持重试机制并记录日志。 ### 三、Harbor 仓库远程自动同步 - **harbor-sync.sh**:自动同步A仓库的镜像到B仓库,支持守护模式和日志记录。 - **systemd 管理脚本**:配置systemd服务以持续运行Harbor同步脚本。 ### 四、常用Shell脚本 - **解压缩**:使用`tar`和`pigz`进行多线程压缩和解压缩。 - **计划任务**:同步本地最新目录到远端,执行脚本自动导入数据库。 - **循环探活网站**:使用`curl`和`ping`定期检查多个URL的健康状态。 - **带宽流量统计**:使用Python脚本统计多台服务器的出入口带宽流量。 - **参数化同步脚本**:灵活备份任意目录到远程位置,支持多种选项和错误处理。 ### 五、MySQL 常用语法 - **查询数据库存储使用大小**:查询整个数据库或单个数据库的存储使用情况。 ### 六、SSH 操作相关脚本 - **测试远程登录**:批量测试多个主机的SSH连接。 - **维护用户名密码**:批量修改密码、创建用户、设置sudo权限和修复SSH端口。 - **配置免密登录**:批量配置多台主机的SSH免密登录。 - **自动化远程机器执行脚本**:批量上传并执行本地脚本到远程机器,支持危险命令检测。 ### 七、K8S 和容器相关脚本 - **根据域名查询Ingress**:查询所有命名空间中匹配特定域名的Ingress及其TLS Secret。 - **更新Ingress使用的Secret**:更新指定域名的Ingress所使用的TLS证书。 这些脚本提供了从备份、同步、监控到自动化管理的一系列功能,适用于多种运维场景。

Mar 20, 2025

Linux 双网卡网络回包问题

一、背景 办公网:172.16.246.171/24 内网:192.168.0.0/16 最近我在使用 ESXI 和 vCenter 虚拟机工具,由于服务器网卡不是很多,只有4张卡,并且2个电口2个光口,由于没有使用光口交换机只有电口交换机,所以也就使用的电口网卡 由于创建虚拟机不想影响到办公网络,

OLDER

Ansible-playbook 自动化离线部署 Kubernetes 集群

NEWER

Ubuntu-22.04.2 配置本地APT源仓库

Recently Updated

  • Kubernetes 安装部署 Alist 并配置 Onlyoffice
  • KubeSphere-04-Dev-ops 流水线插件的使用
  • KubeSphere-03-Logging 日志插件的使用
  • KubeSphere-02-Service Mesh 的使用
  • KubeSphere-01-介绍与基础使用

Trending Tags

KVM Service Mesh Docker shell 路由规则 Mysql Containerd GitOps 网络设备 Prometheus

Contents

©2025 甄天祥-Linux-个人小站. Some rights reserved.

Using the Halo theme Chirpy