iptables使用详解( 三 )

iptables -t nat -nvL --line-numbers-t 表示想要查看那个表 , 这里查看的是nat表 。iptables的所有命令 , 如果不指定-t,如果不写默认是filter表 。-L 表示列出该表所有链和所有规则-v 详细显示 , 会将规则匹配的进出网口也列出来--line-numbers 表示给规则进行编号处理 。编号能方便我们后续对规则进行修改、删除等操作

iptables使用详解

文章插图
如图所示 , 表头有以下信息:
  • num 表示当前规则编号 , 从1开始
  • in 表示该规则会匹配那些的输入网口 , 如果包是由该网口输入 , 则会被匹配
  • out 表示该规则会匹配的目标网口 , 如果包的目标网口是该网口 , 则会被匹配
  • source 表示该规则匹配的具体源ip范围
  • destination 表示该规则匹配的具体目标ip范围
总结来看 , 其实一个数据包本身就有源、目标的一些信息 , 而规则就是基于数据包本身属性的特点进行规则设定 。
在已知链末尾添加规则(举例 , 拒绝某个ip的访问)iptables -t filter -A INPUT -s 59.45.175.62 -j REJECT
-A 表示Append,其后紧跟的是链的名称 , 表示该条规则要被添加到哪个链中 。-s 表示包的来源ip即source 。除了指定固定的ip外 , 我们还可以指定ip范围 , 比如59.45.175.0/24-j 表示jump 也即是我们最终的动作 , 这里的动作是拒绝
在已知链链首插入规则链尾的规则匹配优先级最低 , 如果前面有规则被匹配后 , 并将数据包进行了终态处理(比如:ACCEPT, DROP, REJECT) , 那么链尾的规则将永远不会被使用 。
如果我们想要该规则优先匹配 , 可以选择将其放入链首 , 使用-I参数 , 表示insert 。举例:
iptables -t filter -I INPUT -s 59.45.175.62 -j REJECT删除规则想要删除已配置的规则 , 可以使用-D参数 , 参数
iptables -t filter -D INPUT -s 59.45.175.62 -j REJECT这种删法 , 要我们明确知道当初添加进去的规则是怎么写的 。如果忘了 , 我们可以通过规则编号进行删除 。在查看规则时使用参数--line-numbers(例如:iptables -nvL --line-numbers) , 可以对规则进行编号 , 然后基于编号进行删除
iptables使用详解

文章插图
iptables -t filter -D FOWARD 1 //表示删除filter表中的FORWARD链的第一条规则拒绝掉对某个ip的回应iptables -A OUTPUT -d 31.13.78.35 -j DROP-d 表示destination , 即所有返回给ip 31.13.78.35的数据包都直接丢掉 , 不回应 。
清空某个链中的所有规则iptables -t filter -F INPUT所有TCP协议的数据包 , 都丢弃iptables -A INPUT -p tcp -j DROP-p表示protocol
丢弃掉某个ip对端口22的访问iptables -A INPUT -p tcp -m tcp --dport 22 -s 59.45.175.0/24 -j DROP由于要对端口进行精准匹配 , 所以先-m tcp 进行tcp module加载 。
如何对多个端口进行匹配iptables -A INPUT -p tcp -m multiport --dports 22,5901 -s 59.45.175.0/24 -j DROP

经验总结扩展阅读