firewalld 与 iptables异同点
相同点:
firewalld 与 iptables 都是 Linux 中防火墙的管理程序,但其实其角色主要为对于防火墙策略的管理,真正的防火墙执行者是位于内核中的 Netfilter。
不同点:
iptables 仅能通过命令行进行配置;而 firewalld提供了图形接口,类似windows防火墙的操作方式
iptables 每一个单独更改意味着清除所有旧的规则,并从 /etc/sysconfig/iptables 中读取所有新的规则;而 firewalld 在有规则变动后,可以仅仅运行规则中的不同之处,即在 firewalld 运行时间内,改变设置时可以不丢失现行链接
iptables 的配置文件在 /etc/sysconfig/iptables 中;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中
iptables 没有守护进程,并不能算是真正意义上的服务;而 firewalld 有守护进程
一:NAT 转发软路由
开启 NAT 转发之后,只要本机可以上网,不论是单网卡还是多网卡,局域网内的其他机器可以将默认网关设置为已开启 NAT 转发的服务器 IP ,即可实现上网。
# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
## 重载网络配置生效
# sysctl -p
---------------------
# 开启 NAT 转发
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --zone=public --add-port=80/tcp --permanent# 检查是否允许 NAT 转发
NAT设置完成
二:端口转发
端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定 ip 的话就默认为本机,如果指定了 ip 却没指定端口,则默认使用来源端口。
# 将80端口的流量转发至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
# 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1
# 将80端口的流量转发至192.168.0.1的8080端口
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080
添加拒绝某个IP访问ssh端口
firewall-cmd --add-rich-rule "rule family=ipv4 source address=10.0.10.1 service name='ssh' drop"
禁止响应ping
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
查询是否有某个规则
firewall-cmd --query-rich-rule='rule family=ipv4 protocol value=icmp drop'
移除规则
firewall-cmd --remove-rich-rule='rule family=ipv4 protocol value=icmp drop'
拒绝来自public区域中IP地址为192.168.0.11的所有流量
firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'
将源192.168.2.2地址加入白名单,以允许来自这个源地址的所有连接
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.2.2" accept'
允许来自192.168.0.0/24地址的TFTP协议的IPv4连接,并且使用系统日志每分钟记录一次
firewall-cmd --add-rich='rule family="ipv4" source address="192.168.0.0/24" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept'
在192.168.1.0/24子网的dmz区域中,接收端口7900--1905的所有TCP包
firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-1905 protocol=tcp accept'