faq обучение настройка
Текущее время: Чт авг 21, 2025 00:49

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: Вт янв 10, 2006 20:08 
Не в сети

Зарегистрирован: Пт дек 02, 2005 23:54
Сообщений: 651
Откуда: Форум не посещаю ввиду грубого модерирования
А слабо обнародовать ФИО того, кто написал этот кусок кода? Страна должна знать своих (и чужих) героев, даже более того - руки чешутся (далее молчу...)! Обычно такие чувства возникают, когда смотришь на что-нибудь из сломавшейся детали типа продукции АвтоВАЗа - возникают мысли, что её специально сделали так, чтобы она сломалась, так и здесь.

Итак, имеем D-Link DI-804HV, Firmware Version: V1.42, Wed, Aug 03 2005
В настройках Advanced / Filter / URL Blocking включаем Enabled и в список добавляем, например, banner. В сегменте WAN-порта установлен пакетный анализатор. Открываем www-страничку и через некоторое время приходим в ужас - web-страница закачалась тремя внешними TCP-сессиями - 43 КБ, 261 КБ и 47 КБ. При этом 2-ая и 3-я сессии были с заблокированым URL, и тем не менее по этим сессиям по WAN-у прошло Tx/Rx 4198/4190 и 764/756 пакетов. Кто угадает, что было в этих пакетах? Они туда-сюда гоняли пустые TCP-Ack!!!:
Код:
No.   Absolute Time   Source   Destination   Protocol   Size   IP Identifier   Summary
27   18:35:12.196306   xxx.xxx.xxx.73:57567   81.176.67.69:http   HTTP   66   27582   Seq=2618065351,Ack=0000000000,F=....S.,Len=   0,Win=16384
31   18:35:12.223809   81.176.67.69:http   xxx.xxx.xxx.73:57567   HTTP   66   58175   Seq=2924040246,Ack=2618065352,F=.A..S.,Len=   0,Win=65535
32   18:35:12.226416   xxx.xxx.xxx.73:57567   81.176.67.69:http   HTTP   64   27584   Seq=2618065352,Ack=2924040247,F=.A....,Len=   0,Win=17520
33   18:35:12.238149   xxx.xxx.xxx.73:57567   81.176.67.69:http   HTTP   64   27586   Seq=2618065888,Ack=2924040316,F=.A....,Len=   0,Win=17452
34   18:35:12.238359   xxx.xxx.xxx.73:57567   81.176.67.69:http   HTTP   64   27589   Seq=2618065888,Ack=2924040316,F=.A...F,Len=   0,Win=17452
39   18:35:12.266940   81.176.67.69:http   xxx.xxx.xxx.73:57567   HTTP   64   58308   Seq=2924040247,Ack=2618065352,F=.A....,Len=   0,Win=65535
40   18:35:12.269020   81.176.67.69:http   xxx.xxx.xxx.73:57567   HTTP   64   58312   Seq=2924040247,Ack=2618065352,F=.A....,Len=   0,Win=65535
41   18:35:12.269631   xxx.xxx.xxx.73:57567   81.176.67.69:http   HTTP   64   27608   Seq=2618065889,Ack=2924040316,F=.A....,Len=   0,Win=17452
42   18:35:12.271608   xxx.xxx.xxx.73:57567   81.176.67.69:http   HTTP   64   27609   Seq=2618065889,Ack=2924040316,F=.A....,Len=   0,Win=17452

После этого следуют в общей сумме ещё 8380 пакетов такого же вида, как и последние из примера выше, а именно:
Код:
10853   18:37:25.590841   xxx.xxx.xxx.73:57567   81.176.67.69:http   HTTP   64   32768   Seq=2618065889,Ack=2924040316,F=.A....,Len=   0,Win=17452
10854   18:37:25.619305   81.176.67.69:http   xxx.xxx.xxx.73:57567   HTTP   64   51624   Seq=2924040247,Ack=2618065352,F=.A....,Len=   0,Win=65535


Ну и кто это придумал?
Всё становится чудесатее и чудесатее :x

Сначала думал ещё и внутренний интерфейс отсниферить на эту же тему, но передумал - время жалко. Там и так понятно - при "попадании" запрещённого URL-a DI-804 перехватывает пакет и "от имени целевого сервера" с флагами Fin+Ack возвращает HTTP/1.0 301 Moved..Location: http://192.168.14.254:88/block.htm, но с "поддельным" Ack Number, в результате чего нарушается TCP-сессия между хостом и www-сервером, в результате чего хост безрезультатно пытается завершить TCP сессию с одним Ack Number (который был "подделан" DI-804-ым), а www-сервер безрезультатно пытается продолжить TCP сессию с оригинальным Ack Number...

Складывается впечатление, что эти устройства ВООБЩЕ тестирование не проходят.

[Offtopic] А ещё я по ходу дела сильно обрадовался устройству Вашего форума - страничка http://www.d-link.ru/phorum/viewforum.php?f=3 "весит" всего 144 КБ. Не перебор? :( [/b]


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт янв 13, 2006 10:45 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт апр 22, 2004 09:33
Сообщений: 2037
Откуда: D-Link Moscow
Извините, ничего не понял. Не могли бы вы выслать мне файлик с пакетам на почту? Заодно и настройки самого устройства.
А по форуму... Отключите картинки. Сильно легче станет. Я так делаю когда работаю через сотовый модем.

_________________
С уважением -- Александр Шебаронин.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб янв 14, 2006 00:17 
Не в сети

Зарегистрирован: Пт дек 02, 2005 23:54
Сообщений: 651
Откуда: Форум не посещаю ввиду грубого модерирования
Ну насчёт "ничего не понял", я надеюсь, Вы преувеличили. Я не сохранял файлы т.к. было времени не шибко много.

Сейчас не могу, но попробую.
Хотя я думал, Вам самому будет интересно рассмотреть этот случай...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 17, 2006 00:06 
Не в сети

Зарегистрирован: Пт дек 02, 2005 23:54
Сообщений: 651
Откуда: Форум не посещаю ввиду грубого модерирования
1. Включаем роутер DI-804, прошивка 1.40 (просто сейчас под рукой именно этот, решил проверить, был ли этот глюк на старой прошивке?), сбасываем его Reset-ом 15 секунд. Назначаем WAN Static IP 192.168.14.140, отключаем UPnP.

2. Хост в сети LAN получил адрес по DHCP - 192.168.0.104

3. Включаем его в сеть, замкнув WAN и LAN на хаб, чтобы одним снифером сразу сниферить трафик в обеих сетях (для простоты и удобства, кроме того так чётко видна последовательность пакетов на разных интерфейсах роутера)

4. На хосте 192.168.0.104 набираем http://www.ru - результат снифа обоих интерфейсов см. в файле Packet0.csv

5. В запрошенных URL находим counter.rambler.ru, заносим его URL Blocking.

6. Повторяем, на хосте 192.168.0.104 набираем http://www.ru - результат снифа обоих интерфейсов см. в файле Packet1.csv
Покажу собственно суть:

Смотрим соединение от хоста на запрос URL-a http://counter.rambler.ru/top100.cnt?117, вот его TCP-stream:
Endpoint 1: IP address = 192.168.0.104, TCP port = 3039
Endpoint 2: IP address = 81.19.66.19, TCP port = 80

GET /top100.cnt?117 HTTP/1.1
Host: counter.rambler.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
Accept: image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.ru/eng/index.html
Cookie: ruid=JDz2BQGxrUKUAAAAAdgG21B=

HTTP/1.0 301 Moved
Location: http://192.168.0.1:80/block.htm

Как видим, DI-804 ответил вместо "сервера" - HTTP/1.0 301 Moved, Location: http://192.168.0.1:80/block.htm

Теперь смотрим то же самое в пакетном виде:
Это tcp-соединение от хоста до веб-сервера перед роутером, то есть в сегменте LAN:
No. Source Destination Summary
40 192.168.0.104:3039 81.19.66.19:http Seq=0785117764,Ack=0000000000,F=....S.
52 81.19.66.19:http 192.168.0.104:3039 Seq=3352889874,Ack=0785117765,F=.A..S.
53 192.168.0.104:3039 81.19.66.19:http Seq=0785117765,Ack=3352889875,F=.A....
55 192.168.0.104:3039 81.19.66.19:http Seq=0785117765,Ack=3352889875,F=.A....,GET /top100.cnt?117 HTTP/1.1 (здесь в сохранённых файлах не уазаны SEQ/ACK, вручную скопировал из снифера)
56 81.19.66.19:http 192.168.0.104:3039 Seq=3352889875,Ack=0785118185,F=.A...F,HTTP/1.0 301 Moved (здесь в сохранённых файлах не уазаны SEQ/ACK, вручную скопировал из снифера)
57 192.168.0.104:3039 81.19.66.19:http Seq=0785118185,Ack=3352889941,F=.A....
58 192.168.0.104:3039 81.19.66.19:http Seq=0785118185,Ack=3352889941,F=.A...F
85 81.19.66.19:http 192.168.0.104:3039 Seq=3352889875,Ack=0785117765,F=.A....
86 192.168.0.104:3039 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
87 81.19.66.19:http 192.168.0.104:3039 Seq=3352889875,Ack=0785117765,F=.A....
88 192.168.0.104:3039 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
101 81.19.66.19:http 192.168.0.104:3039 Seq=3352889875,Ack=0785117765,F=.A....
102 192.168.0.104:3039 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
104 81.19.66.19:http 192.168.0.104:3039 Seq=3352889875,Ack=0785117765,F=.A....
105 192.168.0.104:3039 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
114 81.19.66.19:http 192.168.0.104:3039 Seq=3352889875,Ack=0785117765,F=.A....
......
2012 ......


Это транслированное tcp-соединение от хоста до веб-сервера после роутера, то есть в сегменте WAN (нумерация пакетов абсолютная):
No. Source Destination Summary
42 192.168.14.140:57287 81.19.66.19:http Seq=0785117764,Ack=0000000000,F=....S.
51 81.19.66.19:http 192.168.14.140:57287 Seq=3352889874,Ack=0785117765,F=.A..S.
54 192.168.14.140:57287 81.19.66.19:http Seq=0785117765,Ack=3352889875,F=.A....
59 192.168.14.140:57287 81.19.66.19:http Seq=0785118185,Ack=3352889941,F=.A....
60 192.168.14.140:57287 81.19.66.19:http Seq=0785118185,Ack=3352889941,F=.A...F
79 81.19.66.19:http 192.168.14.140:57287 Seq=3352889875,Ack=0785117765,F=.A....
80 81.19.66.19:http 192.168.14.140:57287 Seq=3352889875,Ack=0785117765,F=.A....
91 192.168.14.140:57287 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
92 192.168.14.140:57287 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
98 81.19.66.19:http 192.168.14.140:57287 Seq=3352889875,Ack=0785117765,F=.A....
99 81.19.66.19:http 192.168.14.140:57287 Seq=3352889875,Ack=0785117765,F=.A....
108 192.168.14.140:57287 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
109 192.168.14.140:57287 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
113 81.19.66.19:http 192.168.14.140:57287 Seq=3352889875,Ack=0785117765,F=.A....
116 192.168.14.140:57287 81.19.66.19:http Seq=0785118186,Ack=3352889941,F=.A....
117 81.19.66.19:http 192.168.14.140:57287 Seq=3352889875,Ack=0785117765,F=.A....
......
2013 ......

Смотрим строку 56 - это ответ DI-804 как реакция на заблокированный URL - он "от своего имени" вернул ответ HTTP/1.0 301 Moved, но при этом указал Ack=0785118185, то есть подтверждение приёма 420 байт, также он установил признак Fin. Но в данный момент времени веб-сервер не получил от клиента ни одного байта и его SN (seq number) находится в состоянии 0785117765.

После этого, в строке 57 хост квитирует приём, указывая пакет и подтвержает закрытие соедиения (строка 58).

Однако DI-804 теперь уже не вмешивается в сессию и транслирует эти 2 пакета (в которых уже используются новые значения SN) дальше в сторону веб-сервера - строки 59 и 60.

Однако, "обиженный" веб-сервер, неполучивший порцию данных отвечает ему квитанцией только на Ack=0785117765.

А клиент продолжает попытки завершить соединение с Seq=0785118186. В это время на клиенте TCP-соединение находится в состоянии LAST_ACK.

И так примерно 450 пакетов туда + 450 обратно, 64(Eth)-14=50(IP) байт каждый. Итого, примерно, 22.5 КБ IP-данных. И это далеко не самый длинный хвост - иногда кол-во этих "хвостовых" пакетов достигает тысяч...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 17, 2006 00:13 
Не в сети

Зарегистрирован: Пт дек 02, 2005 23:54
Сообщений: 651
Откуда: Форум не посещаю ввиду грубого модерирования
Дополнение:
Изначально проблема выявлена на прошивке 1.42 и её поведение было аналогично.

Метод, указанный в "3. Включаем его в сеть, замкнув WAN и LAN на хаб" никакого принципиального влияния на проблему не вносит - это лишь тестовое удобство.

Файлы могу выслать (но это только список заголовков), хотя, кмк, Вам всё равно ставить эксперимент, и как я понимаю, Вы это тоже обнаружите без труда.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 17, 2006 18:35 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт апр 22, 2004 09:33
Сообщений: 2037
Откуда: D-Link Moscow
Ок, протестирую в ближайшем будущем, при оказии...

_________________
С уважением -- Александр Шебаронин.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 306


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB