CentOS7使用hostapd實現無AP模式的詳解
添加時間:2020-9-12 18:45:57
添加:
思海網絡
這篇是 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-s/ 文件夾下面新建配置文件,這是比較老且經典的一種接口配置方式。
使用網絡配置文件
如要想想保存設置,可以新建一個文件 /etc/sysconfig/network-s/ifcfg-static-wlp2s0 ,文件名以 ifcfg 前綴。
vi /etc/sysconfig/network-s/ifcfg-static-wlp2s0
[root@server ~]# vi /etc/sysconfig/network-s/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 #指定IP地址
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
關鍵字:CentOS7、hostapd、AP模式、詳解
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解