本地机器导致 IPv4 网站出现连接问题

本地机器导致 IPv4 网站出现连接问题

我使用 设置了一台参与区块链 p2p 网络的本地机器Ubuntu Server 20.04。该计算机通过以太网电缆(和/或 Wi-Fi)连接到我的(低端)家用路由器。

如果机器已打开,我无法IPv4从本地网络中的其他设备访问网站(例如 amazon.com),而IPv6网站(例如 google.com)可以正常工作。在我的浏览器中,我收到错误ERR_CONNECTION_REFUSED。奇怪的是,即使我无法访问相关网站,也可以从这些设备 ping 外部 IPv4 地址。节点本身保持连接并与 p2p 网络同步,但有时会断开连接,我找不到对等节点。

禁用机器上的 p2p 客户端可以立即解决问题,我可以再次从其他设备访问 IPv4 网站。

到目前为止我已经尝试过:

  • 我打电话给了我的 ISP。据他们说,这不是他们的问题。
  • 我将设备上的 DNS 服务器更改为8.8.8.8Google。但这没有帮助。
  • 我使用了 VPN,它能正常工作并让我访问 IPv4 网站。

更新:

我的 netplan 配置如下/etc/netplan/01-netcfg.yaml

network:
  version: 2
  ethernets:
    enp1s0:
      dhcp4: true
  wifis:
    wlp2s0:
      optional: true
      dhcp4: true
      access-points:
        "MyNetworkSSID":
          password: "MySecretPassword"

使用netstat -a,我检查了我的 p2p 节点的已建立连接数在 60 到 70 之间。

更新2

UDP 连接数似乎非常大,这可能是问题所在(正如用户 Bob 指出的那样)。我截取了一些iptraf-ng详细的界面统计截图以供比较:

启动p2p网络后不久1分钟后的统计数据(最大负载时段)

空闲 1 分钟后的统计数据

更新 3:

空闲(仅ssh处于活动状态)

>>> sudo tcpdump
205 packets captured
235 packets received by filter
0 packets dropped by kernel

罕见情况:p2p 节点正在运行并且ip4v正常工作

>>> sudo tcpdump
85268 packets captured
99647 packets received by filter
14346 packets dropped by kernel

p2p 节点正在运行并且ip4v连接中断

>>> sudo tcpdump
224 packets captured
11449 packets received by filter
11194 packets dropped by kernel

以下是生成的输出的摘录tcpdump

23:28:46.092812 IP6 2a02:908:2:a::1.domain > ethnode.37187: 12082 1/0/1 PTR vps-a6e5820a.vps.ovh.net. (91)
23:28:46.092868 IP6 ethnode > 2a02:908:2:a::1: ICMP6, destination unreachable, unreachable port, ethnode udp port 37187, length 147
23:28:46.474444 IP6 ethnode.57942 > 2a02:908:2:a::1.domain: 47223+ [1au] PTR? 111.32.183.52.in-addr.arpa. (55)
23:28:46.474634 IP6 ethnode.60418 > 2a02:908:2:a::1.domain: 58846+ [1au] PTR? 111.32.183.52.in-addr.arpa. (55)
23:28:52.026797 IP ec2-54-93-37-91.eu-central-1.compute.amazonaws.com.9100 > ethnode.42548: Flags [.], ack 86092, win 1450, options [nop,nop,TS val 882586355 ecr 806259356], length 0
23:28:52.026843 IP ec2-54-93-37-91.eu-central-1.compute.amazonaws.com.9100 > ethnode.42548: Flags [P.], seq 20649:20690, ack 86092, win 1450, options [nop,nop,TS val 882586355 ecr 806259356], length 41
23:28:52.442256 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host pool-100-8-209-196.nwrknj.fios.verizon.net unreachable - admin prohibited filter, length 68
23:28:52.442498 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host vmi281255.contaboserver.net unreachable - admin prohibited filter, length 68
23:28:52.442727 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host p4ff866e6.dip0.t-ipconnect.de unreachable - admin prohibited filter, length 68
23:28:52.442845 IP ethnode.57058 > ec2-18-132-143-154.eu-west-2.compute.amazonaws.com.30313: Flags [S], seq 892243886, win 64240, options [mss 1460,sackOK,TS val 1978287574 ecr 0,nop,wscale 7], length 0
23:28:52.442856 IP ethnode.57026 > 46.101.173.99.30300: Flags [S], seq 2368761152, win 64240, options [mss 1460,sackOK,TS val 1536371124 ecr 0,nop,wscale 7], length 0
23:28:52.442871 IP ec2-52-37-3-144.us-west-2.compute.amazonaws.com.9000 > ethnode.37412: Flags [.], ack 3322671408, win 844, options [nop,nop,TS val 909942956 ecr 665035467], length 0
23:28:52.442969 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host d54C075AB.access.telenet.be unreachable - admin prohibited filter, length 68
23:28:52.443144 IP ethnode.55632 > 134.209.177.40.30305: Flags [S], seq 1646301929, win 64240, options [mss 1460,sackOK,TS val 1054555862 ecr 0,nop,wscale 7], length 0
23:28:52.443268 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host vrn78-1-82-232-34-210.fbx.proxad.net unreachable - admin prohibited filter, length 68
23:28:52.443497 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host 247.155.231.35.bc.googleusercontent.com unreachable - admin prohibited filter, length 68
23:28:52.443718 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host 226.65.86.34.bc.googleusercontent.com unreachable - admin prohibited filter, length 68
23:28:52.443943 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host ip175.ip-193-70-72.eu unreachable - admin prohibited filter, length 68
23:28:52.444057 IP6 ethnode.47483 > 2a02:908:2:a::1.domain: 42799+ [1au] PTR? 36.102.138.144.in-addr.arpa. (56)
23:28:52.444255 IP ethnode.41741 > compalhub.home.domain: 10839+ [1au] PTR? 36.102.138.144.in-addr.arpa. (56)
23:28:52.444318 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host pool-98-110-221-150.bstnma.ftas.verizon.net unreachable - admin prohibited filter, length 68
23:28:52.449265 IP ec2-52-37-3-144.us-west-2.compute.amazonaws.com.9000 > ethnode.37412: Flags [.], ack 1199, win 844, options [nop,nop,TS val 909942962 ecr 665035467], length 0
23:28:52.453208 IP mail.seamonkey.tech.13423 > ethnode.59334: Flags [P.], seq 656391773:656391794, ack 219687401, win 501, options [nop,nop,TS val 1564452635 ecr 1173219098], length 21
23:28:52.453249 IP ethnode.59334 > mail.seamonkey.tech.13423: Flags [.], ack 21, win 501, options [nop,nop,TS val 1173219336 ecr 1564452635], length 0
23:28:52.453279 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host sd-69419.infobzh.eu unreachable - admin prohibited filter, length 68
23:28:52.453482 IP ec2-52-37-3-144.us-west-2.compute.amazonaws.com.9000 > ethnode.37412: Flags [.], ack 1805, win 844, options [nop,nop,TS val 909942966 ecr 665035468], length 0
23:28:52.455277 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host 65.102.241.187 unreachable - admin prohibited filter, length 68
23:28:52.455332 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host 161.35.74.193 unreachable - admin prohibited filter, length 68
23:28:52.896004 IP6 ethnode.42196 > 2a02:908:2:a::1.domain: 21924+ [1au] PTR? 198.176.210.81.in-addr.arpa. (56)
23:28:52.896144 IP ethnode.54508 > compalhub.home.domain: 3665+ [1au] PTR? 198.176.210.81.in-addr.arpa. (56)
23:28:52.898626 IP compalhub.home.domain > ethnode.41741: 10839 1/0/1 PTR cpe-144-138-102-36.static.belong.com.au. (109)
23:28:52.898657 IP ethnode > compalhub.home: ICMP ethnode udp port 41741 unreachable, length 145
23:28:52.900120 IP ec2-52-37-3-144.us-west-2.compute.amazonaws.com.9000 > ethnode.37412: Flags [.], ack 4221, win 844, options [nop,nop,TS val 909943412 ecr 665036035], length 0
23:28:52.920171 IP ec2-54-93-83-30.eu-central-1.compute.amazonaws.com.9100 > ethnode.56882: Flags [P.], seq 1880445172:1880445872, ack 2682991055, win 0, options [nop,nop,TS val 1986717043 ecr 828470466], length 700
23:28:52.920209 IP ethnode.56882 > ec2-54-93-83-30.eu-central-1.compute.amazonaws.com.9100: Flags [.], ack 700, win 2571, options [nop,nop,TS val 828470759 ecr 1986717043], length 0
23:28:52.920238 IP6 2a02:908:2:a::1.domain > ethnode.42196: 21924 1/0/1 PTR ip-81-210-176-198.hsi17.unitymediagroup.de. (112)
23:28:52.921586 IP6 ethnode.58127 > 2a02:908:2:a::1.domain: 19071+ [1au] PTR? 196.209.8.100.in-addr.arpa. (55)
23:28:52.921734 IP ethnode.56434 > compalhub.home.domain: 48469+ [1au] PTR? 196.209.8.100.in-addr.arpa. (55)
23:28:53.108023 IP6 ethnode.48467 > 2a02:908:2:a::1.domain: 10728+ [1au] PTR? 231.125.86.167.in-addr.arpa. (56)

以下信息对我来说很重要:

23:28:52.453279 IP ip-81-210-176-198.hsi17.unitymediagroup.de > ethnode: ICMP host sd-69419.infobzh.eu unreachable - admin prohibited filter, length 68

问题解决:

购买更好的电缆调制解调器帮我解决了这些问题。

答案1

这是 p2p 网络和 NAT(用于 IPv4)的一个常见问题。

由于 IPv4 地址耗尽,我们无法为网络上的每台主机分配一个全局唯一的 IPv4 地址。NAT 可用于解决此问题,方法是将非唯一私有范围 (RFC1918) 中的多个地址映射到单个公共 IP 地址。

换句话说,它将每个唯一privateip:port对映射到一个唯一publicip:port对。一些 NAT 设置更进一步,将远程地址(和端口)添加到唯一元组中。


这里的问题是您的路由器需要跟踪所有这些连接。这样做会占用内存,而在硬件卸载的常见情况下,此内存可能是一个固定的(而且相当小)大小。我见过无法维持超过 1024 个同时连接的路由器。

使用 p2p,就像 Bittorrent 等传统上所见的那样,大量的连接甚至会溢出中等大小的 NAT 表,导致连接断开或无法打开新连接。您仍然可以 ping,因为 ping 使用 ICMP,它不以这种方式使用端口 - ICMP NAT 使用查询 ID,而不是像 TCP 或 UDP 那样使用端口(另请参阅NAT 服务器如何将 ping ICMP 回显答复数据包转发给用户?)。


如今,还有一个问题:许多 ISP 都在部署 CGNAT,即多个客户共享一个公共(全球唯一)IP 地址。这会进一步减少您可以建立的 IPv4 连接数;有些设置的数量低至 500。


您可以升级或重新配置路由器以跟踪更多连接。但如果问题也存在于 ISP/CGNAT 级别,那么这没什么帮助。

相反,最好的解决方案是研究限制 p2p 软件可以建立的连接数。如果软件提供了配置选项,请使用该选项。否则,您可以研究在操作系统级别应用限制;在 Linux 中,可以使用 iptables 和 connlimit 来实现。

相关内容