安装iptables服务的包:
yum install iptables-services -y
yum install firewalld -y
[root@server ~]# iptables -F #清空所有的规则表,清空之后客户端可以访问ssh和http服务
iptables命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。
语法格式:iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
iptables的参数说明:
参数 | 说明 |
-t | 对指定的表进行操作,table必须是raw,nat,filter,mangle中的一个。默认是filter表。 |
-p | 指定要匹配的数据包协议类型 |
-s | --source address/mask:把指定的一个或者一组地址作为源地址,按此规则进行过滤。当后面没有mask 时,address 是一个地址,比如:192.168.1.1;当 mask 指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0 |
-d | --destination address/mask:地址格式同上,但这里指定地址为目的地址,按此进行过滤 |
-i | --in-interface name:指定数据包的来自来自网络接口,比如最常见的 eth0 。注意:它只对 INPUT,FORWARD,PREROUTING 这三个链起作用。如果没有指定此选项, 说明可以来自任何一个网络接口。同前面类似,"!" 表示取反 |
-o | --out-interface name:指定数据包出去的网络接口。只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用 |
-L | --list [chain] 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则 |
-A | --append chain rule-specification:在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定 |
-I | --insert chain [rulenum] rule-specification:在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1,则在链的头部插入。这也是默认的情况,如果没有指定规则号 |
-D | --delete chain rule-specification -D, --delete chain rulenum:在指定的链 chain 中删除一个或多个指定规则 |
-R num | Replays替换/修改第几条规则 |
-P | --policy chain target :为指定的链 chain 设置策略 target。注意,只有内置的链才允许有策略,用户自定义的是不允许的 |
-F | --flush [chain] 清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则 |
-N | --new-chain chain 用指定的名字创建一个新的链 |
-X | --delete-chain [chain] :删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链 |
-E | --rename-chain old-chain new-chain :用指定的新名字去重命名指定的链。这并不会对链内部照成任何影响 |
-Z | --zero [chain] :把指定链,或者表中的所有链上的所有计数器清零 |
-j | --jump target <指定目标> :即满足某条件时该执行什么样的动作。target 可以是内置的目标,比如 ACCEPT,也可以是用户自定义的链 |
-h | 显示帮助信息 |
关闭firewalld,开启iptables
systemctl stop firewalld
systemctl start iptables
ssh服务端口22,dns服务53,httpd服务80,chrony服务323,nfs服务111
1.iptables: 开启防火墙:可以正常使用ssh服务,dns服务, httpd服务,chrony服务, nfs服务
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -I INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -I INPUT -p udp --dport 323 -j ACCEPT
iptables -t filter -I INPUT -p udp -m multiport --dports 2049,111 -j ACCEPT
[root@zhaoyixuan ~]# iptables -vnL --line-numbers
2.firewalld: 开启防火墙:可以正常使用ssh服务,dns服务, httpd服务,chrony服务, nfs服务 且实现:访问第一台机器web服务的9090端口,转发到第二台机器的80端口(永久生效)
iptables -F #清空所有的规则表
关闭iptables,开启firewalld
systemctl stop iptables
systemctl start firewalld.service //开启firewalld服务
systemctl status firewalld.service //查看firewalld服务的状态
配置策略
firewall-cmd --add-service=ssh //设置允许ssh服务的流量通过
firewall-cmd --add-service=dns //设置允许dns服务的流量通过
firewall-cmd --add-service=http //设置允许http服务的流量通过
firewall-cmd --add-service=nfs //设置允许nfs服务的流量通过
查看支持:
[root@zhaoyixuan ~]# firewall-cmd --list-all
访问第一台机器web服务的9090端口,转发到第二台机器的80端口(永久生效)
首先要开启防火墙伪装
[root@zhaoyixuan ~]# firewall-cmd --add-masquerade --permanent
添加转发规则,转到130的80上
firewall-cmd --add-forward-port=port=9090:proto=tcp:toport=80:toaddr=192.168.222.130 --permanent
重新加载
firewall-cmd --reload