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

本文涉及的产品
云防火墙,500元 1000GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【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
相关文章
|
6月前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
100 4
|
13天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
38 6
|
5月前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
53 3
|
6月前
|
监控 网络协议 安全
【亮剑】当设备IP能ping通但无法上网时,可能是DNS解析、网关/路由设置、防火墙限制、网络配置错误或ISP问题
【4月更文挑战第30天】当设备IP能ping通但无法上网时,可能是DNS解析、网关/路由设置、防火墙限制、网络配置错误或ISP问题。解决步骤包括检查网络配置、DNS设置、网关路由、防火墙规则,以及联系ISP。预防措施包括定期备份配置、更新固件、监控网络性能和实施网络安全策略。通过排查和维护,可确保网络稳定和安全。
1118 1
|
网络协议 Linux 网络安全
suse 12 配置ip,dns,网关,hostname,ssh以及关闭防火墙
suse 12 配置ip,dns,网关,hostname,ssh以及关闭防火墙
334 0
|
6月前
|
网络协议 Linux 网络安全
Centos7 防火墙策略rich-rule 限制ip访问-----图文详解
Centos7 防火墙策略rich-rule 限制ip访问-----图文详解
967 0
|
网络协议 安全 网络安全
TCP Wrapper简易防火墙
TCP Wrapper简易防火墙
107 0
|
6月前
|
网络协议 Shell Linux
系统初始化shell,包括:挂载镜像、搭建yum、设置主机名及IP地址和主机名映射、配置动态IP、关闭防火墙和selinux
系统初始化shell,包括:挂载镜像、搭建yum、设置主机名及IP地址和主机名映射、配置动态IP、关闭防火墙和selinux
88 2
|
应用服务中间件 Linux Shell
CentOS7下利用自带防火墙+Nginx封堵高频访问的恶意IP
CentOS7下利用自带防火墙+Nginx封堵高频访问的恶意IP
237 0
|
关系型数据库 Linux Shell
CentOS 6和CentOS 7各种区别(固定ip地址和防火墙关闭)
CentOS 6和CentOS 7各种区别(固定ip地址和防火墙关闭)
242 0