31 мая 2012

Перенаправление портов для DC++

Если вы находитесь в локальной сети и смотрите в глобальную через NAT, то для правильной работы DC клиентов в активном режиме нужно настроить перенаправление портов на маршрутизаторе. Если у вас не работает поиск и скачивание файлов, то причина как раз в этом.

И так, открываем настройки вашего DC клиента и переходим на вкладку "Настройки соединения".

Выбираем "Брандмауэр с ручным перенаправлением портов" и в поля "Порты TCP и UDP" записываем любые порты, желательно одинаковые и начинающиеся с 1000, т.к. младшие могут быть уже заняты для других целей. В поле "Внешний IP" указываем внешний адрес маршрутизатора, т.е. который вам назначил провайдер.

Роутер
Если у вас обычный домашний роутер, то необходимо зайти через веб-интерфейс и настроить проброс портов. Например, в d-ink'ах это функция называется Виртуальные серверы и находится в разделе Межсетевой экран. Добавляем новое правило, задаем имя, выбираем внешний интерфейс, протокол TCP/UDP, нужные порты и внутренний ip. 
 
Внутренний ip, это адрес, который получает ваш компьютер от роутера. Он назначается динамически, но лучше настроить, что бы вашему компьютеру он назначался статически. Для этого сначала идем в раздел Статус>Клиенты, копируем MAC-адрес вашего компьютера и идем в раздел Сеть>LAN, опускаемся в самый низ и в секции Статический DHCP добавляем новое правило.

Не забываем сохранить и перезагрузить роутер.

Ну и конечно если на вашем компьютере стоит фаервол, его так же нужно настроить или отключить. Добавьте правило, которое будет пропускать все входящие и исходящие соединения с любого адреса на ваш локальный порт.
На примере Comodo
После этого переподключаемся к хабам и проверяем работу DC клиента в активном режиме.
Поиск и скачивание файлов работают!

Если в качестве маршрутизатора у вас используется компьютер с FreeBSD, то для настройки редиректа портов есть несколько вариантов, в зависимости от реализации NAT.

Демон natd
В случае, если у вас по умолчанию используется демон natd. Тогда ему нужно передать команду -redirect_port с нужными параметрами. Это можно сделать в момент запуска, прописав в /etc/rc.conf параметр natd_flags="" или отдельно в конфигурационном файле /etc/natd.conf  добавить строчки.
redirect_port tcp 192.168.10.2:35889 35889
redirect_port udp 192.168.10.2:35889 35889
Где 192.168.10.2 - внутренний адрес вашего компьютера, на котором запущен DC-клиент. 35889 - номер порта, который вы использовали на вкладке "Настройки соединения".

Еще нам нужно добавить правила для фаервола, которые будут разрешать соединения на интерфейсах по этим портам. Если используется ipfw, то в файле /etc/rc.ipfw после правила 
add divert natd all from any to any via ${oif}
добавляем 
add pass all from any to any 35889 via ${oif}
add pass all from any to any 35889 via ${iif} 
Здесь ${oif} - внешний, а ${iif} - внутренний интерфейсы.
Перезагружаем ipfw и natd соответствующими командами:
/etc/rc.d/natd restart
/etc/rc.d/ipfw restart
Ядерный nat
Если вы пересобирали ядро с поддержкой ядерного nat, тогда настройки форвардига несколько отличаются. Это задается сразу при конфигурировании nat в правилах ipfw.

Пример,  
nat 1 config log if ${oif} reset same_ports deny_in redirect_port tcp 192.168.10.2:35889 35889 redirect_port udp 192.168.10.2:35889 35889
Все пишется в одну строку! И перезагружаем фаервол
/etc/rc.d/ipfw restart