CentOS 7 之 hostapd 路由模式配置

这篇是 linux 下使用 hostapd 实现无线接入点 AP 模式的另外一种实现方式:hostapd 路由模式配置。linux

对于软硬件的基本配置及 hostapd 安装在《CentOS 7 之 hostapd AP模式配置》的前半部份内容中有说明,能够先看看那篇,再看本文。bash

hostapd 的AP模式配置须要的有线网卡和无线网卡进行桥接,那路由模式配置主要就是将无线网卡的数据经过有线网卡进行假装、转发两个方面,也就再也不须要将有线和无线网卡进行桥接。网络

配置这种路由模式就相似一台普通的无线路由器,有线网口就至关于普通无线路由器的 WAN 接口,无线网卡就负责发送广播无线信号供手机、笔记本的无线设备接入实现网络访问。ide

但也有区别的地方就是跟普通无线路由器相比,这种实现方式没有四个普通的 LAN 接口,不能供其它台式机等进行有线链接。工具

实际上 linux 做为网络功能为主的操做系统也是能够链接的,只是须要交换机等设备等,会复杂些。我这里的配置就看成是没有四个 LAN 接口的普通无线路由器。
操作系统

hostapd.conf 配置

这里只是一个最小化的配置:rest

# /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 选项就能够。
server

有线接口配置

首先咱们须要正确配置有线接口而且能够正常上网。最简单的是方式就是从路由器那自动获取IP地址、网关、DNS。若是没有路由器的话那就须要手动设置有线接口的上网方式,例如经常使用的PPPOE方式、静态IP地址方式、动态获取IP地址方式等。反正动态获取IP地址的最简单。
dns

无线接口设置

使用 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                                    #指定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
相关文章
相关标签/搜索