CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
添加時(shí)間:2020-9-12 18:45:57
添加:
思海網(wǎng)絡(luò)
這篇是 linux 下使用 hostapd 實(shí)現(xiàn)無(wú)線接入點(diǎn) AP 模式的另一種實(shí)現(xiàn)方式:hostapd 路由模式配置。
對(duì)于軟硬件的基本配置及 hostapd 安裝在《CentOS 7 之 hostapd AP模式配置》的前半部分內(nèi)容中有說(shuō)明,可以先看看那篇,再看本文。
hostapd 的AP模式配置需要的有線網(wǎng)卡和無(wú)線網(wǎng)卡進(jìn)行橋接,那路由模式配置主要就是將無(wú)線網(wǎng)卡的數(shù)據(jù)通過(guò)有線網(wǎng)卡進(jìn)行偽裝、轉(zhuǎn)發(fā)兩個(gè)方面,也就不再需要將有線和無(wú)線網(wǎng)卡進(jìn)行橋接。
配置這種路由模式就類似一臺(tái)普通的無(wú)線路由器,有線網(wǎng)口就相當(dāng)于普通無(wú)線路由器的 WAN 接口,無(wú)線網(wǎng)卡就負(fù)責(zé)發(fā)送廣播無(wú)線信號(hào)供手機(jī)、筆記本的無(wú)線設(shè)備接入實(shí)現(xiàn)網(wǎng)絡(luò)訪問(wèn)。
但也有區(qū)別的地方就是跟普通無(wú)線路由器相比,這種實(shí)現(xiàn)方式?jīng)]有四個(gè)普通的 LAN 接口,不能供其它臺(tái)式機(jī)等進(jìn)行有線連接。
實(shí)際上 linux 作為網(wǎng)絡(luò)功能為主的操作系統(tǒng)也是可以連接的,只是需要交換機(jī)等設(shè)備等,會(huì)復(fù)雜些。我這里的配置就當(dāng)作是沒(méi)有四個(gè) LAN 接口的普通無(wú)線路由器。
hostapd.conf 配置
這里只是一個(gè)最小化的配置:
# /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 # 無(wú)線連接密碼
配置跟AP模式配置文件類似,只要注釋掉 bridge=br0 選項(xiàng)就可以。
有線接口配置
首先我們需要正確配置有線接口并且可以正常上網(wǎng)。最簡(jiǎn)單的是方式就是從路由器那自動(dòng)獲取IP地址、網(wǎng)關(guān)、DNS。如果沒(méi)有路由器的話那就需要手動(dòng)設(shè)置有線接口的上網(wǎng)方式,例如常用的PPPOE方式、靜態(tài)IP地址方式、動(dòng)態(tài)獲取IP地址方式等。反正動(dòng)態(tài)獲取IP地址的最簡(jiǎn)單。
無(wú)線接口設(shè)置 使用 ip addr add 命令
使用 ip addr add 命令設(shè)置無(wú)線網(wǎng)卡的 IP 地址,重啟后就會(huì)失效。例如172.16.0.1/24或其他私有地址,還有就是不要與有線網(wǎng)卡處在同一個(gè)網(wǎng)段。一般有線網(wǎng)卡從路由器獲取的IP地址是 192.168.1.0/24 網(wǎng)段地址。
ip addr add 172.16.0.1/24 dev wlp2s0
坑提示:目前 CentOS 7 默認(rèn)使用的是 NetworkManager 套件作為網(wǎng)絡(luò)配置工具。這里遇到一個(gè)問(wèn)題就是,NetworkManager 套件其提供的 nmcli 命令并不支持給無(wú)線網(wǎng)卡設(shè)置靜態(tài)的 IP 地址,這就需要使用 ip addr add 命令手動(dòng)設(shè)定無(wú)線網(wǎng)卡的 IP 地址或者在 /etc/sysconfig/network-script s/ 文件夾下面新建配置文件,這是比較老且經(jīng)典的一種接口配置方式。
使用網(wǎng)絡(luò)配置文件
如要想想保存設(shè)置,可以新建一個(gè)文件 /etc/sysconfig/network-script s/ifcfg-static-wlp2s0 ,文件名以 ifcfg 前綴。
vi /etc/sysconfig/network-script s/ifcfg-static-wlp2s0
[root@server ~]# vi /etc/sysconfig/network-script 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 #指定無(wú)線網(wǎng)卡的接口
ONBOOT=yes #開(kāi)機(jī)就進(jìn)行設(shè)置
IPADDR=172.16.0.1 #指定IP地址
PREFIX=24 #指定掩碼長(zhǎng)度
#GATEWAY=192.168.10.254 #其他用不著注釋掉
#DNS1=127.0.0.1
#DNS2=192.168.10.254
#IPV6_PEERDNS=yes
#IPV6_PEERROUTES=yes
保存后需要先停止 NetworkManager.service 服務(wù),最好禁止開(kāi)機(jī)啟動(dòng),不然還是會(huì)有問(wèn)題。主要表現(xiàn)為開(kāi)機(jī)時(shí) network.service 無(wú)法啟動(dòng)。
禁止 NetworkManager.service 服務(wù)開(kāi)機(jī)啟動(dòng)
systemctl disable NetworkManager.service
停止 NetworkManager.service 服務(wù)
systemctl stop NetworkManager.service
想看看有沒(méi)有生效可以重啟 network.service 服務(wù)或直接重啟系統(tǒng)。
systemctl restart network.service
啟用轉(zhuǎn)發(fā)和配置接口偽裝 啟用轉(zhuǎn)發(fā)
使用 sysctl -w 重啟后會(huì)失效
sysctl -w net.ipv4.ip_forward=1
[root@server ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
啟用 IP 轉(zhuǎn)發(fā)重啟后不會(huì)失效使用下面方法,系統(tǒng)重啟后會(huì)自動(dòng)加載 /etc/sysctl.d/ 文件夾下的設(shè)置。
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 中默認(rèn)啟用的是 firewalld.service 服務(wù)。iptables 服務(wù)和 firewalld 服務(wù)沖突,兩者只能啟用其中一個(gè)。
使用 firewalld 配置接口偽裝
如果能使用圖形界面配置的話更加簡(jiǎn)單明了,這里僅使用 firewalld-cmd 命令方式配置。
如果沒(méi)有啟動(dòng) firewalld.service 服務(wù),需要先啟動(dòng) firewalld.service 服務(wù)。
systemctl start firewalld.service
將無(wú)線接口加入到 trust 區(qū)域,并保存配置。默認(rèn)情況下所有接口屬于 public 區(qū)域,連接限制比較嚴(yán)格,會(huì)導(dǎo)致無(wú)法連接。
firewall-cmd --zone=trusted --add-interface=wlp2s0 --permanent
[root@server ~]# firewall-cmd --zone=trusted --add-interface=wlp2s0 --permanent
success
對(duì)有線接口所在的區(qū)域啟用偽裝,并保存配置,默認(rèn)情況下有線接口屬于 public 區(qū)域。
firewall-cmd --zone=public --add-masquerade --permanent
[root@server ~]# firewall-cmd --zone=public --add-masquerade --permanent
success
重啟 firewalld 服務(wù)
systemctl restart firewalld.service
使用 iptables 配置接口偽裝
如果習(xí)慣使用 iptables ,需要安裝 iptables-services 這個(gè)包,里面包含 iptables.service 和 ip6tables.service 這兩個(gè)服務(wù),分別用于 ipv4 和 ipv6。
要使用 iptables 需要先停止并禁用 firewalld.service 服務(wù)
systemctl stop firewalld.service
systemctl disable firewalld.service
再啟用 iptables.service 服務(wù),因?yàn)槟壳斑是主要使用 ipv4 所以只啟用 iptables.service 就可以。如果使用 iptables 同樣需要設(shè)置開(kāi)機(jī)啟動(dòng) iptables.service 服務(wù)。
systemctl enable iptables.service
啟動(dòng) iptables.service 服務(wù)
systemctl start iptables.service
接口偽裝
iptables -t nat -A POSTROUTING -o p2p1 -j MASQUERADE
一般來(lái)說(shuō)配置上面的命令就可以了,如果防火墻設(shè)置比較嚴(yán)格需要添加允許轉(zhuǎn)發(fā)無(wú)線網(wǎng)卡接口wlp2s0。
iptables -t filter -A FORWARD -i wlp2s0 -j ACCEPT
dnsmasq 配置 dnsmasq 軟件安裝
dnsmasq 主要負(fù)責(zé)分配客戶端IP地址及DNS解析服務(wù)。
沒(méi)有安裝的話先安裝 dnsmasq 軟件
yum install dnsmasq
設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng) dnsmasq 服務(wù)
systemctl enable dnsmasq.service
dnsmasq.conf 配置
vi /etc/dmsmasq.conf
[root@server ~]# vi /etc/dnsmasq.conf
# 指定接口,指定后同時(shí)附加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
啟動(dòng) dnsmansq 服務(wù)需要無(wú)線網(wǎng)卡已經(jīng)正確設(shè)置了 ip 地址。dnsmasq 會(huì)自動(dòng)將當(dāng)前的無(wú)線網(wǎng)卡地址 172.16.0.1 設(shè)置為客戶端的網(wǎng)關(guān)地址和DNS地址。
systemctl start dnsmasq.service
最后重新啟動(dòng) hostapd 服務(wù)
systemctl restart hostapd.service
關(guān)鍵字:CentOS7、hostapd、AP模式、詳解
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解