LINUX.ORG.RU
решено ФорумAdmin

Потеря пакетов и другие глюки сети.


0

1

Всем привет! В чём состоит вопрос: Есть роутер ASUS RT-G32, раздающий вайфай на 8 компов, местный провайдер Коминтерн, дающий инет всей общаге ФДС МГУ и, собственно, сами 8 ноутов с разными установленными осями (на трёх линукс, на остальных винда). Имеется следующая проблема: с линуксовых компов почему-то не заходит на некоторые сайты, если на них уже кто-то сидит. С винды всё работает отлично, как ни странно... Собственно сами сайты - это vkontakte.ru, codeforces.ru (там частично, не работает часть сайта static.codeforces.ru, расположенная на совсем постороннем серваке, отличном от самого codeforces и опять же картинки с контакта (логотипы всякие и т.д.)). Не работает не только браузер (пытался заходить с хромиума и фаерфокса), но и другие приложения (например, topcoder arena, обращается к сайту topcoder.com). Сами сайты тупо пингом относительно нормально пингуются, правда с потерей пакетов около 5-15%, когда как. Вот некоторые логи:

Статистика пинга

--- vk.com ping statistics ---
21477 packets transmitted, 20312 received, +1 errors, 5% packet loss, time 69211647ms
rtt min/avg/max/mdev = 53.235/66.935/999.998/33.962 ms

Основной лог роутера

Nov  5 16:20:52 (none) cron.err crond[170]: time disparity of 5704640 minutes detected
Nov  5 16:21:08 (none) user.warn kernel: AP SETKEYS DONE - WPA2, AuthMode(7)=WPA2PSK, WepStatus(6)=AES, GroupWepStatus(6)=AES
Nov  5 16:21:08 (none) user.warn kernel: 
Nov  5 16:21:09 (none) user.warn kernel: MulticastFilterTableDeleteEntry: the Group doesn't exist.
Nov  5 16:21:09 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:21:14 (none) user.warn kernel: DeleteIgmpMember: membert list doesn't exist.
Nov  5 16:21:14 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:21:18 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:21:18 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:21:19 (none) user.warn kernel: AP SETKEYS DONE - WPA2, AuthMode(7)=WPA2PSK, WepStatus(6)=AES, GroupWepStatus(6)=AES
Nov  5 16:21:19 (none) user.warn kernel: 
Nov  5 16:21:19 (none) local0.info udhcpd[1112]: Sending ACK to 192.168.1.2
Nov  5 16:21:20 (none) user.warn kernel: MulticastFilterTableDeleteEntry: the Group doesn't exist.
Nov  5 16:21:25 (none) user.warn kernel: MulticastFilterTableDeleteEntry: the Group doesn't exist.
Nov  5 16:21:49 (none) user.warn kernel: AP SETKEYS DONE - WPA2, AuthMode(7)=WPA2PSK, WepStatus(6)=AES, GroupWepStatus(6)=AES
Nov  5 16:21:49 (none) user.warn kernel: 
Nov  5 16:21:50 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:21:51 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:21:52 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:21:53 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:22:19 (none) user.warn kernel: AP SETKEYS DONE - WPA2, AuthMode(7)=WPA2PSK, WepStatus(6)=AES, GroupWepStatus(6)=AES
Nov  5 16:22:19 (none) user.warn kernel: 
Nov  5 16:22:19 (none) local0.info udhcpd[1112]: Sending ACK to 192.168.1.2
Nov  5 16:22:48 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:22:48 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:22:48 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:22:52 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:22:52 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:23:01 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:23:01 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:23:04 (none) local0.info udhcpd[1112]: Sending OFFER of 192.168.1.5
Nov  5 16:23:04 (none) local0.info udhcpd[1112]: Sending ACK to 192.168.1.5
Nov  5 16:23:04 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:23:04 (none) user.warn kernel: MulticastFilterTableDeleteEntry: the Group doesn't exist.
Nov  5 16:23:04 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:23:04 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:23:07 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:23:07 (none) user.warn kernel: MulticastFilterTableInsertEntry: already in Members list.
Nov  5 16:23:28 (none) local0.info udhcpd[1112]: Received a SIGUSR1
Nov  5 16:25:22 (none) user.warn kernel: clean nat conn: clean all of the connection track
Nov  5 16:31:20 (none) user.warn kernel: clean nat conn: clean all of the connection track
Nov  5 16:32:37 (none) user.warn kernel: clean nat conn: clean all of the connection track
Nov  5 16:34:18 (none) user.warn kernel: clean nat conn: clean all of the connection track
Nov  5 16:34:57 (none) user.warn kernel: clean nat conn: clean all of the connection track
Nov  5 16:36:02 (none) user.warn kernel: clean nat conn: clean all of the connection track
Nov  5 16:40:57 (none) local0.info udhcpd[1112]: Received a SIGUSR1
Nov  5 16:41:20 (none) local0.info udhcpd[1112]: Received a SIGUSR1
Nov  5 16:42:06 (none) user.warn kernel: DeleteIgmpMember: membert list doesn't exist.
Nov  5 16:42:06 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:42:17 (none) user.warn kernel: AP SETKEYS DONE - WPA2, AuthMode(7)=WPA2PSK, WepStatus(6)=AES, GroupWepStatus(6)=AES
Nov  5 16:42:17 (none) user.warn kernel: 
Nov  5 16:42:33 (none) local0.info udhcpd[1112]: Sending OFFER of 192.168.1.3
Nov  5 16:42:33 (none) local0.info udhcpd[1112]: Sending ACK to 192.168.1.3
Nov  5 16:42:34 (none) user.warn kernel: DeleteIgmpMemberList: membert list doesn't exist.
Nov  5 16:42:39 (none) user.warn kernel: MulticastFilterTableDeleteEntry: the Group doesn't exist.
Nov  5 16:43:05 (none) local0.info udhcpd[1112]: Received a SIGUSR1
Nov  5 16:52:23 (none) local0.info udhcpd[1112]: Received a SIGUSR1

Кстати, пинг до гейтвея (провайдеровского) проходит без каких-либо потерь.

Не знаю какие ещё логи вам предоставить, остальное буду давать по требованию =)



Последнее исправление: vitan (всего исправлений: 2)

>роутер AUSU RT-G32

ASUS мб?

почему-то не заходит на некоторые сайты, если на них уже кто-то сидит.


Это как?

На роутере родная прошивка или дд-врт какая?

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Прошивка родная, от факта не захождения на сайт сам фигею. Я так понимаю, критерий того что кто-то сидит на сайте это ~1 минута с последнего запроса на сайт (может быть, больше, не засекали). Не заходит в том плане что бесконечно долго ждёт ответа на запрос.

vitan
() автор топика
Ответ на: комментарий от vitan

Ну это в ряд ли что-то с линуксом, скорее всего на роутере беда какая-то. А сам роутер как подключен к инету? Точнее инет как к вам приходит, просто витуха?

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

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

Самое странное - это именно дискриминация компов по признаку оси. На винде всё работает (на один и тот же комп ставили сначала убунту, потом винду).

vitan
() автор топика
Ответ на: комментарий от vitan

Ну тогда кастую в тред спецов по юниксовым прошивкам роутеров =) Скорее всего в нем что-то. Например, проверяет UA и блочит за каким-то лешим компы, где он линуксовый. А пока попробуй поковыряться в админке роутера, мб найдешь что.

Zhbert ★★★★★
()

Пинговать надо обязательно пакетами различной длины, допустим "-s 1000", "-s 1400", "-s 2000".

Возможно, проблема в tcp в MSS или tcp scaling window.

mky ★★★★★
()

Попробуй уменьшить mtu интерфейса до 1450 где-то (чтобы с гарантией).

nnz ★★★★
()

Значит так. Зашёл я через рандомную http проксю, контакт заработал. какая-то фигня с кодефорсес не пашет всё равно (с другой убунты пашет, тут, я так понимаю, всё это к делу не очень то относится, но всё же хотелось бы узнать как пофиксить). Но всё-таки хотелось бы без прокси, потому что у меня быстрый анлим, а с проксёй получаются жуткие тормоза.

mtu стоял 1460, уменьшил до 1450. Обычно потеря пакетов особенно проявляется только в пиковые нагрузки провайдера (или роутера?) - вечером. Вот результаты (4 часа дня):

по 64 байта:

--- ya.ru ping statistics ---
248 packets transmitted, 234 received, 5% packet loss, time 247386ms
rtt min/avg/max/mdev = 3.838/88.908/340.947/35.603 ms
по 1008 байт:
--- ya.ru ping statistics ---
259 packets transmitted, 247 received, 4% packet loss, time 258289ms
rtt min/avg/max/mdev = 5.389/91.733/499.170/44.505 ms
по 1508:
--- ya.ru ping statistics ---
251 packets transmitted, 237 received, 5% packet loss, time 250384ms
rtt min/avg/max/mdev = 7.587/91.123/531.174/40.347 ms
по 2008:
--- ya.ru ping statistics ---
247 packets transmitted, 237 received, 4% packet loss, time 246367ms
rtt min/avg/max/mdev = 6.505/99.224/424.620/47.044 ms

Как видно, результат по потерям примерно одинаковый (это с уменьшеным mtu и без прокси)... Что ещё можно сделать, какие логи кинуть?

vitan
() автор топика
Ответ на: комментарий от guyvernk

Да, при подключеении с витухи потерь действительно не оказалось. Хотя и с вайфаем их не было, если я пинговал его или гейтвей провайдера. По поводу прошивки - она у меня самая новая, поэтому можно поподробнее про ддврт, что это за прошивка, как ставить (если не так же как и обычную прошивку) и насколько сложнее с ней управляться?

vitan
() автор топика
Ответ на: комментарий от vitan

Судя вот по этому http://forum.ubuntu.ru/index.php?PHPSESSID=fs7fsnt5jtl0ctp3mp2mmdufe1&topic=1... в общагах МГУ наблюдается интернет-аномалия, не пускающая Линукс во vkontakte.ru.

Попробуйте:

«echo 0 > /proc/sys/net/ipv4/tcp_window_scaling»

«echo 0 > /proc/sys/net/ipv4/tcp_sack»

«echo 0 > /proc/sys/net/ipv4/tcp_timestamps»

«iptables -t mangle -I OUTPUT -p tcp --tcp-flags SYN,RST SYN \ -j TCPMSS --set-mss 600»

Если это не поможет, задампите syn пакет из линукса и из винды, сравните, что ещё отличается (какие tcp-опции, может быть диапазон портов).

mky ★★★★★
()
Ответ на: комментарий от mky

Эмм, результаты конкретно этих действий следующие: У рута нет прав на то чтобы дать права этим файлам на запись (как это фиксить кстати?). iptables не нашёл команды -j. Так как я в этой программе в своё время разобраться так и не смог, боюсь что-то менять там самостоятельно =)

Простите, но хоть я только что и нашёл что такое syn пакет, я понятия не имею чем его задампить и как вообще получить (hping -S -V vk.com не дал результатов, он тупо не достучался, я понятия не имею, как пользоваться этой утилитой). Подскаите пожалуйста!

vitan
() автор топика
Ответ на: комментарий от vitan

А что если попробовать подключить машинки в эзернет-дырочки данного роутера?

Последнюю команду iptables попробуй без слеша перед "-j" ввести

nixtrian
()
Ответ на: комментарий от nixtrian

Через езернет нету потерь пакетов, но всё равно ничего из вышеперечисленного не исправляется. После применения iptables тоже. В аутпут команда ничего не вывела.

vitan
() автор топика
Ответ на: комментарий от vitan

То есть таки при подключении через эзернет проблема остается? Если так, значит есть 2 самостоятельные проблемы. Потери пакетов у меня на такой же железке тоже случаются, таки вайфай, да (можно попробовать антенну покрутить). Видимо дело у тебя не в них. А вот по поводу основной проблемы могу посоветовать поднять pppd на какой-нибудь из машин с линуксом и с нее раздать инет. Если трабла повторится, то проблема вовсе не в железке. Еще можно посмотреть tcpdump'ом или воспользоваться действием LOG для iptables.

nixtrian
()
Ответ на: комментарий от vitan

и да, то что команда в аутпут ничего не вывела - это нормално. Теперь можешь посмотреть «iptables -t mangle -L» или «iptables-save» - увидишь там новое правило (тобою добавленное)

nixtrian
()
Ответ на: комментарий от vitan

>У рута нет прав на то чтобы дать права этим файлам на запись

Эти все команды делаются от рута. Если рута нет, то «sudo /bin/echo 0 > /proc/sys/net/ipv4/tcp_window_scaling». Или как понимать вашу фразу?

Чтобы проверить, что команда iptables сработала, выполните «iptables -t nat -L OUTPUT -n -v». Там должно быть это правило, немного в другом виде, но будет содержать TCPMSS и set-mss.

Пока вы не пропишите нули в /proc файлы дампить пакеты не интерестно, винда не использует многие tcp-опции. Если пропишите и не поможет, то тогда инструкуция зависит от того, какой у вас будет дампер пакетов. Если tcpdump, то в командной строке:

«tcpdump -i any -n -nn -x -v -s 1500 tcp[tcpflags] \& tcp-syn \!= 0 »,

если вместо tcpdump будет использован wireshark, то заходите в меню «Capture», там в «Options», в строку «Capture filter» вводите «tcp[tcpflags] & (tcp-syn) != 0». Потом делаете «Start».

Когда запустите дампер пакетов, делает попытку из броузера открыть страницу vkontakte.ru, при этом не должно быть другой сетевой активности.

mky ★★★★★
()
Ответ на: комментарий от mky

Вобщем, в прошлый раз мне chmod выдал почему-то permission denied на попытку сделать o+w к этим файлам, «echo 0 > ...» выдал то же самое... Сейчас всё поменял, теперь сделалось, вконтакт пока работает, если вдруг перестанет (а это по идее должно быть не сегодня - завтра), сообщу.

vitan
() автор топика
Ответ на: комментарий от vitan

Это уже вне темы, но для общего развития, файлы в каталоге /proc --- это виртуальные файлы, своеобразный интерфейс для конфигурирования ядра. Поэтому делать на них chmod бессмыленно. А root в них может писать всегда.

а это по идее должно быть не сегодня - завтра

Когда вы пишите в /proc, то это только до следующей перезагрузки. То есть когда после перезагрузке вконтактик не будет работать, нужно сделать «echo 0 > /proc/...». Чтобы эти параметры оставались после перезагрузки их нужно прописать в «/etc/sysctl.conf» (там вместо слешей ставятся точки и /proc/sys обрезается).

Правило iptables c TCPMSS, наверное, не нужно. Да и «mss 600» это маловато, хотя может для wifi и хорошо.

Если эти записи в /proc помогут, то по хорошему нужно бы разобраться, какие именно из них нужны. Все эти настрокий это «деградация» протокола tcp, они могут дать снижение скорости передачи на больших объемах. Хотя, для скоростей wifi они не особо важны.

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо большое, всё работает, в контакт заходит стабильно, без багов. спасибо, я про файлы в /proc знаю, просто не знал что конкретно с ними делать можно, а что нет... Я пока комп не перезагружал, как появитс немного свободного времени, поэкспериментирую с настройками и напишу результат. Ещё раз огромное спасибо!

vitan
() автор топика
Ответ на: комментарий от vitan

А теперь запись потомкам и последователям: Итого, для того чтобы всё заработало достаточно при каждом запуске компьютера вводить от имени рута команду «echo 0 > /proc/sys/net/ipv4/tcp_timestamps». Можно просто прописать эту команду в /etc/rc.local Если не заработает, попробуйте другие методы, описанные в этом топике.

vitan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.