LINUX.ORG.RU
ФорумAdmin

Проблемы с DC хабом и пробросом портов


0

0

Итак, ситуация довольно запутанная:

Домашняя сеть. В ней все айпи из пула 192.168.0.*.

Локальная сеть местного провайдера. В ней все айпи 10.*

Есть сервер, который соединяет мою домашнюю сеть и локальную сеть провайдера. На этом сервере ОС Debian Etch, при помощи маскардинга я имею доступ к сети провайдера. Специально для работы DC++ проброшены tcp и udp порты.

Все было хорошо и прекрасно, пока не решил поднять свой хаб. Хаб поднят естественно на сервере. Проблема в том, что у сервера есть 2 ip адреса, что естественно, т.к он смотрит и в мою домашнюю сеть, и в сеть провайдера. Подключаясь к хабу на любой из двух адресов ("локальный" или "домашний")-получаю одно и то же: Хаб определяет мой ip как 192.168.0.2. Это верно, но я так не могу качать файлы с пользователей моей локальной сети, нахоядщихся на моем хабе, а они в свою очередь не могут ничего качать с меня.

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

Вопрос-как реализовать работу DC клиента с файлообменом в активном режиме?

Прикладываю рисунок, как смог попытался донести картину... http://img208.imageshack.us/i/25972935.jpg/ Если не ясно-говорите, буду переделывать.


>Решением проблемы я вижу такой заход на хаб, чтобы он определил мой ip не как 192.168.0.1, а как ip самого сервера. В этом случае я попадаю в одну подсеть с локальными пользователями и файлообмен работает.

для этого в настройках dc++ клиента нужно указать внешний ip

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

Было бы все так просто... [18:56:00] <HubBot> Ваш клиент посылает неверный IP 10.171.208.43 в поисковом запросе, Ваш реальный IP 192.168.0.2.

Где: 10.171.208.43 - "локальный" ip сервера, который и надо передавать как клиенский ip при подключении.

192.168.0.2 - мой ip. Ошибся выше, "домашний" ip сервера-192.168.0.1.

IR0N
() автор топика

Попробуй подменить свой айпи адрес таким образом:
(на сервере)
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.2 -d 10.171.208.43 --dport порт-dc-хаба -j SNAT --to-source 10.171.208.43

Ну и разрешить такое прохождение пакетов в фаерволе, если что-то запрещающее там стоит. Подключаться клиентом на 10.171.208.43, либо (если поставить там -d 192.168.0.1) на 192.168.0.1

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

> К сожалению, безрезультатно. PREROUTING пришлось заменить на POSTROUTING, т.к. иначе выдает ошибку.

Ну так заменой на POSTROUTING ты ничего не добьёшься. Какую именно ошибку выдаёт? вроде синтаксис я указал правильный.

Nao ★★★★★
()

Оттрассируй и посмотри, через какой шлюз идут пакеты. Пропиши маршруты, чтобы из 192.168.* шел в 10.* , то есть твой шлюз 192.168.0.1 роутит на 10.*. 10.* должен идти перед 192.168.*

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

> Оттрассируй и посмотри, через какой шлюз идут пакеты. Пропиши маршруты, чтобы из 192.168.* шел в 10.* , то есть твой шлюз 192.168.0.1 роутит на 10.*. 10.* должен идти перед 192.168.*

Думаю что роутинг тут не поможет, так-как как DC-Хаб смотрит на айпи отправителя, а роутинг (без всяких там натов) айпишники в пакетах не меняет.

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

iptables -t nat -A PREROUTING -p tcp -s 192.168.0.2 -d 10.171.208.43 --dport 411 -j SNAT --to-source 10.171.208.43

iptables: Invalid argument

В мане сказано, что SNAT может работать только в цепочке POSTROURING

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

Действительно, запамятовал я про SNAT что-то. Тогда надо подумать...

Nao ★★★★★
()

Еще немного поколдовал...
Если выставить пассивный режим для DC, то скачивание с активных юзеров работает, хотя в настройках по-прежнему светится айпишник 192.168.0.2. Отдачу не проверял.
В моем скудном понимании вся разница между пассивным и активным режимом работы DC клиента-что в пассивном у клиента нет определенного порта "для прослушки", а в активном-есть.
Для проброса портов для "локальных" хабов у меня использовано следующее правило:
LANCARD="eth1"
IPTABLES="/sbin/iptables"
$IPTABLES -t nat -A PREROUTING -i $LANCARD -p tcp -m tcp --dport 55793 -j DNAT --to-destination 192.168.0.2
$IPTABLES -t nat -A PREROUTING -i $LANCARD -p udp -m udp --dport 52583 -j DNAT --to-destination 192.168.0.2
$LANCARD смотрит в локалку провайдера.
192.168.0.2 - айпи моей рабочей машины.
Эти правила работают для всех хабов, обеспечивая активный режим работы, кроме моего. Никак не могу сообразить что мне нужно для работы в активном режиме. Порт из "локалки" в "домашку" уже проброшен, поидее через него и должны взаимодействовать клиенты...
На всяк случай выложу таблицу роутов. Кстати, два домашних компьютера объединены в мост.
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
mail.post.ru 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
hdns2.corbina.n 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
vpn-l0.klg.corb 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
vpn-l0.klg.corb * 255.255.255.255 UH 0 0 0 ppp0
homenet.corbina 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
oneskelis.corbi 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
www.corbina.net 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
mail.axelot.ru 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
hdns1.corbina.n 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
hg-serv.corbina 10.171.192.1 255.255.255.255 UGH 0 0 0 eth1
192.168.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 bridge
192.168.0.0 * 255.255.255.0 U 0 0 0 bridge
10.171.192.0 * 255.255.224.0 U 0 0 0 eth1
10.0.0.0 10.171.192.1 255.0.0.0 UG 0 0 0 eth1
default * 0.0.0.0 U 0 0 0 ppp0

IR0N
() автор топика

Проблема решилась еще проще. Хватило банального отключения проверки ip в командах для профиля Master (в настройках хаба) и прописывания в клиенте в качестве внешнего ip "локального" адреса сервера. Всем спасибо за помощь.

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