Есть ли способ определить, какой именно маршрутизатор между мной и некоторым сервером блокирует соединения на определенном порту?
Я нахожусь в отеле в Таиланде, где они недавно изменили некоторые настройки в своем оборудовании, и теперь я не могу подключиться ни к одному из моих серверов в Европе и США по SSH / порту 22. Открыты более традиционные порты, такие как 80 или 21.
traceroute
команда показывает каждый конкретный маршрутизатор посередине. Но есть ли способ определить тот, который фильтрует порт 22?
Вы, вероятно, могли бы использовать tcptraceroute
чтобы увидеть, где он заблокирован:
$ sudo tcptraceroute ruminant.bitfolk.com 22
Selected device eth0, address 192.168.0.8, port 49071 for outgoing packets
Tracing the path to ruminant.bitfolk.com (85.119.82.121) on TCP port 22 (ssh), 30 hops max
1 192.168.0.7 0.978 ms 0.556 ms 0.697 ms
2 192.168.1.1 1.587 ms 1.667 ms 1.681 ms
3 no-dns-yet-62-3-84-19.zen.co.uk (62.3.84.19) 27.635 ms 26.925 ms 27.658 ms
4 ge-2-1-0-121.cr2.th-lon.zen.net.uk (62.3.84.213) 28.592 ms 27.971 ms 27.649 ms
5 linx-gw-a.jump.net.uk (195.66.224.34) 28.614 ms 29.028 ms 63.603 ms
6 president.bitfolk.com (85.119.80.16) 28.606 ms 28.039 ms 28.657 ms
7 ruminant.bitfolk.com (85.119.82.121) [open] 28.594 ms 29.030 ms 28.671 ms
Вы должны использовать lft
в linux или cygwin. lft
будет отслеживать маршрут на конкретном TCP или UDP-порту
tee@tee:~$ sudo lft -T 4.2.2.2:22
Tracing _______________________________________________
LFT can't seem to round-trip. Local packet filter in the way?
TTL LFT trace to vnsc-bak.sys.gtei.net (4.2.2.2):22/tcp
1 49.109.61.1 0.4ms
2 49.109.62.109 0.3ms
** [neglected] no reply packets received from TTL 3
4 te0-1-0-7.ccr22.dfw01.atlas.cogentco.com (154.54.0.121) 0.7ms
5 te0-0-0-0.ccr21.dfw01.atlas.cogentco.com (154.54.46.165) 0.7ms
** [neglected] no reply packets received from TTL 6
7 te-3-2.car3.Dallas1.Level3.net (4.68.110.109) 0.9ms
8 ae-41-90.car1.Dallas1.Level3.net (4.69.145.195) 1.0ms
** [22/tcp failed] Try alternate options or use -V to see packets.
LFT's trace took 6.33 seconds. Resolution required 0.05 seconds.
tee@tee:~$
Помимо существующих ответов, вы также можете использовать стандартные traceroute
команда с -P
и -p
флаги. Эта опция требует привилегий root.
Собственно, при использовании tcpdump
чтобы подтвердить это, кажется, что вам действительно нужно использовать -T
вместо того -P tcp
. Я пробовал с -P 6
также, но это не вызвало traceroute
использовать TCP. -M tcp
работает.
$ sudo traceroute -T -p 22 79.125.0.4
traceroute to 79.125.0.4 (79.125.0.4), 30 hops max, 60 byte packets
1 rbx-5-m1.fr.eu (91.121.21.253) 0.708 ms 0.690 ms 0.583 ms
2 rbx-1-6k.fr.eu (213.251.191.1) 0.951 ms * 0.765 ms
3 rbx-g1-a9.fr.eu (94.23.122.106) 1.325 ms 1.485 ms 1.047 ms
4 * * *
5 195.66.237.175 (195.66.237.175) 5.894 ms 6.812 ms 4.083 ms
6 178.236.3.57 (178.236.3.57) 16.493 ms 16.813 ms 16.393 ms
7 178.236.3.155 (178.236.3.155) 16.600 ms 16.479 ms 16.422 ms
8 178.236.0.75 (178.236.0.75) 16.337 ms 16.384 ms 16.333 ms
9 178.236.0.58 (178.236.0.58) 17.786 ms 16.171 ms 16.957 ms
10 ec2-79-125-0-4.eu-west-1.compute.amazonaws.com (79.125.0.4) 18.493 ms 18.672 ms 18.244 ms
11 * * *
12 * * *
13 * * *