Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ PtokaX под *nix _ Проброс портов для хаба

Автор: Gate001 13.10.2009, 8:09

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

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

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

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

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

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

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

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

Параллельная тема создана на http://mydc.ru/r/?http://www.linux.org.ru/view-message.jsp?msgid=4129188&lastmod=1255408638169

Автор: mariner 13.10.2009, 8:15

ты строишь костыли. В настройках дц для своего хаба укажи принудительное использование нужного адреса и проброшенных портов

Автор: Gate001 13.10.2009, 19:11

Клиент для любых хабов использует одни и те же tcp и udp порты.
Но суть не в этом. Суть в том, что даже если прописать в настройках внешним айпи нужный мне, то получаю:

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

Автор: Delion 13.10.2009, 19:22

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

Автор: Gate001 13.10.2009, 20:45

Как что именно создает сеть? Есть 2 компьютера, они и объединены в сеть...
Ну почему же не светит? Я могу подключаться как из домашки в домашку, так и из домашки в локалку.
Второй вариант работает на множестве локальных хабов.

Автор: Delion 13.10.2009, 21:17

Цитата
2 компьютера, они и объединены в сеть

Так бы сразу и писал.
Цитата
из домашки в локалку

То есть хабу в сети провайдера ты с помощью переброса портов,грубо говоря,показываешь IP сервера.
Тут другой случай. Ты должен показать своему хабу,что ты из локалки провайдера,то есть засветить IP вида 10.*
Но такой IP у тебя только один. Стало быть,единственный вариант,который я представляю,запустить хаб на ещё одном порту,потом пробросить этот порт только для IP рабочей машины и использовать для коннекта адрес хаба в сети провайдера.
Ну,то есть показать хабу самое натуральное 127.0.0.1

Автор: mariner 13.10.2009, 21:56

эммм, как бэ не вижу проблему. у самого аналогичная связка. все пашет. Настройки такие -
http://mydc.ru/r/?http://www.klan-hub.ru/host/v.php?id=710167392.png
А на сервере -

Код
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 6731 -j DNAT --to-destination 192.168.0.2
/sbin/iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 3244 -j DNAT --to-destination 192.168.0.2

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

Автор: Gate001 13.10.2009, 23:35

mariner, у вас тоже хаб стоит на сервере, на котором и прописаны правила iptables?
Точь-в-точь такие же правила у меня работают давно и хорошо для любых локальных хабов.

Код
$IPTABLES -t nat -A PREROUTING -i <интерфейс, что смотрит в локалку> -p tcp -m tcp --dport 55793 -j DNAT --to-destination 192.168.0.2 (мой рабочий айпишник в домшней сети)
$IPTABLES -t nat -A PREROUTING -i <интерфейс, что смотрит в локалку> -p udp -m udp --dport 52583 -j DNAT --to-destination 192.168.0.2 (мой рабочий айпишник в домшней сети)

НО это все прекрасно работает, как я уже сказал, для локальных хабов. А вот с хабом, имеющем адрес в домшней сети, не срабатывает.

Автор: mariner 13.10.2009, 23:48

у меня работает. даже и не знаю, что предложить

Автор: Gate001 14.10.2009, 0:06

Ответьте, если не затруднит:
1) у вас тоже хаб стоит на сервере, на котором и прописаны правила iptables?
2) Куда смотрит ваш eth1?
3) 192.168.0.2-ip вашей домашней машины?

Автор: mariner 14.10.2009, 1:19

1 - да
2 - в мою домашнюю подсеть + виртуальная сеть (впнка личная то бишь)
3 - да

Автор: Trans 14.10.2009, 6:54

Цитата(Gate001 @ 13.10.2009, 23:11) *
Клиент для любых хабов использует одни и те же tcp и udp порты.
Но суть не в этом. Суть в том, что даже если прописать в настройках внешним айпи нужный мне, то получаю:
Код
[18:56:00] <HubBot> Ваш клиент посылает неверный IP 10.171.208.43 в поисковом запросе, Ваш реальный IP 192.168.0.2.
Попробуй так - открой в клиенте свойства своего хаба и там пропиши в разделе Соединение - Прямое соединение - свой внутренний IP - 192.168.0.2

Автор: Gate001 14.10.2009, 11:24

Trans, так надо наоборот - чтобы хаб тоже думал, что мой ип 10.171.208.43.
mariner, хаб, стоящий на сервере, определяет ваш айпи как 192.168.0.2 или как адрес самого сервера в внешней (недомашней) сети?

Автор: Setuper 14.10.2009, 11:38

Хаб определяет тот ip, через который идёт соединение с хабом.
При соединении же с пользователями, может использоваться другой ip, который как раз и можно прописать в настройках клиента.

Автор: intlive 14.10.2009, 13:45

Если правильно понял суть проблемы:
Позвольте пожалуйста опишу что было в моем случае embarrassed.gif

Сервак (192.168.0.2), виндовой комп (192.168.0.3) роутер д-линк дир120 ип в сетку провайдера 172.1.1.1 (от балды)
Было так, захожу с клиента (порты переброшены, все как надо) на 172.1.1.1 - все ок, хаб фиксирует тот-же ip-адрес..
Захожу на 192.168.0.2 - фиксирует ип клиента 192.168.0.3 (все как надо big_smile.gif)

При смене на гетвей asus wl500gpv2 в той же связке при коннекте на 172.1.1.1 ип выставлялся 192.168.0.1 (ип самого маршрутизатора, либо ип компа клиента 192.168.0.3), но никак не мог заставить чтобы хаб видел ип 172.1.1.1
На одном из форумом по гетвею асус подсказали такое правило (сам не линуксоид, напишу как было):

mkdir -p /usr/local/sbin
echo '#!/bin/sh' > /usr/local/sbin/post-firewall
echo 'iptables -t nat -I POSTROUTING 1 -o br0 -s 192.168.0.3 -d 192.168.0.2 -p tcp -m tcp --dport 411 -j SNAT --to-source "$2"' >> /usr/local/sbin/post-firewall
chmod +x /usr/local/sbin/post-firewall
flashfs save && flashfs commit && flashfs enable && reboot

После этого все стало как надо.. Конечно здесь нет интерфейсов ech1 и ech0 (подозреваю на замену в прошивке br0 и br1)

Такую же проблему встретил у товарища: сервак под винь2003 смотрит в сеть прова и другой сетевой в домашнюю сеть из 1го компа. Настроена "служба маршрутизация и удаленный доступ" - все как надо, машина клиент получает инет. Но с хабом опять "пляски" хаб видит ип машины-клиента при коннекте что на внутренний что на провайдеровский ип, проблему решил "переключением портов" простым UserGate. Коннект на ип сервака на порт 412, переключаем на белый ип и порт 411, вуоляля - работает secret_smile.gif

Может мой пост поможет в решении проблемы, если нет - извините и удалите за флуд embarrassed.gif



Автор: Gate001 14.10.2009, 18:19

intlive, это к сожалению не совсем то.
Еще немного поколдовал...
Если выставить пассивный режим для 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 - айпи моей рабочей машины.
Эти правила работают для всех хабов, обеспечивая активный режим работы, кроме моего. Никак не могу сообразить что мне нужно для работы в активном режиме. Порт из "локалки" в "домашку" уже проброшен, поидее через него и должны взаимодействовать клиенты...

Автор: mariner 14.10.2009, 18:22

собственно все упирается в маршрутизацию

Автор: Gate001 14.10.2009, 19:46

А поподробнее? Что куда должно по-вашему идти?
Сейчас:

Код
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

Автор: mariner 14.10.2009, 20:50

Смысл в том, что когда ты стучишься на свой хаб сервер говорит - ага, вот этот парень и перекидывает тебя на локалку. По идее от этого можно как-то избавиться. У меня на хабе я тоже не у всех могу качать.

Автор: Gate001 14.10.2009, 20:53

mariner, так вы в активном режиме работаете или в пассивном? Ведь в активе то должны со всех качать...

Цитата
По идее от этого можно как-то избавиться

За этим вопросом и были созданы обе эти темы. Пробовал блокировку локального порта-не работает, вообще отказывается соединяться.

UPD:
Нашел в хелпе такую вот директивку:
Код
<Bool Name="BindOnlySingleIp">0</Bool><!-- Listen only on single IP. -->

Насколько я понимаю, если поставить единичку, то хаб будет слушать только ip адрес, указанный в
Код
<String Name="HubAddress"><Enter hub address here></String><!-- Hub address. Min length 1, max 256. -->

Сейчас нет возможности проверить, гляну завтра.

Автор: Delion 15.10.2009, 1:56

Цитата
слушать только

Да,но тогда нужен проброшенный 411 порт. Isn't it?

Автор: Gate001 15.10.2009, 11:08

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