CentOS7使用hostapd实现无AP模式的详解

2020-01-30 16:40:07王旭

[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接口,可以使用'*'通配符