拥抱firewalld,但也别忘了iptables——上篇(iptables详解)

CentOS7(RHEL7)开始,官方的标准防火墙设置软件从iptables变更为firewalld,但是我个人认为对iptables稍加了解仍十分有必要,甚至感觉iptables就是firewalld的前端软件。

iptables的语法组成

$ iptables [-t 规则表] 命令选项 规则链 [条件匹配] [跳转动作]

规则表

iptables将对于数据包的控制分给4个规则表完成,各自在不同的场合发挥作用。它们分别是filter表nat表mangle表raw表

1.filter表

filter表负责数据包的接收或者拒绝,我们最常接触的就是它。
如果直接修改配置文件/etc/sysconfig/iptables,则常是如下格式。

 *filter
 #在这里编写filter的配置
COMMIT

当然你也可以使用命令来添加filter规则:

# 使用命令往filter表格中添加以下规则:直接丢弃端口80接收到的数据包
$ iptables -t filter -p tcp --dport 80 -j -DROP

因为默认的规则表就是filter,因此这部分可以省略,如下:

$ iptables -p tcp --dport 80 -j -DROP

2.nat表

所谓NAT,就是网络地址转换,主要通过修改数据包中的传输源地址和目的地址来实现。常用于将数据包根据某些规则分发到本地局域网的各台服务器上,实现负载均衡或者IP地址复用扩展。

如果直接修改配置文件/etc/sysconfig/iptables,则常是如下格式。

*nat
 #在这里编写nat的配置
COMMIT

当然你也可以使用命令来添加NAT规则

# 把访问202.103.96.112的访问转发到192.168.0.112上(PREROUTING可理解为流入的数据包)
$ iptables -t nat -A PREROUTING -d 202.103.96.112 -j DNAT --to-destination 192.168.0.112
# 把即将要流出本机的数据的源ID地址修改成为58.20.51.66(POSTROUTING可理解为流出的数据包)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 58.20.51.66

3.mangle表

mangle表主要负责管理各数据包处理的优先级,常用于改善通信质量,其实现方式主要是修改TOS(服务类型)的值。
如果直接修改配置文件/etc/sysconfig/iptables,则常是如下格式。

*mangle
 #在这里编写mangle的配置
COMMIT

当然你也可以使用命令来添加mangle规则

# 将80端口的通信服务类型设置为高吞吐量
$ iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TOS --set-tos Maximize-Throughput

4.raw表

raw表的功能与mangle表有点类似,都是可以给特定的数据包附加标记,最常见的就是附加NOTRACK标记。也就是不经过防火墙,不对该数据包进行任何跟踪而交由其他机器负责处理。

例如,你发现机器因为大量的DNS解析服务负荷则造成通信质量下降,因此决定使用负载均衡把DNS相关的数据包交给其他服务器来处理,这时候只需要为端口53添加NOTRACK标记就可以了。

$ iptables -t raw -I PREROUTING -p udp --dport 53 -j NOTRACK
$ iptables -t raw -I OUTPUT -p udp --dport 53 -j NOTRACK

表之间的优先顺序

Raw——mangle——nat——filter

规则链

种类说明
INPUT对于输入(接受信息)
OUTPUT对于输出(发送信息)
FORWARD对于转发
PREROUTING对于接收信息时的地址转换
POSTROUTING对于发送信息时的地址转换

规则表和规则链的对照关系

表名对应的规则链
filter表INPUT、OUTPUT、FORWARD
nat表POSTROUTING、PREROUTING、OUTPUT
mangle表POSTROUTING、PREROUTING、INPUT、OUTPUT、FORWARD
Raw表PREROUTING、OUTPUT

命令选项

名称说明
-A(–append)在指定规则链的最后增加1条规则
-D(–delete)从指定规则链的中删除1条规则
-P(–policy)设置指定规则链的默认策略
-N(–newchain)自定义新的规则链
-X(–deletechain)删除自定义规则链
-I(–insert)从指定的位置插入一条规则

条件匹配

名称说明
-s(–source)设置匹配对象的源地址
-d(–destination)设置匹配对象的目标地址
-p(–protocol)设置匹配对象的协议类型,比如tcp、udp、icmp、all
-i(–in-interface)设置匹配对象的接收网络接口,比如eth0、eth1
-o(–out-interface)设置匹配对象的发送网络接口,比如eth0、eth1

“-j”:对于匹配成功的对象执行跳转动作

名称说明
ACCEPT允许数据包通过
DROP直接丢弃数据包,不予以回应
REJECT发送ICMP信息以表示拒绝接收数据包
REDIRECT重定向至某个端口
LOG对于该数据包记录日志

保存规则

使用iptables命令创建的规则列表通常只保存在内存,机器重启后就会消失,我们可以使用以下命令把它保存到/etc/sysconfig/iptables文件中。

$ service iptables save
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值