AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 793691
Accepted
Alexis Wilke
Alexis Wilke
Asked: 2025-04-13 23:18:27 +0800 CST2025-04-13 23:18:27 +0800 CST 2025-04-13 23:18:27 +0800 CST

如何确定哪个软件在端口 53 上发送具有未定义本地 IP 地址的 TCP 数据包?

  • 772

我在 dmesg 日志¹中看到大量以下两行内容:

[602956.308844] [iptables] (10): IN=eno1 OUT=eno2 MAC=xx:yy:..:zz SRC=10.174.26.245 DST=192.168.22.59 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=TCP SPT=53 DPT=47150 WINDOW=28960 RES=0x00 ACK SYN URGP=0 
[602956.652575] [iptables] (10): IN=eno1 OUT=eno2 MAC=xx:yy:..:zz SRC=10.172.0.22 DST=192.168.22.59 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=TCP SPT=53 DPT=44204 WINDOW=28960 RES=0x00 ACK SYN URGP=0 

我的防火墙阻止了这些,因为它无法识别 10.172.0.22 和 10.174.26.245 IP 地址。

实际上,查看 eno1 和 eno2 的 IP 地址列表,这两个 IP 地址并不包含在内。我使用两个 10.xxx 的 IP 地址,但不包括上面列出的两个(因此防火墙屏蔽了这两个 IP 地址)。

我的网络看起来是这样的:

+----------+     +--------+     +--------+     +--------+
| Internet |<--->| Router |<--->| Server |<--->| Laptop |
+----------+     +--------+     +--------+     +--------+

服务器和笔记本电脑都安装了防火墙。笔记本电脑的IP地址是192.168.22.59。它没有收到任何UDP TCP数据包。

eno1 和 eno2 位于服务器上。eno1 连接到路由器,路由器再连接到互联网。路由器连接使用本地网络地址(IPv4 和 IPv6)。eno2 是我的本地网络(LAN)。服务器设置为转发笔记本电脑和互联网之间的流量。

笔记本电脑使用了VPN,我怀疑它可能来自VPN,但笔记本电脑本身也装有防火墙,因此也会忽略此类流量。我想知道这些数据包来自哪里?是本地系统,还是来自黑客?或者VPN可能是罪魁祸首?无论如何,我不明白UDP TCP数据包怎么会使用网络接口上不存在的IP地址;如果是本地的,我也不明白它怎么会从外部传入。假设是本地进程发送了这些数据包,有什么办法可以找出它吗?

附注:我安装了 libvirt,但我尝试停止正在运行的一个 VPN,结果没有任何效果。而且,它创建的两个网桥不使用 10.17[24].xx 这两个 IP 地址。另外,我实在想不出 VPN 会把UDP TCP 数据包发送到错误的机器的原因。

更新

于是,我打开笔记本电脑,重新连接了 VPN。之后,上面两行代码就不再出现了。

这让我看到了另一行:

[608974.298853] [iptables] (192): IN=eno1np0 OUT=eno2np1 MAC=xx:yy:...:zz SRC=192.168.19.2 DST=192.168.22.189 LEN=151 TOS=0x00 PREC=0x00 TTL=63 ID=8281 DF PROTO=UDP SPT=53 DPT=47512 LEN=131 

这个是UDP协议,但关键在于,就像笔记本电脑一样,它需要来自路由器(也就是互联网)的本地IP地址的数据。设备189是我的惠普打印机,所以它可能也有一个类似VPN的系统,并且偶尔会以这种方式导致DNS请求失败。

解决

我实际上可以在路由表中看到这两个 IP,您可以这样做:

$ ip route

这意味着我的图表会更像这样:

+----------+     +-----+     +--------+     +--------+     +--------+
| Internet |<--->| VPN |<--->| Router |<--->| Server |<--->| Laptop |
+----------+     +-----+     +--------+     +--------+     +--------+

当然,正如telcoM所说,路由器和VPN之间也存在ISP,但这不是罪魁祸首。我现在直接丢弃了这些数据包,而没有先记录它们:

-A bad_tcp_packets -i eno1 -s 10.172.0.0/16 -j DROP
-A bad_tcp_packets -i eno1 -s 10.174.0.0/16 -j DROP

需要注意的是:这意味着使用 VPN 可能会打开另一端的一组本地IP 地址。因此,您必须注意这一点,因为这可能会影响您的 LAN 设置。


¹我设置了防火墙来记录此类访问,以确保能够发现此类问题。目前,我并非试图回避日志,而是试图理解它。

networking
  • 1 1 个回答
  • 65 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2025-04-14T12:16:43+08:002025-04-14T12:16:43+08:00

    您列出的两个日志消息都有PROTO=TCP SPT=53和ACK SYN URGP=0。

    所以协议是TCP,而不是UDP。不过,如果每次都是在笔记本电脑和其中一个神秘IP地址之间交换两个UDP数据包之后发生的,我也不会太惊讶。

    SYN+ACK 表示这些数据包是 TCP 初始三次握手的第二步:客户端发送 SYN,服务器以 SYN+ACK 进行响应,客户端以 ACK 进行确认,从而建立 TCP 连接。

    由于SYN+ACK数据包是服务器响应,所以它的源端口与原始SYN数据包的目的端口相同,并SPT=53标明端口号为53。

    端口 53(UDP 和 TCP)上众所周知的服务是……DNS。因此,10.174.0.22 和 10.174.26.245 很可能是您的互联网服务提供商 (ISP) 的 DNS 解析服务器。由于可公开路由的 IPv4 地址越来越宝贵,ISP 似乎已将其客户端使用的 DNS 解析服务器移至 10.xxx IP 段,因为 DNS 解析服务器不必是公开的:只有 ISP 自己的客户才需要能够访问它们。这与权威DNS 服务器不同,权威 DNS 服务器必须是公开的,以便全球其他 DNS 解析服务器能够访问它们。

    所以你的网络实际上更像是:

    +----------+     +-------------------+     +--------+     +--------+     +--------+
    | Internet |<--->|ISP infrastructure |<--->| Router |<--->| Server |<--->| Laptop |
    +----------+     +-------------------+     +--------+     +--------+     +--------+
    

    这两个神秘的 IP 地址应该位于“ISP 基础设施”框内的某个位置。

    一个简单的 DNS 客户端最初会将 DNS 查询作为 UDP 数据包发送。DNS 服务器会以 UDP 数据包进行响应,但如果完整的响应无法包含在单个 UDP 数据包中(例如,由于客户端正在尝试解析属于拥有大量 IP 地址的云服务的名称),DNS 解析服务器的单数据包 UDP 响应将包含一个标志,该标志大致表示“这只是完整答案的开头;如果需要其余部分,请通过 TCP 再次请求”。解析服务器会缓存答案,因此,如果客户端通过 TCP 重新连接,它可以轻松地重新发送答案,并使用尽可能多的 TCP 数据包来获取完整的查询结果。

    但是,如果这些神秘 IP与您的 ISP 的 DNS 解析服务器不匹配,那么可能是您的 ISP(或者您正在使用的 VPN)在隔离其客户的专用网络方面做得不好,并且您会听到“互联网背景噪音”(来自您的 ISP 的其他客户的专用网络的泄漏、端口扫描,甚至可能是试图假装来自您的专用网络的攻击尝试,以便您的防火墙可能不会阻止它们)。

    如果是这种情况,您应该仔细设置服务器,使其仅转发必要的流量,仅此而已。您还应该看看是否可以在路由器中配置流量过滤器:如果可以,您应该过滤掉所有使用内部网络地址作为源 IP,但来自路由器左侧的流量。您还可以在路由器上从左到右方向阻止任何其他私有 IP 范围,只允许那些您的 ISP 合法使用的 IP 范围(如果有)。

    假设您在网络中使用的网络掩码为 /24:

    • 从左侧来看,您的服务器应该只接受转发目标地址位于 192.168.22.0/24 网络中的数据包。
    • 从右侧看,您的服务器应该只接受转发源地址位于 192.168.22.0/24 网络中的数据包。

    您还应该使用连接跟踪,让服务器自动接受从右到左发起的连接的合法回复。这样,您就可以更严格地选择服务器从左到右方向转发的内容。

    当您在笔记本电脑上启动 VPN 隧道时,它通常会阻止来自/到 VPN 隧道服务器之外的所有地方的未加密连接(除非为您的本地网络配置了例外)并通过 VPN 隧道路由所有内容,因此笔记本电脑将看到的不是 ISP 的“互联网背景噪音”,而是 VPN 出口点的互联网背景噪音。

    如果您已在笔记本电脑上配置 VPN,允许在 VPN 激活期间连接到本地网络,而 VPN 连接的防火墙设置不够严格,则您可能会通过 VPN 将未经请求的流量发送到您的本地网络。攻击者可能会发现您服务器的转发功能(如果限制不够),并利用该功能通过 VPN 进入本地网络,然后再通过您的常规互联网连接返回,从而有效地利用您的 VPN 连接来隐藏他们的活动。为了您的利益,请务必确保这种情况不会发生。

    • 2

相关问题

  • 查找与端口关联的线程/脚本?

  • 关于网络挂载文件的问题

  • IP地址可以以255结尾而不是广播IP地址吗?

  • 无法识别arp命令或ip命令哪个MAC地址输出正确

  • 奇怪的路由器与centos 6一起工作[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve