-j REJECT:表示拒绝访问并回送一个数据包。
[应对网络上的数据包,一般所以DROP来处理,而不浪费系统资源来匹配数据]
iptables -A INPUT -p tcp --dport 25 -j REJECT --reject-with icmp_het_unreachable
<--reject-with + 伪装信息>:可自己定义该字符串内容
-j LOG:记录日志文件
:iptables -A INPUT -p tcp -dport 22 -j LOG
【问题:日志量增长惊人,每一个这样的包都需要记录日志】
改:iptables -A INPUT -p tcp --syn --dport 22 -j LOG
【只记录第一个ssh连接的数据包】
日志记录位置:/var/log/messages
==========================
如何从日志文件中分离Netfilter我们需要的日志信息: --log-level
:iptables -A INPUT -p tcp --syn -dport 22 -j LOG --log-level alert
也可在通过 --log-prefix "xxxx"来添加前缀信息。
:iptables -A INPUT -p tcp --syn -dport 22 -j LOG --log-level alert
--log-prefix "SSH_REQUEST"
后期查看日志再使用grep命令。
-j DSCP:服务类型
【Qos机制:分析各种网络服务需要的带宽,进行分配】
【 数据包传入----》数据包分类器---》带宽分配器---》数据包传出 】
【DSCP 只有6bit可以分配64种变化】
iptables -t mangle -A FORWARD -p tcp --sport 80 -j DSCP --set-dscp 1
[将数据包的DSCP字段改为 1 ,到带宽分配器后读取到1,就按约定分配多少带宽]
-j MARK的 处理方式可以让我们在特定的数据包上标记一个“---记号---”,
【记号由数字构成,并没有写入到数据包中】
【而Linux系统会使用一块内存来记录 数据包 和 MARK值的对应关系】
【当数据包离开本机后MARK将不会存在】
如:
iptables -t mangle -A FORWARD -p tcp --dport 25 -j MARK --set-mark 25
【 -j MARK: 打的记录对党确定的数据包有效,[nfmark]
-j CONNMARK:设置的记录对一个完整的连接中的数据包都有效,即不管是送入或送出的数据包都会打上这个标记[ctmark]】
iptables -t mangle -A INPUT -p tcp --dport 80 -j CONNMARK --set-mark 1 [打标记]
iptables -t mangle -A OUTPUT -m connmark --mark 1 -j DROP [匹配这样的标签 DROP]
用CONNMARK使MARK达到相同的一个完整连接上的全部标记
iptables -t mangle -A INPUT -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A INPUT -j CONNMARK --save-mark
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
iptables -t filter -A INPUT -m mark --mark 1 -j DROP
【为什么这么做,因为Linux没有完全(部分)支持CONNMARK】
-j REDIRECT:重定向,是一种特殊的DNAT的机制,通常会与代理服务器同时使用,实现透明代理
-j MASQUERADE:动态ip跟踪,是一种特殊的SNAT的机制,从服务器的网卡自动获取当前ip地址来做NAT
与NAT配合使用