標籤:hostapd firewalld hostapd.conf iptables linux無線路由
這篇是 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=nl80211ssid=testhw_mode=gchannel=1auth_algs=3ignore_broadcast_ssid=0 # 是否廣播,0 廣播wpa=3wpa_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
[[email protected] ~]# 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 #指定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
[[email protected] ~]# sysctl -w net.ipv4.ip_forward=1net.ipv4.ip_forward = 1
啟用 IP 轉寄重啟後不會失效使用下面方法,系統重啟後會自動載入 /etc/sysctl.d/ 檔案夾下的設定。
vi /etc/sysctl.d/ip_forward.conf
[[email protected] ~]# 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
[[email protected] ~]# firewall-cmd --zone=trusted --add-interface=wlp2s0 --permanent success
對有線介面所在的地區啟用偽裝,並儲存配置,預設情況下有線介面屬於 public 地區。
firewall-cmd --zone=public --add-masquerade --permanent
[[email protected] ~]# 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
[[email protected] ~]# vi /etc/dnsmasq.conf# 指定介面,指定後同時附加lo介面,可以使用‘*‘萬用字元interface=wlp2s0# 綁定介面bind-interfaces# DHCP位址集區 從172.16.0.100到172.16.0.200dhcp-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
本文出自 “老丁的linux” 部落格,請務必保留此出處http://laoding.blog.51cto.com/980622/1697788
CentOS 7 之 hostapd 路由模式配置