首頁 >系統教程 >Linux >無AP模式下的CentOS7使用hostapd實現的完整指南

無AP模式下的CentOS7使用hostapd實現的完整指南

王林
王林轉載
2024-01-04 09:55:38855瀏覽

這篇是 linux 下使用 hostapd 實現無線存取點 AP 模式的另一種實作方式:hostapd 路由模式設定。

對於軟硬體的基本配置及 hostapd 安裝在《CentOS 7 之 hostapd AP模式配置》的前半部分內容中有說明,可以先看看那篇,再看本文。

hostapd 的AP模式配置所需的有線網卡和無線網卡進行橋接,那路由模式配置主要就是將無線網卡的資料透過有線網卡偽裝、轉送兩個方面,也就不再需要將有線和無線網卡進行橋接。

配置這種路由模式就類似一台普通的無線路由器,有線網口就相當於普通無線路由器的WAN 接口,無線網卡就負責發送廣播無線信號供手機、筆記本的無線設備接入實現網絡訪問。

但也有區別的地方就是跟普通無線路由器相比,這種實現方式沒有四個普通的 LAN 接口,不能供其它台式機等進行有線連接。

其實 linux 作為網路功能為主的作業系統也是可以連接的,只是需要交換器等設備等,會複雜些。我這裡的設定就當作沒有四個 LAN 介面的普通無線路由器。

hostapd.conf 設定

這裡只是一個最小化的配置:

# /etc/hostapd/hostapd.conf 最小化設定

interface=wlp2s0

#bridge=br0                     以

driver=nl80211

ssid=test

hw_mode=g

channel=1

auth_algs=3

ignore_broadcast_ssid=0                 # 是否使用廣播,且以0 廣播

wpa=3

wpa_passphrase=12345678                 # 無線連接密碼

設定跟AP模式設定檔類似,只要註解掉 bridge=br0 選項就可以。

有線介面設定

首先我們需要正確設定有線介面並且可以正常上網。最簡單的是方式就是從路由器那自動取得IP位址、閘道、DNS。如果沒有路由器的話就需要手動設定有線介面的上網方式,例如常用的PPPOE方式、靜態IP位址方式、動態取得IP位址方式等。反正動態取得IP位址的最簡單。

無線介面設定 使用 ip addr add 指令

使用 ip addr add 指令設定無線網卡的 IP 位址,重新啟動後就會失效。例如172.16.0.1/24或其他私有位址,還有就是不要與有線網路卡處在同一個網段。一般有線網路卡從路由器取得的IP位址是 192.168.1.0/24 網段位址。

ip addr add 172.16.0.1/24 dev wlp2s0

坑提示:目前 CentOS 7 預設使用的是 NetworkManager 套件作為網路設定工具。這裡遇到一個問題就是,NetworkManager 套件其提供的nmcli 指令並不支援為無線網卡設定靜態的IP 位址,這需要使用ip addr add 指令手動設定無線網卡的IP 位址或在/etc/sysconfig/network -scripts/ 資料夾下面新建設定文件,這是比較老且經典的一種介面配置方式。

使用網路設定檔

#如要想想儲存設置,可以新建一個檔案 /etc/sysconfig/network-scripts/ifcfg-static-wlp2s0 ,檔案名稱以 ifcfg 前綴。

vi /etc/sysconfig/network-scripts/ifcfg-static-wlp2s0

[root@server ~]# vi /etc/sysconfig/network-scripts/ifcfg-static-wlp2s0

#TYPE=Ethernet

#BOOTPROTO=none

#DEFROUTE=yes

#IPV4_FAILURE_FATAL=no

#IPV6INIT=yes

##IPV6_AUTOCONF=yes

#IPV6_DEFROUTE=yes

#IPV6_FAILURE_FATAL=no

#NAME=static-wlp2s0

#UUID=a036678e-8fdf-48f3-8693-961bb6326i744 

#DEVICE=wlp2s0                               

ONBOOT=yes                                

IPADDR=172.16.0.1                             

PREFIX=24                              

#GATEWAY=192.168.10.254                       地

#DNS1=127.0.0.1

#DNS2=192.168.10.254

#IPV6_PEERDNS=yes

#IPV6_PEERROUTES=yes

儲存後需要先停止 NetworkManager.service 服務,最好禁止開機啟動,不然還是會有問題。主要表現為開機時 network.service 無法啟動。

禁止 NetworkManager.service 服務開機啟動

systemctl disable  NetworkManager.service

#停止 NetworkManager.service 服務

systemctl stop  NetworkManager.service

##想看看有沒有生效可以重新啟動 network.service 服務或直接重新啟動系統。

systemctl restart network.service

啟用轉送與設定介面偽裝 啟用轉送

使用 sysctl -w 重新啟動後會失效

sysctl -w net.ipv4.ip_forward=1

[root@server ~]# sysctl -w net.ipv4.ip_forward=1

net.ipv4.ip_forward = 1

啟用 IP 轉送重新啟動後不會失效使用下列方法,系統重新啟動後會自動載入 /etc/sysctl.d/ 資料夾下的設定。

vi /etc/sysctl.d/ip_forward.conf

#[root@server ~]# vi /etc/sysctl.d/ip_forward.conf 

#net.ipv4.ip_forward = 1

設定介面偽裝

#CentOS 7 中使用 firewalld 和 iptables 都能做到介面偽裝。 CentOS 7 中預設啟用的是 firewalld.service 服務。 iptables 服務和 firewalld 服務衝突,兩者只能啟用其中一個。

使用 firewalld 設定介面偽裝

如果能使用圖形介面配置的話更加簡單明了,這裡只使用 firewalld-cmd 指令方式配置。

如果沒有啟動 firewalld.service 服務,則需要先啟動 firewalld.service 服務。

systemctl start firewalld.service

將無線介面加入到 trust 區域,並儲存設定。預設所有介面屬於 public 區域,連線限制較嚴格,會導致無法連線。

firewall-cmd --zone=trusted --add-interface=wlp2s0 --permanent

[root@server ~]# firewall-cmd --zone=trusted --add-interface=wlp2s0 --permanent 

##success

對有線介面所在的區域啟用偽裝,並儲存配置,預設有線介面屬於 public 區域。

firewall-cmd --zone=public --add-masquerade --permanent

[root@server ~]# firewall-cmd --zone=public --add-masquerade --permanent 

##success

重啟 firewalld 服務

systemctl restart firewalld.service

使用 iptables 設定介面偽裝

如果習慣使用 iptables ,需要安裝 iptables-services 這個套件,裡麵包含 iptables.service 和 ip6tables.service 這兩個服務,分別用於 ipv4 和 ipv6。

要使用 iptables 需要先停止並停用 firewalld.service 服務

systemctl stop firewalld.service

systemctl disable firewalld.service

再啟用 iptables.service 服務,因為目前還是主要使用 ipv4 所以只啟用 iptables.service 就可以。如果使用 iptables 同樣需要設定開機啟動 iptables.service 服務。

systemctl enable iptables.service

啟動 iptables.service 服務

systemctl start iptables.service

介面偽裝

iptables -t nat -A POSTROUTING  -o p2p1 -j MASQUERADE

##一般來說設定上面的指令就可以了,如果防火牆設定比較嚴格需要新增允許轉送無線網卡介面wlp2s0。

iptables -t filter -A FORWARD -i wlp2s0 -j ACCEPT

dnsmasq 設定 dnsmasq 軟體安裝

dnsmasq 主要負責分配客戶端IP位址及DNS解析服務。

沒有安裝的話先安裝 dnsmasq 軟體

yum install dnsmasq

設定開機自動啟動 dnsmasq 服務

systemctl enable dnsmasq.service

dnsmasq.conf 配置

vi /etc/dmsmasq.conf

[root@server ~]# vi /etc/dnsmasq.conf

# 指定接口,指定後同時附加lo接口,可以使用'*'通配符

interface=wlp2s0### #### 綁定介面### ###bind-interfaces### #### DHCP位址池 從172.16.0.100到172.16.0.200####

dhcp-range=172.16.0.100,172.16.0.200,255.255.255.0,1h

啟動 dnsmansq 服務需要無線網路卡已經正確設定了 ip 位址。 dnsmasq 會自動將目前的無線網路卡位址 172.16.0.1 設定為用戶端的閘道位址和DNS位址。

systemctl start dnsmasq.service

#最後重新啟動 hostapd 服務

systemctl restart hostapd.service

#

以上是無AP模式下的CentOS7使用hostapd實現的完整指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除