案列分享-因netfilter包过滤规则配置错误造成datax数据同步作业运行失败

本文涉及的产品
云防火墙,500元 1000GB
简介: 案列分享-因netfilter包过滤规则配置错误造成datax数据同步作业运行失败

案列分享-因netfilter包过滤规则配置错误造成datax数据同步作业运行失败

大数据作业运行失败的原因多种多样,在复杂环境中的网络问题也是屡见不鲜。 本文分享一个因linux的netfilter 包过滤规则配置错误造成的datax任务失败问题的排查案列,希望大家有所收获。

1. 问题概述

某客户现场,datax 数据同步作业运行失败。

经排查,该 datax 作业会采集 oracle 数据并同步到 CDH 大数据集群的 hive 中,其中 CDH 集群开启了 kerberos 认证(使用的是 freeipa),且 CDH 集群的系列节点和 KDC 节点是 CO-LOCATED 共同部署的。

2 问题分析

  • 排查发现,CDH系列节点都使用了 iptables 防火墙服务(systemctl status iptables可以查看服务状态);
  • 进一步,通过命令 iptables -L 可以发现,cdh/kdc 系列节点通过配置 netfilter 中表和链的系列规则,限制了某些节点(如datax作业节点)对 cdh/kdc 的tcp 链接,所以 datax 作业会因为无法获取到 NAMENODE/DATANODE/KDC节点的tcp链接而报错。

image.png


  • 通过命令 ping ip-xxx 测试到目标机器的网路连接,并通过 tcpdump/tshark 抓包,可以发现错误原因:“IP XXX > XXX: ICMP xxx Destination unreachable (host administratively prohibited),这验证了上述猜测:

image.png


3. 问题解决

在cdh/kdc系列节点,通过命令 iptables -t filter -A input -s xxx -j ACCEPT 添加规则(注意所有规则的生效顺序),开通 datax 作业节点对这些CDH节点和KDC节点的tcp网络链接,问题解决。

  • 可以通过 ping ip-xxx, telnet ip-xxx port-xxx 等命令,验证网络连通性,正常情况下命令输出如下:

image.png

4. 技术背景

  • 在 RHEL7/CENTOS7 里,预装了多种防火墙服务,即 firewalld/iptables,但同一时间只能启动一个,且默认启用的是 firewalld (老版本 linux 只有iptables防火墙服务);
  • firewalld/iptables 这些防火墙服务运行在用户态,其自身并不具备防火墙的功能,而是需要通过内核的 netfilter 子系统来实现,也就是说 firewalld 和 iptables 都是用于维护表/链/规则,而真正使用规则进行包过滤的是内核的 netfilter;
  • firewalld 相比 iptables 功能更全面,可以在不丢失现有连接状态的情况下(conntrack),在正常的系统操作期间更改规则;
  • 「在后台,firewalld 和 iptables 这两个防火墙服务,都通过相同的接口来与内核中的 netfilter 子系统交互,即它们都通过 iptables 命令来与 netfilter 交互」
  • 「iptables-services 防火墙服务,和 iptables 命令,不是同一个概念,前者是和 firewalld一样的用户态的防火墙服务,后者是用来跟内核态的 netfilter 子系统交互的一个命令」
  • 由于真正起到包过滤作用的是内核态的 netfilter底层的表和链底层的系列包过滤规则,而不是 firewalld/iptables 这些用户态的防火墙服务,所以「即使关闭防火墙服务firewalld/iptables,已经配置在 netfilter 中的 表/链/规则也仍然起作用,所以不能简单地认为,关闭了防火墙服务就没有任何网络问题」
  • You need to distinguish between the iptables service and the iptables command. Although firewalld is a replacement for the firewall management provided by iptables service, it still uses the iptables command for dynamic communication with the kernel packet filter (netfilter). So it is only the iptables service that is replaced, not the iptables command. That can be a confusing distinction at first.
  • The "admin prohibited filter" seen in the tcpdump output means there is a firewall blocking a connection. It does it by sending back an ICMP packet meaning precisely that: the admin of that firewall doesn't want those packets to get through. It could be a firewall at the destination site. It could be a firewall in between. It could be iptables on the Linux system.
  • The default ports used by Kerberos are port 88 for the KDC1 and port 749 for the admin server. You can, however, choose to run on other ports, as long as they are specified in each host's /etc/services and krb5.conf files, and the kdc.conf file on each KDC.

5. 相关命令

  • systemctl status firewalld/iptables: 排查 linux 防火墙状态(防火墙有多种类型:硬件/软件/源端/目标端/网关防火墙,以及 linux 自带的 firewalld/iptables 防火墙);
  • yum info iptables/iptables-services/firewalld:查看是否安装了 iptables 命令,iptables/firewalld防火墙服务;
  • iptables -L: 排查 linux 防火墙配置(默认查看 filter 表);
  • traceroute xxx/ip route:排查网络和路由配置;
  • ping xxx/telnet xxx 10000/nc -z -v -u xxx 88:排查网络和端口联通性;
  • tcpdump -i any -n icmp/tcpdump -i eth0 port 2181 or arp: tcpdump 抓包并分析;
  • tshark -i ens160 dst 192.168.168.65 or arp -w /tmp/tshark.src.pcap: tshark 抓包并导出,后续可以通过wireshark分析;
  • tcpdump -i ens160 port 10000 or arp -w /tmp/tcpdump.dst.pcap: tshark 抓包并导出,后续可以通过wireshark分析;
  • iptables -t filter -A INPUT -s 10.20.39.254/24 -j DROP:添加一条规则到 filter 表的input链的末尾;
  • iptables -t filter -D INPUT -s 10.20.39.254/24 -j REJECT:删除 filter 表的input链中的某条规则;
  • iptables 规则的 target 目标策略,配置为 DROP 代表中断过滤,会直接丢弃数据包不给任何回应;而配置为 REJECT 同样代表中断过滤,但拒绝数据包通过的同时会返回响应信息,并可以通过 --reject-with tcp-reset|port-unreachable|echo-reply 指定返回的具体的响应信息,以下截图分别展示了配置为 DROP/REJECT时,客户端 ping 服务器时获得的不同的响应:

image.png

相关文章
|
3月前
|
关系型数据库 MySQL 大数据
DataX:数据同步的超音速英雄!阿里开源工具带你飞越数据传输的银河系,告别等待和故障的恐惧!快来见证这一数据工程的奇迹!
【8月更文挑战第13天】DataX是由阿里巴巴开源的一款专为大规模数据同步设计的工具,在数据工程领域展现强大竞争力。它采用插件化架构,支持多种数据源间的高效迁移。相较于Apache Sqoop和Flume,DataX通过并发写入和流处理实现了高性能同步,并简化了配置流程。DataX还支持故障恢复,能够在同步中断后继续执行,节省时间和资源。这些特性使其成为构建高效可靠数据同步方案的理想选择。
292 2
|
4月前
|
监控 数据挖掘 大数据
阿里云开源利器:DataX3.0——高效稳定的离线数据同步解决方案
对于需要集成多个数据源进行大数据分析的场景,DataX3.0同样提供了有力的支持。企业可以使用DataX将多个数据源的数据集成到一个统一的数据存储系统中,以便进行后续的数据分析和挖掘工作。这种集成能力有助于提升数据分析的效率和准确性,为企业决策提供有力支持。
|
3月前
|
Java 关系型数据库 DataX
DATAX数据同步
DATAX数据同步
510 0
|
4月前
|
SQL 存储 JSON
DataWorks产品使用合集之没有dev环境的project,如何创建数据集成任务时完成网络与资源配置
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
分布式计算 关系型数据库 MySQL
MySQL超时参数优化与DataX高效数据同步实践
通过合理设置MySQL的超时参数,可以有效地提升数据库的稳定性和性能。而DataX作为一种高效的数据同步工具,可以帮助企业轻松实现不同数据源之间的数据迁移。无论是优化MySQL参数还是使用DataX进行数据同步,都需要根据具体的应用场景来进行细致的配置和测试,以达到最佳效果。
|
4月前
|
存储 NoSQL API
Redis问题之ETCD进行秒杀活动的配置数据同步如何解决
Redis问题之ETCD进行秒杀活动的配置数据同步如何解决
|
5月前
|
分布式计算 DataWorks 关系型数据库
DataWorks操作报错合集之离线同步任务中,把表数据同步到POLARDB,显示所有数据都是脏数据,报错信息:ERROR JobContainer - 运行scheduler 模式[local]出错.是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
Java 关系型数据库 流计算
实时计算 Flink版操作报错合集之配置cats进行从MySQL到StarRocks的数据同步任务时遇到报错,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
348 0
|
3月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之数据集成并发数不支持批量修改,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
数据采集 DataWorks 数据管理
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第10天】随着大数据技术的发展,企业对数据处理的需求日益增长。阿里云推出的DataWorks是一款强大的数据集成和管理平台,提供从数据采集、清洗、加工到应用的一站式解决方案。本文通过电商平台案例,详细介绍了DataWorks的核心功能和优势,展示了如何高效处理大规模数据,帮助企业挖掘数据价值。
81 1

热门文章

最新文章

相关实验场景

更多