由于Centos7开始,还有部分redhot的版本,默认使用firewalld管理防火墙,则使用iptablse开启防火墙时会报错:
Failed to start IPv4 firewall with iptables.
解决办法:使用firewalld,或者关闭firewalld然后安装iptablses,推荐直接使用firewalld,配置端口更加简单快捷
A:直接使用firewalld
- 开启
> systemctl start/enable firewalld //开启firewalld
前置条件1:是没有关闭firewall使用iptables配置过防火墙,否则得先切换会firewalld,具体方法如下:
> systemctl stop iptables //关闭iptables
> systemctl mask iptables //屏蔽iptables
> systemctl unmask firewalld //解除对firewalld的屏蔽
前置条件2:如果开启报错
> Unit firewalld.service could not be found.
则重新安装firewalld:
> yum install firewalld
至此就可以直接使用开启命令进行开启了
- 查看状态
> systemctl status firewalld
- 添加开启端口8088
```
firewall-cmd --zone=public --add-port=8088/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
```
- 添加开启端口段1000--2000
```
firewall-cmd --zone=public --add-port=1000-2000/tcp --permanent
```
- 重新加载
```
systemctl restart firewalld
```
- 关闭
```
systemctl stop/disable firewalld
```
- 查看配置的端口列表
```
firewall-cmd --list-ports
```
- 查看端口是否开启
```
firewall-cmd --zone=public --query-port=80/tcp
```
- 删除端口
```
firewall-cmd --zone=public --remove-port=80/tcp --permanent(--permanent永久生效,没有此参数重启后失效)
```
B:iptables方式
1:当默认就为iptables管理防火墙的
- 直接编辑
> vi /etc/sysconfig/iptables
- 增加一个8080端口
> -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
- 退出保存
- 重启linux防火墙服务即可
> /etc/init.d/iptables restart
2:默认为firewalld需要使用iptables的
- 安装iptables-service
> yum install iptables-services
- 关闭和屏蔽firewalld
>systemctl stop firewalld //关闭firewalld
>systemctl mask firewalld //屏蔽firewalld
- 设置开机启动
>systemctl enable iptables
-使用上面方式进行配置
> service iptables stop 关闭防火墙
> service iptables start 开启防火墙
> service iptables restart 重启防火墙
> service iptables status 查看状态
> yum remove iptables 卸载
# 开启一个端口的顺序:
首先保证防火墙开启->通过查看防火墙状态命令
添加端口->添加端口命令
重新载入->重新载入命令
# CentOS7中执行
service iptables start/sto
会报错Failed to start iptables.service: Unit iptables.service failed to load: No such file or directory.