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
    • 最新
    • 标签
主页 / server / 问题

问题[tcp](server)

Martin Hope
nagylzs
Asked: 2024-07-26 20:59:53 +0800 CST

通过 wireguard 出现间歇性 TCP 连接断开和超时

  • 5

我有三台服务器,通过 wireguard 完全连接。它们运行 Ubuntu Server 22.04 和带有流复制的 postgresql repmr 集群。

所有计算机都有一个公共地址,但 PostgreSQL 实例和数据库客户端正在使用内部地址(在 wireguard VPN 上)。

在其中一台计算机上,我在日志中看到了以下内容:

2024-07-26 07:23:14.463 UTC [147915] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly
2024-07-26 07:25:56.242 UTC [148509] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly
2024-07-26 07:28:17.567 UTC [148818] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly
2024-07-26 07:33:13.234 UTC [149090] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly
2024-07-26 07:48:42.721 UTC [149723] FATAL:  terminating walreceiver due to timeout
2024-07-26 07:52:17.298 UTC [151521] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly
2024-07-26 08:01:25.141 UTC [151889] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly
2024-07-26 08:02:16.337 UTC [152868] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly
2024-07-26 08:06:13.169 UTC [152951] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly
2024-07-26 08:22:04.180 UTC [153377] FATAL:  could not receive data from WAL stream: server closed the connection unexpectedly

此外,当我尝试从 go 或 python 程序连接到主数据库时,有时我会看到“连接超时”或“对等方重置连接”、“操作过程中连接已关闭”等类似消息。需要注意的是,这些消息只会发生在一台计算机上,而不会发生在其他计算机上。

在服务器端(主 postgresql),我在日志中看到以下内容:

2024-07-26 12:31:36.667 UTC [3778655] telegraf@telegraf LOG:  could not receive data from client: Connection reset by peer
2024-07-26 12:31:36.897 UTC [3777638] telegraf@telegraf LOG:  could not receive data from client: Connection reset by peer
2024-07-26 12:31:39.462 UTC [3775606] telegraf@telegraf LOG:  could not receive data from client: Connection reset by peer
2024-07-26 12:31:39.480 UTC [3780628] telegraf@telegraf LOG:  could not receive data from client: Connection reset by peer

这些错误每小时只发生几次。这足以让我的应用程序变得不可靠,但它们是间歇性的。我在公共地址之间运行了此 ping 测试:

ping -c 3600 primary.public.com
# waited an hour...
--- primary.public.com ping statistics ---
3600 packets transmitted, 3600 received, 0% packet loss, time 3603052ms
rtt min/avg/max/mdev = 72.849/73.214/101.325/0.881 ms

我还对私有 IP 地址进行了 ping 测试:

ping -c 1008 primary.private.com
# waited...
--- primary.private.com ping statistics ---
1008 packets transmitted, 783 received, 22.3214% packet loss, time 1013304ms
rtt min/avg/max/mdev = 80.742/91.383/256.720/16.133 ms

换句话说,22% 的 ping 数据包在 wireguard 上丢失。

所有 wireguard 设备的 MTU 值都是默认的 1420。

3: dev0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.241.64.3/32 scope global dev0
       valid_lft forever preferred_lft forever

还尝试使用此脚本测试 MTU:

size=1272
while ping -s $size -c1 -M do primary.internaladdress.com >&/dev/null; do 
  ((size+=4))
done
echo "Max MTU size: $((size-4+28))

而且它还打印了1420。

请注意,问题只存在于三台计算机中的两台之间。例如,A 和 B 之间是坏的,但 BC 之间是好的。

必须注意的是,有问题的计算机距离很远(在不同的大陆)。但这不应该导致这种情况。

据我了解,wireguard 将 IP 数据包封装成加密的 UDP 数据包,TCP 协议负责重新发送丢失的数据包。

非常奇怪的是,公有地址之间的 IP 数据包的丢弃率为 0%,而 wireguard/UDP 数据包的丢弃率却超过 20%。UDP 数据包是否可能被某些路由器或交换机丢弃?也许 QoS 正在发生?

这些服务器是租用的,彼此相距很远。显然,我无法采取任何措施来消除数据包丢失。我知道 UDP 总是不可靠的。但我想知道我是否可以以某种方式修复 TCP 连接。即使它们有时会变慢(即使它们一两秒钟无法通信),它们也不应该重置连接。我有什么选择?

tcp
  • 1 个回答
  • 53 Views
Martin Hope
rvh
Asked: 2023-10-31 05:36:14 +0800 CST

远程桌面间歇性连接问题

  • 5

这篇文章与此相关:通过主机名与 IP 地址进行远程桌面连接

但还有更多信息需要提供,因此决定发布新信息。

使用主机名连接到远程桌面时,它经常挂在“保护远程连接...”上。这是wireshark捕获: 在此输入图像描述

但是当连接成功时(有时是在使用主机名时,总是在使用 IP 地址时),捕获结果如下:在此输入图像描述

注意第一次捕获时的psh,ack 。然后它在最后捕获的数据包之后挂起。

在第二种情况下,它会连接并正常工作。

22222只是目标win10机器上的远程桌面端口,由3389更改而来。客户端机器也是win10。

任何想法为什么它经常被卡住,但只有在 mstsc.exe 中指定主机名时?

tcp
  • 1 个回答
  • 48 Views
Martin Hope
cat pants
Asked: 2023-05-04 08:33:02 +0800 CST

当您通过 telnet 建立 tcp 连接时,服务返回的字符串的名称是什么?

  • 5

如果你 telnet 到一个 ssh 服务器,它会建立一个连接并返回一个字符串,比如SSH-2.0-OpenSSH....etc。

如果您连接到 mysql 服务器,也会发生类似的情况。

服务返回的字符串的名称到底是什么?它不是“标头”,因为我们在这里不是在谈论 http(s)。

同样,也可以通过 telnet 发送命令,例如,如果需要,您可以连接到电子邮件服务器并通过这种方式发送电子邮件。发送的命令的名称是什么?它们不完全是“POST”请求,因为我们在这里没有使用 http(s)。

tcp
  • 1 个回答
  • 37 Views
Martin Hope
Dominique
Asked: 2022-12-22 02:48:45 +0800 CST

哪台机器实际上关闭了 TCP 套接字,为什么?

  • 6

我正在处理 C# 应用程序,处理 TCP 套接字。

我在远程机器上有一个服务器应用程序 ( Hercules ),试图保持套接字打开。
我的机器上有我的应用程序,订阅了那个打开的套接字。

我正在使用Microsoft 的 TCPViewer来跟踪正在发生的事情。

几分钟后,我看到套接字从已建立状态变为时间等待状态,然后套接字连接断开。

我一直在两台计算机的事件查看器中查找所有常规位置(Windows 日志/应用程序、/安全性、/设置、/系统和/转发事件)中的事件 ID 4227,但我一无所获。

我应该怎么做才能知道哪台机器实际上正在关闭 TCP 套接字以及为什么?

tcp
  • 1 个回答
  • 34 Views
Martin Hope
trisct
Asked: 2022-10-19 17:29:14 +0800 CST

Ubuntu 在哪里记录 TCP 连接?

  • 6

在为我的办公室 PC 进行一些网络安全检查(我是业余爱好者)时,我发现了一些未知的 tcp6 连接(带有netstat -nt):

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
... (omitted known connections)
tcp6       0      0 aaa.bbb.ccc.ddd:1716      aaa.bbb.ccc.eee:55714     ESTABLISHED
tcp6       0      0 aaa.bbb.ccc.ddd:60810     aaa.bbb.ccc.fff:1716      ESTABLISHED

aaa.bbb.ccc.ddd我自己的ip在哪里。另外两个未知 ip 确实来自同一个子网,但我不知道为什么打开这些连接。

问题:

  1. 我在哪里可以找到这些连接的日志,例如,谁初始化了连接以及它们是如何被允许/授权的(如果这是正确的词)?

  2. 这是网络攻击的迹象吗?因为我不记得使用任何需要来自同一子网的 tcp 连接的服务。此外,我已经重新启动了几次,这些连接似乎总是自动弹出。

  3. 如果这表明任何可能的不安全感,我该怎么办?


更新:根据@larsks 和@ NikitaKipriyanov 的建议,我发现这些连接是由 kdeconnect 建立的,它会扫描可用设备以在本地网络中配对。但它只是维护这样一个列表而没有实际配对,所以此时不​​应该有任何安全问题。

tcp linux-networking
  • 1 个回答
  • 60 Views
Martin Hope
Do - Magedon
Asked: 2022-04-04 09:38:42 +0800 CST

有人可以解释这些表达之间的区别吗

  • 1
drop proto tcp and not (dst port 80)

pass proto tcp and dst port 80

它们之间有区别吗?

networking udp iptables tcp filter
  • 1 个回答
  • 47 Views
Martin Hope
Joseph
Asked: 2021-09-23 22:37:55 +0800 CST

使用 proxmox 容器上的 NetData 监控 softirqs RCU 上的峰值

  • 2

我有一个具有以下特点的服务器:https ://www.soyoustart.com/it/offerte/1801sysgame05.xml

处理器 Intel i7-4790K

内存 32GB DDR3 1333MHz

包括流量无限的Anti-DDoS

磁盘 1x240GB SSD

带宽 250 Mbps

我已经安装了 Proxmox Linux 发行版,它运行基于 Ubuntu 服务器的容器来处理用 C++ 编写的实时 TCP 游戏服务器,目前该服务器拥有大约 1000 名在线用户,我们将很快将当前人口翻一番.

问题是,一旦在线用户数量达到约 850,我们就会遇到一个奇怪的性能“瓶颈”。一旦它回到约 800 或更少,瓶颈就会消失。实际上发生的情况是玩家必须等待大约 30 秒才能连接到服务器,而已经连接的玩家没有遇到任何问题(没有延迟、没有冻结等)。似乎网络拥塞、上限或类似情况会拒绝与同一进程的进一步连接并对我们的 CPU 造成压力(从下面的屏幕截图中可以看到)

在这里,我从我们的 NetData 中收集了一些图表,其中我注意到了相同的“模式”。我猜softirqs RCU特别有意义,但我不知道它到底是什么意思。

软中断 RCU: 图片

cpu使用/压力: 图片

处理器频率 图片

处理器温度

图片

我不认为问题出在我们的 CPU 本身,但如上所述,似乎与进程限制或类似问题有关。

你知道发生了什么吗?

更新:

另一个相关图表

图片

tcp proxmox cpu-usage irq netdata
  • 1 个回答
  • 125 Views
Martin Hope
comctimert
Asked: 2021-07-27 15:40:05 +0800 CST

如何创建支持多主机的 TCP 代理?

  • 0

我想创建一个支持多个主机的 TCP 代理。我看到的示例是使用 DNS 服务器将特定主机指向 TCP 代理,该代理在其中硬编码了主机。TCP 代理不能处理多个主机,因为如果所有主机都被路由到 TCP 代理,代理将不知道将数据发送到哪里。有没有办法解决这个问题?

domain-name-system networking proxy ip tcp
  • 1 个回答
  • 127 Views
Martin Hope
Duarnad
Asked: 2021-07-16 07:12:46 +0800 CST

尽管使用了不同的目标端口,但客户端端口耗尽

  • 1

在阅读端口耗尽时,我经常看到它考虑了 tcp 连接的四组(src ip、src 端口、dst ip、dst 端口)。因此,如果端口范围为 20000(40000 到 60000),目标端口为 8088 和 8087,并且在同一台机器上有两个客户端,使用相同的 src 地址和 dst 地址,我应该能够打开 40000 个连接。然而,在我的测试中,情况并非如此。即使在这种配置中,我也只能打开 20000 个连接。我已经转储了 ss -s 的输出并按源端口对其进行排序。这是一个摘录:

CLOSE-WAIT  26378    0           172.24.131.110 40001     172.24.131.97 9088    
CLOSE-WAIT  25029    0           172.24.131.110 40002     172.24.131.97 9087    
CLOSE-WAIT  23840    0           172.24.131.110 40003     172.24.131.97 9087    
CLOSE-WAIT  25207    0           172.24.131.110 40004     172.24.131.97 9087    
CLOSE-WAIT  25572    0           172.24.131.110 40005     172.24.131.97 9088    
CLOSE-WAIT  26334    0           172.24.131.110 40006     172.24.131.97 9087    
CLOSE-WAIT  27089    0           172.24.131.110 40007     172.24.131.97 9087    
CLOSE-WAIT  23860    0           172.24.131.110 40008     172.24.131.97 9088    
CLOSE-WAIT  25463    0           172.24.131.110 40009     172.24.131.97 9087    
CLOSE-WAIT  26603    0           172.24.131.110 40010     172.24.131.97 9088    
CLOSE-WAIT  25436    0           172.24.131.110 40011     172.24.131.97 9087    
ESTAB       0        0           172.24.131.110 40012     172.24.131.97 9087    
CLOSE-WAIT  25042    0           172.24.131.110 40013     172.24.131.97 9087    
CLOSE-WAIT  25738    0           172.24.131.110 40014     172.24.131.97 9087    
CLOSE-WAIT  27363    0           172.24.131.110 40015     172.24.131.97 9088    
CLOSE-WAIT  25860    0           172.24.131.110 40016     172.24.131.97 9088    

它一直持续到达到值 60000。从来没有一个源端口被使用过两次,就好像值池实际上是通用的一样。是这种情况还是我在某处缺少配置标志?

内核版本是 4.15.0-144-generic。端口范围在这里真正受到控制:如果我将端口范围更改为 40000-50000,我只有 10000 个可能的连接。测试的客户端和服务器是网络测谎工具。

linux networking port tcp
  • 1 个回答
  • 106 Views
Martin Hope
red0ct
Asked: 2021-07-13 05:47:34 +0800 CST

iptables --reject-with tcp-reset 用于非 TCP 流量

  • 1

在这里,我遇到了一个有点奇怪的规则:

iptables -A INPUT -s 10.26.95.20 -j REJECT --reject-with tcp-reset

此规则匹配来自特定网络的所有协议,并使用 TCP RST 数据包拒绝它。
这应该如何处理非 TCP 数据包?如果另一端(10.26.95.20)发送UDP数据包然后接收TCP RST?这看起来非常奇怪..

firewall linux networking iptables tcp
  • 1 个回答
  • 1380 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve