调试端口 21 上的连接拒绝响应

调试端口 21 上的连接拒绝响应

我和我的同事在访问 Heart Internet 的 FTP 服务器时遇到了问题。

我们办公室里有 Mac 和 PC,还有 Linux。我们的机器都无法连接。

从我的 IP 地址运行 nmap 时,端口 21 没有出现。

使用 FileZilla 之类的软件只会返回“连接超时”,就像ftp在 Linux 机器上一样。

使用 Wireshark 我可以看到对 TCP SYN 数据包的“ICMP 目标不可达(端口不可达)”响应。

我可以通过其他端口访问相同的服务器,可以 ping 服务器,也可以跟踪到服务器的路由。

从我的 IP 来看:

$ telnet ftp20.extendcp.co.uk 21
Trying 79.170.44.20...
telnet: Unable to connect to remote host: Connection refused

从远程服务器:

$ telnet ftp20.extendcp.co.uk 21
Trying 79.170.44.20...
Connected to ftp20.extendcp.co.uk.
Escape character is '^]'.
220 FTP server ready

远程登录到不同的服务器可以正常工作:

$ telnet ftp.mirrorservice.org 21
Trying 212.219.56.184...
Connected to ftp.mirrorservice.org.
Escape character is '^]'.
220-----------------------------------------------------------------------------
220-Welcome to the University of Kent's UK Mirror Service.
220-
220-More information can be found at our web site: http://www.mirrorservice.org/
220-Please send comments or questions to [email protected].
220-----------------------------------------------------------------------------
220

跟踪路由:

$ traceroute ftp20.extendcp.co.uk
traceroute to ftp20.extendcp.co.uk (79.170.44.20), 30 hops max, 60 byte packets
 1  home.gateway.home.gateway (192.168.2.254)  0.608 ms  0.904 ms  2.152 ms
 2  88.215.57.252 (88.215.57.252)  20.283 ms  21.010 ms  21.254 ms
 3  88.215.62.78 (88.215.62.78)  20.983 ms  20.973 ms  21.014 ms
 4  88.215.62.230 (88.215.62.230)  27.175 ms  27.348 ms  27.509 ms
 5  88.215.62.218 (88.215.62.218)  50.552 ms  49.958 ms  50.975 ms
 6  * * *
 7  mx02-xe0.0.1-lon.gs.nodefour.net (83.166.164.85)  24.098 ms  26.726 ms  22.204 ms
 8  mx01-xe2.0.0-lon.gs.nodefour.net (83.166.164.34)  22.147 ms  22.165 ms  24.208 ms
 9  mx02-xe1.2.0-dry.dc2.nodefour.net (83.166.164.38)  35.475 ms  35.532 ms  35.879 ms
10  83.166.164.54 (83.166.164.54)  25.316 ms  34.015 ms  34.401 ms
11  ftp20.extendcp.co.uk (79.170.44.20)  25.529 ms  28.205 ms  26.298 ms

平安:

$ ping ftp20.extendcp.co.uk
PING ftp20.extendcp.co.uk (79.170.44.20) 56(84) bytes of data.
64 bytes from ftp20.extendcp.co.uk (79.170.44.20): icmp_req=1 ttl=53 time=24.3 ms
64 bytes from ftp20.extendcp.co.uk (79.170.44.20): icmp_req=2 ttl=53 time=21.3 ms
64 bytes from ftp20.extendcp.co.uk (79.170.44.20): icmp_req=3 ttl=53 time=24.7 ms
64 bytes from ftp20.extendcp.co.uk (79.170.44.20): icmp_req=4 ttl=53 time=21.5 ms
64 bytes from ftp20.extendcp.co.uk (79.170.44.20): icmp_req=5 ttl=53 time=25.1 ms

Telnet 到不同的端口:

$ telnet ftp20.extendcp.co.uk 22
Trying 79.170.44.20...
Connected to ftp20.extendcp.co.uk.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3

TCPdump 的telnet 79.170.44.20 21

$ sudo tcpdump -n -n -v -i eth0 host 79.170.44.20
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:30:27.194966 IP (tos 0x10, ttl 64, id 1237, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.2.10.58366 > 79.170.44.20.21: Flags [S], cksum 0x3e9f (incorrect -> 0x00e5), seq 530375445, win 14600, options [mss 1460,sackOK,TS val 18737088 ecr 0,nop,wscale 6], length 0
14:30:27.216103 IP (tos 0xc0, ttl 53, id 12906, offset 0, flags [none], proto ICMP (1), length 88)
    79.170.44.20 > 192.168.2.10: ICMP 79.170.44.20 tcp port 21 unreachable, length 68
        IP (tos 0x0, ttl 54, id 1237, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.2.10.58366 > 79.170.44.20.21: Flags [S], cksum 0x0e94 (incorrect -> 0x00ed), seq 530375445, win 14600, options [mss 1452,sackOK,TS val 18737088 ecr 0,nop,wscale 6], length 0

TCPdumptelnet 79.170.44.20 23续上文

14:31:23.250970 IP (tos 0x10, ttl 64, id 15043, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.2.10.58533 > 79.170.44.20.23: Flags [S], cksum 0x3e9f (incorrect -> 0x4da7), seq 1506485437, win 14600, options [mss 1460,sackOK,TS val 18751102 ecr 0,nop,wscale 6], length 0
14:31:23.273111 IP (tos 0x0, ttl 53, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    79.170.44.20.23 > 192.168.2.10.58533: Flags [R.], cksum 0x0e1a (correct), seq 0, ack 1506485438, win 0, length 0

我的 ISP 和 Heart Internet 未报告任何明显问题。


我可以使用哪些工具来确定问题出在哪里?

是否有可能发现在通往服务器的网络路由中连接被拒绝的位置?(例如,如果是我的路由器或他们的防火墙,是否有可能发现是什么拒绝了连接?)

答案1

我们已经排除了从您的网络到 ftp 服务器的传出连接的一般阻止,这很好。下一步可能是跟踪路由;您的网络可能无法访问目标服务器所在的网络块。幸运的是,他们允许traceroute,因此您的下一步可能是跟踪路由到目的地,看看哪里出了问题。我已粘贴了我的跟踪路由输出以供比较。

[me@risby]$ traceroute ftp20.extendcp.co.uk 
traceroute to ftp20.extendcp.co.uk (79.170.44.20), 30 hops max, 60 byte packets
 1  192.168.3.1 (192.168.3.1)  0.200 ms  0.113 ms  0.102 ms
 2  lns18.inx.dsl.enta.net (188.39.1.30)  23.466 ms  23.318 ms  24.988 ms
 3  gi1-8.inx.dist.dsl.enta.net (188.39.1.29)  23.782 ms  24.622 ms  25.546 ms
 4  te2-2.interxion.dsl.enta.net (78.33.141.89)  26.186 ms  26.963 ms  26.802 ms
 5  te2-3.interxion.core.enta.net (87.127.236.209)  27.554 ms  28.360 ms  29.085 ms
 6  te4-2.telehouse-east.core.enta.net (87.127.236.137)  28.818 ms  28.512 ms  28.349 ms
 7  * * *
 8  mx01-xe2.3.0-lon.gs.nodefour.net (83.166.164.85)  28.397 ms  29.967 ms  30.681 ms
 9  mx01-xe2.2.0-lon.gs.nodefour.net (83.166.164.34)  31.404 ms  31.112 ms  32.733 ms
10  mx02-xe1.2.0-dry.dc2.nodefour.net (83.166.164.38)  32.465 ms  33.060 ms  33.776 ms
11  83.166.164.54 (83.166.164.54)  33.529 ms  34.628 ms  34.356 ms
12  ftp20.extendcp.co.uk (79.170.44.20)  34.043 ms  30.541 ms  30.543 ms

查看您是否可以访问目的地上的任何其他内容也很有用;您能粘贴输出吗ping ftp20.extendcp.co.uk

编辑:现在我们已经确定您在桌面上使用 Linux,您可以有效地使用它tcpdump来查看拒绝来自多远。这是tcpdump -n -n -v -i p1p1 host 79.170.44.20我在执行 a telnet ftp20.extendcp.co.uk 22(连接)然后执行 a telnet ftp20.extendcp.co.uk 23(获得 a Connection refused,应该如此)时的输出:

14:20:40.047720 IP (tos 0x10, ttl 64, id 57773, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.3.11.57105 > 79.170.44.20.22: Flags [S], cksum 0x5a67 (correct), seq 2606771394, win 14600, options [mss 1460,sackOK,TS val 6671727 ecr 0,nop,wscale 7], length 0
14:20:40.078615 IP (tos 0x0, ttl 47, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    79.170.44.20.22 > 192.168.3.11.57105: Flags [S.], cksum 0xc8ec (correct), seq 28398605, ack 2606771395, win 14480, options [mss 1412,sackOK,TS val 609884153 ecr 6671727,nop,wscale 7], length 0
[packets deleted]

14:20:48.193195 IP (tos 0x10, ttl 64, id 34283, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.3.11.57462 > 79.170.44.20.23: Flags [S], cksum 0x1fa0 (correct), seq 2030528683, win 14600, options [mss 1460,sackOK,TS val 6679872 ecr 0,nop,wscale 7], length 0
14:20:48.222609 IP (tos 0x0, ttl 47, id 0, offset 0, flags [DF], proto TCP (6), length 40)
    79.170.44.20.23 > 192.168.3.11.57462: Flags [R.], cksum 0xae1d (correct), seq 0, ack 2030528684, win 0, length 0

注意ttl第一种情况下服务器返回的第一个数据包中的字段是47。注意第二种情况下ttl重置数据包 ( ) 中的字段是flags [R.]47,这对于来自目标服务器的重置来说是正确且合适的。如果您看到更高的 TTL,则强烈暗示拒绝来自更近的地方。

编辑2:根据你所说的 TTL,看起来该服务器确实决定不接受你的连接。有可能是途中是伪造 TCP 端口不可达,但要做到这一点很困难,而且大多数防火墙工具都不关心(如果我没记错的话,即使是中国的防火墙也未能正确设置拒绝的 TTL)。

至于为什么远程服务器已决定这样做(自动,可能通过 fail2ban?手动,因为下载过多?),谁知道呢?除非你能联系服务器管理员,否则你可能不知道原因。如果你与 ftp20.extendcp.co.uk 有业务关系,请通过这些途径升级。否则,我会耸耸肩,如果有几个文件我迫切需要从该服务器获取或获取,我会使用代理。

答案2

“ICMP 目标无法访问(端口无法访问)”回复的源 IP 是什么?如果它是 ftp 服务器的 IP,则强烈建议(虽然很奇怪)目标服务器确实拒绝您连接到端口 21。因为 99.9% 的防火墙只是丢弃被阻止的数据包,而从不费心返回任何回复。此类 ICMP 错误通常意味着您已成功到达 ftp 服务器,但此端口上没有侦听套接字。鉴于 ftp 服务器已启动,仍然认为他们的 FTP 服务器软件拒绝接受来自您的 IP 的连接是出于某种奇怪的原因。此外,您是否有更改 IP 的选项(仅用于测试)?

相关内容