Сегодня все
блоги шумят на предмет того, что Yota заблокировала доступ к целому набору сайтов оппозиции: http://www.kasparov.ru, http://www.nazbol.ru, http://www.rusolidarnost.ru, http://www.rufront.ru, http://www.newtimes.ru, http://www.kavkazcenter.com.
Где-то я это уже
слышал :)
Ну естественно, я не мог пройти мимо. Я побежал в ближайшую точку продаж и купил модем. Благо, Yota проводит акцию
try and buy. Так что у меня есть целая неделя, чтобы покопаться.
Итак, втыкаем модем, проделываем все положенные прыжки и ужимки на предмет регистрации, и идем на http://www.kasparov.ru и видим: "Firefox не может установить соединение с сервером www.kasparov.ru.".
Круто! Проблема действительно воспроизводится, а значит ее можно исследовать. Проверяем выборочно сайты из списка, и таки да.
Первым делом - проверяем, туда ли мы идем, и не пытаются ли нас обмануть на этапе DNS. Сразу замечаем, что kavkazcenter.com резолвится в 127.0.0.1. С этим сайтом все понятно - он в
цензурном списке, и Yota его блокирует без всякого стеснения. Это нормально. "Нормально" не в том, смысле, что я это одобряю - нет, я категорически этого не одобряю и желаю всяческих несчастий всем любителям запретить книжку, газетку или сайтик, какая бы "дрянь" ни была в них написана. Но Йоту можно понять: суд постановил - будь добр выполнять. Увы :(
Остальные же резолвятся совершенно нормально, т.е. в те адреса, в которые должны. В чем же тогда дело?
Берем
инструмент и начинаем внимательно разглядывать, что же происходит на самом деле.
03:08:27.979656 IP (tos 0x0, ttl 128, id 42765, offset 0, flags [DF], proto TCP (6), length 48) 10.128.254.2.3055 > 67.218.116.57.80: S, cksum 0x34cb (correct), 3633491279:3633491279(0) win 64512 <mss 1360,nop,nop,sackOK>
03:08:30.954162 IP (tos 0x0, ttl 128, id 42768, offset 0, flags [DF], proto TCP (6), length 48) 10.128.254.2.3055 > 67.218.116.57.80: S, cksum 0x34cb (correct), 3633491279:3633491279(0) win 64512 <mss 1360,nop,nop,sackOK>
03:08:33.920210 IP (tos 0x0, ttl 253, id 14323, offset 0, flags [none], proto TCP (6), length 40) 67.218.116.57.80 > 10.128.254.2.3055: R, cksum 0x6117 (correct), 0:0(0) ack 3633491280 win 6451203:08:34.371135 IP (tos 0x0, ttl 128, id 42769, offset 0, flags [DF], proto TCP (6), length 48) 10.128.254.2.3055 > 67.218.116.57.80: S, cksum 0x34cb (correct), 3633491279:3633491279(0) win 64512 <mss 1360,nop,nop,sackOK>
03:08:41.140576 IP (tos 0x0, ttl 253, id 13272, offset 0, flags [none], proto TCP (6), length 40) 67.218.116.57.80 > 10.128.254.2.3055: R, cksum 0x9b8c (correct), 2287877420:2287877420(0) ack 1 win 64512Так. К нам прилетает RST от сайта. Это, в принципе возможно, но поглядим на TTL: он равен 253. Т.е. тот, кто сгенерировал этот пакет, находится от нас не далее, чем в двух хопах - в сети Йоты! Кто-то в промежутке активно вмешивается в нашу TCP-сессию. Пора подозревать неладное.
Когда есть подозрение на странное поведение промежуточного хопа, то лучше всего исследовать такие случаи путем одновременной записи пакетов с обеих сторон. Так и поступим: у меня есть домашняя машинка, подключенная к Акадо.
Со стороны ноутбука на Yota:
03:52:48.544886 IP (tos 0x0, ttl 128, id 45230, offset 0, flags [DF], proto TCP (6), length 48) 10.128.254.2.3138 > 83.167.114.17.80: S, cksum 0xa2c8 (correct), 2900385036:2900385036(0) win 64512 <mss 1360,nop,nop,sackOK>
03:52:51.555732 IP (tos 0x0, ttl 128, id 45234, offset 0, flags [DF], proto TCP (6), length 48) 10.128.254.2.3138 > 83.167.114.17.80: S, cksum 0xa2c8 (correct), 2900385036:2900385036(0) win 64512 <mss 1360,nop,nop,sackOK>
03:52:55.595682 IP (tos 0x0, ttl 253, id 24737, offset 0, flags [none], proto TCP (6), length 40) 83.167.114.17.80 > 10.128.254.2.3138: R, cksum 0xcf14 (correct), 0:0(0) ack 2900385037 win 6451203:52:56.082060 IP (tos 0x0, ttl 128, id 45235, offset 0, flags [DF], proto TCP (6), length 48) 10.128.254.2.3138 > 83.167.114.17.80: S, cksum 0xa2c8 (correct), 2900385036:2900385036(0) win 64512 <mss 1360,nop,nop,sackOK>
03:53:03.016041 IP (tos 0x0, ttl 253, id 19571, offset 0, flags [none], proto TCP (6), length 40) 83.167.114.17.80 > 10.128.254.2.3138: R, cksum 0x1ede (correct), 509841875:509841875(0) ack 1 win 64512Со стороны домашнего компа на Акадо:
03:52:49.348749 IP (tos 0x0, ttl 116, id 45230, offset 0, flags [DF], proto TCP (6), length 48) 109.188.11.104.3138 > 192.168.1.254.80: S, cksum 0xe72c (correct), 2068504495:2068504495(0) win 64512 <mss 1360,nop,nop,nop,nop>
03:52:52.323674 IP (tos 0x0, ttl 116, id 45234, offset 0, flags [DF], proto TCP (6), length 48) 109.188.11.104.3138 > 192.168.1.254.80: S, cksum 0xe72c (correct), 2068504495:2068504495(0) win 64512 <mss 1360,nop,nop,nop,nop>
03:52:56.271631 IP (tos 0x0, ttl 245, id 24736, offset 0, flags [none], proto TCP (6), length 40) 109.188.11.104.3138 > 192.168.1.254.80: R, cksum 0x0c89 (correct), 2068504496:2068504496(0) win 003:52:57.018421 IP (tos 0x0, ttl 116, id 45235, offset 0, flags [DF], proto TCP (6), length 48) 109.188.11.104.3138 > 192.168.1.254.80: S, cksum 0xe870 (correct), 2390543161:2390543161(0) win 64512 <mss 1360,nop,nop,nop,nop>
03:53:03.689851 IP (tos 0x0, ttl 245, id 19570, offset 0, flags [none], proto TCP (6), length 40) 109.188.11.104.3138 > 192.168.1.254.80: R, cksum 0x0dcd (correct), 2390543162:2390543162(0) win 0Первое, что бросается в глаза, - мы получили в точности ту же картику, что и с kasparov.ru, если глядеть со стороны Йоты! Т.е. злые цензоры заблокировали и мою домашнюю машину, чтобы она не нарушала гармонию неуместной надписью "It works!" большими черными буквами на белом фоне.
Второе, и на сервер приходят RST якобы от моего ноутбука: SYN, а следом за ним RST от того же хоста, с тех же портов. Хотя со стороны ноутбука видно, что он получает RST, а никак не посылает. Поэтому приходится заключить, что RST возникают в сети Йоты самостоятельно и непрошенно.
Честное слово, оппозиционер из меня хреновый. Ну, разве что кухонный - так, побухтеть. И на машинке той ничего не живет - апач на ней только для всяких экспериментов, которые боязно проводить там, где этот блог находится. Поэтому мысль о том, что Йота каким-то специальным образом меня ненавидит, придется отмести, как неорганизованную :)
В чем же дело? А вот в чем. Мой домашний апач существует, как я уже сказал, только для экспериментов, и отвечает только весьма небольшому количеству внешних хостов. Убираем файрвольное правило, и, вуаля, все работает замечательно - никаких лишних RST. Нормальную сессию я выкладывать не буду - она скучная, поскольку нормальная.
Вот как интересно получается. Если моя машина работает нормально, то Йота в сессию не вмешивается. А ежели сервер на запросы молчит, то через 6-7 секунда Йота сессию обресечивает. Выходит, левые RST возникают, если на дальнем конце что-то не так.
Зачем Йота может это делать? Я подозреваю, что это попытка освобождать память на ихнем NAT'е побыстрее.
Где же тогда проблема? Берем tcptraceroute (вернее, его аналог по винду) и смотрим:
C:\Documents and Settings\dginsburg\My Documents\tmp\tcpt>tracetcp.exe www.kasparov.ru:80 -t 500
Tracing route to 67.218.116.57 on port 80
Over a maximum of 30 hops.
1 * * * Request timed out.
2 * * * Request timed out.
3 * * * Request timed out.
4 * * * Request timed out.
5 * * * Request timed out.
6 199 ms 127 ms 102 ms 213.248.103.177 [mow-m9-i2-link.telia.net]7 125 ms 125 ms 261 ms 80.91.253.230 [mow-b2-link.telia.net]
8 291 ms 115 ms 113 ms 80.91.249.210 [s-bb1-link.telia.net]
9 268 ms 217 ms 268 ms 213.248.65.25 [kbn-bb1-pos0-0-0.telia.net]
10 289 ms 215 ms 238 ms 80.91.249.21 [nyk-bb1-link.telia.net]
11 338 ms 312 ms 297 ms 80.91.252.153 [sjo-bb1-link.telia.net]
12 350 ms 305 ms 360 ms 80.239.193.126 [layer42-ic-120233-sjo-bb1.c.telia.net]
13 343 ms 476 ms 330 ms 69.36.225.135 [vl2.sw2.scl.layer42.net]
14 307 ms 420 ms 295 ms 67.218.116.5715 * * * Request timed out.
16 * * * Request timed out.
17 * * * Request timed out.
18 *
Terminate Event Occurred.
Во-первых, наши пакетики покидают сеть Йоты. Во-вторых, доходят до цели, но там куда-то деваются. В точности так же, как было в эксперименте с моей домашней машиной до убирания файрвольного правила.
Подобьем бабки:
1) kavkazcenter.com действительно заблокирован, и заблокирован явно
2) пакеты в сторону kasparov.ru идут и покидают Йоту совершенно успешно
3) очень похоже, что kasparov.ru не отвечает в сторону Йоты.
Если внимательно
погуглить, то можно найти, что проблемы возникают только если йотиному юзеру не повезло, и он натится в сеть 109.188.0.0/18. Что может быть причиной?
Мое предположение состоит вот в чем: блок адресов 109/8 был отдан RIPE для раздачи только в начале этого года. До этого он лежал про запас, а следовательно, фигурировал в списках bogons. Некоторые излишне озабоченные безопасностью люди фильтруют маршруты, пакеты или и то, и то, по этим самым bogon lists, но всегда забывают их обновить. Пруфлинк:
http://mailman.nanog.org/pipermail/nanog/2009-October/013941.html (обратите внимание на дату).
(Тяжело вздыхая) Что я могу сказать по всему этому поводу? Много чего. Преимущественно нецензурного.
Update: вот, собственно, и yota отписалась -
http://community.livejournal.com/yota_ru/660659.html. Я оказался прав.