centos7 的firewalld与iptables不是一个服务。
在 CentOS 7 系统中,iptables 和 firewalld 是两种常用的防火墙管理工具,它们各自有不同的特点和用途。了解它们之间的关系和如何共存非常重要,尤其是在配置和管理防火墙规则时。
iptables 是一种命令行工具,用于设置、查看和修改 Linux 内核的 IPv4 数据包过滤规则。它是 Linux 内核的一部分,自 Linux 2.4 版本起就已包含在内。iptables 可以非常灵活地配置复杂的网络流量过滤规则。
firewalld 是一个动态管理防火墙的工具,旨在提供更高级别的防火墙管理功能,包括图形界面、区域概念和更简单的配置方法。它使用 iptables 作为后端,但提供了一个更加用户友好和安全的抽象层。
关系与共存,在 CentOS 7 中,firewalld 是默认的防火墙管理工具,而 iptables 仍然可用。这意味着你可以同时使用 firewalld 和 iptables 来管理防火墙规则,但这通常不是推荐的做法,因为这可能导致配置冲突和难以调试的问题。
#关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
注意iptables规则,无论firewalld与iptables服务是否启动都可以配置临时规则,但是如果这两个服务关闭,临时规则会清空。如果这两个服务关闭时配置了iptables规则,服务启动后,临时规则会清空,加载文件中的规则。
启动iptables服务
systemctl start iptables
systemctl enable iptables
###也可以通过service iptables start启动;service iptables enable开机启动
设置链的默认规则
iptables -P INPUT DROP
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
需求将本机访问192.168.72.100的请求数据包目标地址转换为192.168.72.116 ;此需求常用于网络穿透。
iptables -t nat -A OUTPUT -d 192.168.72.100 -j DNAT --to 192.168.72.116
保存规则,系统默认配置文件路径/etc/sysconfig/iptables
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
另一个保存方式,可以保存到不同的位置。
[root@localhost ~]# iptables-save > /etc/sysconfig/iptables
目标地址转换。
iptables -t nat -A PREROUTING -p tcp -d 192.168.72.100 --dport 80 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j MASQUERADE
查看规则,iptables -L -n查看filter规则。iptables -L -n -t nat 查看nat规则。
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost ~]# iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
[root@localhost ~]# iptables -L -n -t filter
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
清空规则
#不加-t 默认清空filter规则iptables -F 与iptables -F -t filter相同
iptables -F
#清空nat规则,-t nat指定
[root@localhost ~]# iptables -t nat -L -n
[root@localhost ~]# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
[root@localhost ~]# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -m tcp --dport 80 -j DROP
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost ~]# iptables -D INPUT 1
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
按顺序插入删除规则
[root@localhost ~]# iptables -D INPUT 1
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
###-I插入,-I INPUT 插入INPUT链。 后面跟数字的话表示插入第几行
[root@localhost ~]# iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost ~]# iptables -I INPUT 2 -p tcp -m tcp --dport 880 -j ACCEPT
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:880
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost ~]# iptables -I INPUT 1 -p tcp -m tcp --dport 8880 -j ACCEPT
########注意80端口第一个规则为ACCEPT,后面的DROP规则就不生效了,第一条生效。
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8880
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:880
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination