Почему виснут ники на хабе (*** Ваш ник уже занят, пожалуйста измените на какой-нибудь другой!)

[08:20:13] *** Соединение с DCBEELINEKZ...
[08:20:13] *** Соединён
[08:20:14] *** Ваш ник уже занят, пожалуйста измените на какой-нибудь другой!
[08:20:14] *** Отключен

Я заметил, проблема эта возникает (в локальной сети), особенности у меня на хабе который работает на таком железе как роутер Tp-Link 740N.
Но дело не в этом! Роутер это не ПК он не может обрабатывать так быстро проблемы с неконкретными клиентами которые к нему подключаются c кривым IP!
А проблема конкретна в том что не все открывают порты в своем роутере, модеме ([i]не умеют или не хотят потратить пару минут времени, лучше парится чем понять[/i]) для своего клиента через который они заходят на хабы...

К примеру:
Так как IP вашего компа 192.168....., а за роутером в сети провайдера он ваше другой 10....... (лок. сеть Билайна KZ). А мы же клиент запустили (FlyLinkDC++. итд) на ПК где IP 192.... и подключаемся к хабу который в локальной сети Билайн тоже как и мы 10...... (с внешкой так же) и хаб начинает думать вроде бы ты с 10...... а клиент твой на 192..... и начинает ипать мозг... от того и скидывает вас, и провисает ваш НИК в списке юзеров.

Конкретно про роутер:
Если у вас роутер (белая коробочка), вам необходимо настроить переадресацию портов. Это связанно с тем, что прямой доступ в Интернет имеет сам роутер, позволяя компьютерам и устройствам внутренней домашней сети пользоваться своим соединением. Поэтому «снаружи» «видно» только роутер. Чтобы получить из внешнего мира доступ к сервисам внутренней сети (в нашем случае к DC-клиенту FlyLink) нужно, чтобы роутер переадресовывал IP-пакеты на нужный внутренний адрес и порт. Это и называется переадресацией портов или портфорвардингом.

Подробно о проблеме:
Хаб думает, что клиент работает нормально, если от него не поступил сигнал разрыва подключения.

Как исправить? На своем компе ты можешь сделать только регистрацию ника на хабе, больше ничего. Вход юзера с паролем обрывает созданное ранее соединение. Очень нехорошо получается, если загружаешь клиентов с нулевым временем ожидания перед подключнием из разных мест (2 грейлинка будут воевать между собой долго и упорно). Хотя в любом случае задержка должна быть, желательно увеличивающаяся после каждой неудачной попытки..

А на сервере..Тут, наверное, если получится придумать скрипт, который при проверке ника нового юзера будет вместо быстрого ValidateDenide при наличии такого же ника делать сначала некую проверку-пинг (запрос IP, что-ли) соединения..

[2010-09-17 - 17:30:41] <setuper_work> по поводу отключения от хаба
[2010-09-17 - 17:30:47] <setuper_work> раз был такой разговор
[2010-09-17 - 17:31:00] <setuper_work> есть 2 типа отключения
[2010-09-17 - 17:31:06] <setuper_work> корректное и некорректное
...
[2010-09-17 - 17:31:36] <setuper_work> о некорректном отключении хаб узнаёт по ошибкам в сокете
..
[2010-09-17 - 17:32:11] <setuper_work> при корректном отключении клиент отсылает на хаб пустую команду
[2010-09-17 - 17:32:57] <setuper_work> под пустой командой подразумевается не пустая команда протокола NMDC, и даже не пустая строка
[2010-09-17 - 17:33:07] <Alexey> setuper_work: %z?
[2010-09-17 - 17:33:21] <setuper_work> пустая команда - это 0 байт
[2010-09-17 - 17:34:04] <setuper_work> это протокол tcp.шз
[2010-09-17 - 17:34:11] <setuper_work> *tcp/ip
[2010-09-17 - 17:34:53] <setuper_work> поэтому если пингер корректно закрывает сокет, то хаб должен корректно разъединить пигнера
[2010-09-17 - 17:35:22] <setuper_work> в противном случае пингер не уйдёт с хаба


Одна из тем на форуме: MyDC.ru
При смене айпи образуется зависшее соединение tcp и его закрытие по таймауту. Таймаут от 12 до 24х минут. Так то.

Последнее, что мы сделаем, это заставим Linux обрабатывать большее число TCP/IP соединений за определенное время. Нижеописанные настройки уменьшают время TCP/IP подключения, чтобы можно было обработать больше соединений за тот же интервал.
Также будет уменьшено время, которое Linux ждет до закрытия соединения, и время, через которое Linux разрывает устаревшее соединение. Эти настройки отключат некоторые расширения протокола TCP/IP, которые нам не нужны. Значения параметров TCP/IP стека, принятые в Red Hat по умолчанию:

Код:
tcp_fin_timeout "180" 
tcp_keepalive_time "7200" 
tcp_window_scaling "1" 
tcp_sack "1" 
tcp_timestamps "1" 


Чтобы изменить параметры TCP/IP, используйте следующие команды:

Код:
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout 
echo "1800" >/proc/sys/net/ipv4/tcp_keepalive_time 
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 


Вы можете добавить эти команды в /etc/rc.d/rc.local, чтобы они выполнялись каждый раз при загрузке компьютера. Или отредактируйте файл /etc/sysctl.conf и добавьте следующие строки:

Код:
net.ipv4.tcp_fin_timeout = 30 
net.ipv4.tcp_keepalive_time = 1800 
net.ipv4.tcp_window_scaling = 0 
net.ipv4.tcp_sack = 0 
net.ipv4.tcp_timestamps = 0 


Чтобы изменения вступили в силу, стоит перезагрузить систему.


http://mydc.ru/topic4665.html
http://mydc.ru/topic1868.html

НАСТРОЙКА РОУТЕРА ДЛЯ РАБОТЫ С ХАБАМИ http://dcbeelinekz.blogspot.com/2014/12 … st_19.html