【TCP/IP】【调试】丢包、流不通、错包等问题查证手段系列之二——防火墙

简介: 【TCP/IP】【调试】丢包、流不通、错包等问题查证手段系列之二——防火墙

防火墙简介



  • iptables、ebtabless是Linux系统下网络数据包过滤的配置工具,这点几乎众所周知。但这两个工具在查找丢包过程中的应用,知道的人就不多了。


  • 这种方式的优点在于,不需要修改版本,使用现有版本,输入相关命令即可。


通过防火墙查看统计


  • 根据报文经过的路径以及报文的特征,在防火墙的特定位置增加规则,然后查看报文统计。


  • 兹举例如下:


– 二层防火墙中,过滤特定源、目的MAC的IP报文:


 ebtables -t filter -I FORWARD 1 -s SMAC -d DMAC -p 0x0800 //增加特定规则;
 ebtables -t filter -L --Lc                                //查看统计 
 ebtables -t filter  -Z                                    //将统计清0


– 三层防火墙中,过滤目的端口为80的TCP报文:


 iptables -t filter -A INPUT  -p tcp  --dport 80  //增加特定规则;
 iptables -t filter -vnL                          //查看统计
 iptables -t filter -Z                            //将统计清


– 删除规则


 ebtables -D FORWARD  1                  //删除filter表,FORWARD链的第一条规则
 iptables -D INPUT 11                    //11是行号,iptables -L INPUT --line-numbers 所打印出来的行号
 ebtables -t filter  -F                  //删除所有二层filter规则
 iptables -t filter -F                   //删除所有三层filter规则


通过防火墙LOG模块查看日志


例1、 配置实例1


  • 配置命令


kern.=debug     /var/log/kern.debug.log#在/etc/rsyslog.conf添加日志文件
touch /var/log/kern.debug.log #建立debug.log文件
systemctl restart rsyslog     #重启rsyslog服务
iptables -t raw -A OUTPUT -m limit --limit 5000/minute -j LOG --log-level 7 --log-prefix "raw out: " #添加规则,本地发出报文
iptables -t raw -A PREROUTING -p icmp -s 8.8.8.8/32 -m limit --limit 500/minute -j LOG --log-level 7 --log-prefix "mangle prerouting: " #添加规则:icmp报文


一个输出的例子:


Jun 13 19:58:21 dev-slave-110 kernel: raw prerouting: IN=eth0 OUT= MAC=52:54:15:5d:39:58:02:54:d4:90:3a:57:08:00 SRC=8.8.8.8 DST=10.39.0.110 LEN=84 TOS=0x00 PREC=0x00 TTL=32 ID=0 PROTO=ICMP TYPE=0 CODE=0 ID=13629 SEQ=15


例2、 配置实例2


  • 配置说明


iptables -A INPUT -j LOG –log-prefix=”iptables-”


这样可以把匹配上iptables规则的数据包写到syslog中。


因为iptables是按照自上而下的顺序对数据包进行匹配,所以在最底下添加LOG记录,也就是记录了执行默认规则的数据包。


  • 看一下syslog的输出:


Apr 10 17:45:54 S109 kernel: iptables-IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:52:54:00:02:12:a8:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=330 TOS=0x00 PREC=0x00 TTL=128 ID=4225 PROTO=UDP SPT=68 DPT=67 LEN=310
Apr 10 17:46:03 S109 kernel: iptables-IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:52:54:00:02:12:a8:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=330 TOS=0x00 PREC=0x00 TTL=128 ID=4226 PROTO=UDP SPT=68 DPT=67 LEN=310
Apr 10 17:46:09 S109 kernel: iptables-IN=eth1 OUT= MAC=78:2b:cb:42:a7:2f:3c:e5:a6:4d:59:00:08:00 SRC=184.173.144.34 DST=113.31.131.27 LEN=72 TOS=0x00 PREC=0x00 TTL=44 ID=29448 DF PROTO=UDP SPT=53 DPT=11437 LEN=52
Apr 10 17:46:16 S109 kernel: iptables-IN=eth1 OUT= MAC=78:2b:cb:42:a7:2f:3c:e5:a6:4d:59:00:08:00 SRC=184.173.144.34 DST=113.31.131.27 LEN=72 TOS=0x00 PREC=0x00 TTL=44 ID=30057 DF PROTO=UDP SPT=53 DPT=11826 LEN=52


通过防火墙TRACE模块跟踪报文


  • TRACE功能说明


TRACE


  • This target marks packets so that the kernel will log every rule which match the packets as those traverse the tables, chains, rules.


  • A logging backend, such as nf_log_ipv4(6) or nfnetlink_log, must be loaded for this to be visible. The packets are logged with
  • the string prefix: "TRACE: table‐name:chainname:type:rulenum " where type can be “rule” for plain rule, “return” for implicit rule at the end of a user defined chain and “policy” for the policy of the built in chains.


  • It can only be used in the raw table.


  • 用法举例:


modprobe ipt_LOG ip6t_LOG nfnetlink_log #加载对应模块
iptables -t raw -A PREROUTING -p icmp -s 8.8.8.8/32 -j TRACE #增加规则,源IP为8.8.8.8的icmp报文
dmesg                  #查看到匹配的报文的日志:
cat /var/log/message   #查看到匹配的报文的日志:


一个输出的跟踪信息如下:


Jun 16 17:44:05 dev-slave-110 kernel: TRACE: raw:PREROUTING:rule:2 IN=eth0 OUT= MAC=52:54:15:5d:39:58:02:54:d4:90:3a:57:08:00 SRC=8.8.8.8 DST=10.39.0.110 LEN=84 TOS=0x00 PREC=0x00 TTL=32 ID=0 PROTO=ICMP TYPE=0 CODE=0 ID=4064 SEQ=24
相关文章
|
10天前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
25 4
|
27天前
|
网络协议 Linux 网络安全
Centos7 防火墙策略rich-rule 限制ip访问-----图文详解
Centos7 防火墙策略rich-rule 限制ip访问-----图文详解
30 0
|
6月前
|
网络协议 Linux 网络安全
suse 12 配置ip,dns,网关,hostname,ssh以及关闭防火墙
suse 12 配置ip,dns,网关,hostname,ssh以及关闭防火墙
158 0
|
4月前
|
网络协议 Shell Linux
系统初始化shell,包括:挂载镜像、搭建yum、设置主机名及IP地址和主机名映射、配置动态IP、关闭防火墙和selinux
系统初始化shell,包括:挂载镜像、搭建yum、设置主机名及IP地址和主机名映射、配置动态IP、关闭防火墙和selinux
42 2
|
9月前
|
网络协议 安全 网络安全
TCP Wrapper简易防火墙
TCP Wrapper简易防火墙
|
8月前
|
应用服务中间件 Linux Shell
CentOS7下利用自带防火墙+Nginx封堵高频访问的恶意IP
CentOS7下利用自带防火墙+Nginx封堵高频访问的恶意IP
167 0
|
8月前
|
关系型数据库 Linux Shell
CentOS 6和CentOS 7各种区别(固定ip地址和防火墙关闭)
CentOS 6和CentOS 7各种区别(固定ip地址和防火墙关闭)
188 0
|
9月前
|
运维 Shell 网络安全
【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)(三)
【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)(三)
1401 0
|
9月前
|
运维 网络协议 网络安全
【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)(二)
【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)(二)
241 0
|
9月前
|
运维 网络协议 Linux
【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)(一)
【运维知识进阶篇】iptables防火墙详解(iptables执行过程+表与链概述+iptables命令参数+配置filter表规则+NAT表实现共享上网、端口转发、IP映射)
797 0