URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 85956
[ Назад ]

Исходное сообщение
"Можно ли указать разные шлюзы по портам?"

Отправлено Sergetv , 14-Июл-09 19:26 
Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2. И машину с ХР на которой два торрент-клиента. В качестве шлюза на ХР-машине указан 192.168.1.1. Хочу поставить оба торрент-клиента на раздачу через разные соединения- одному сказал слушать на порту 10001, второму на порту 10002. Настроил на машинах, раздающих интернет  проброс портов - на первой на 10001, на второй на 10002. Первый торрент-клиент прекрасно работает (тот у которого порт 10001, что пробрасывается машиной являющейся шлюзом по умолчанию-192.168.1.1) А второй клиент, естественно не хочет, так как он получает запросы с 192.168.1.2, а возвращает ответы на шлюз по умолчанию -192.168.1.1. Первый вопрос - можно ли под XP прописать маршрут Route, привязанный не к сети, а к порту отправителя? (Пакеты с порта 10002 отправлять через другой шлюз). Или может проще как-то заворачивать на шлюз-машине 192.168.1.1 (FreeBSD) пакеты на вторую машину (192.168.1.2)? Заранее благодарен.

Содержание

Сообщения в этом обсуждении
"Можно ли указать разные шлюзы по портам?"
Отправлено ALex_hha , 14-Июл-09 19:45 
>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.

Как шлюзы выходят в инет?


"Можно ли указать разные шлюзы по портам?"
Отправлено sergtv , 14-Июл-09 22:22 
>>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.
>
>Как шлюзы выходят в инет?

PPPoE поднимается Tun0


"Можно ли указать разные шлюзы по портам?"
Отправлено ALex_hha , 14-Июл-09 23:15 
>>>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.
>>
>>Как шлюзы выходят в инет?
>
>PPPoE поднимается Tun0

На какой машине?


"Можно ли указать разные шлюзы по портам?"
Отправлено Sergetv , 15-Июл-09 09:50 
>>>>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.
>>>
>>>Как шлюзы выходят в инет?
>>
>>PPPoE поднимается Tun0
>
>На какой машине?

На обеих - 192.168.1.1 и 192.168.1.2


"Можно ли указать разные шлюзы по портам?"
Отправлено ALex_hha , 15-Июл-09 13:53 
>>>>>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.
>>>>
>>>>Как шлюзы выходят в инет?
>>>
>>>PPPoE поднимается Tun0
>>
>>На какой машине?
>
>На обеих - 192.168.1.1 и 192.168.1.2

Использовать DNAT + SNAT без указания основного шлюза на машине


"Можно ли указать разные шлюзы по портам?"
Отправлено Sergetv , 15-Июл-09 15:27 
>>
>>На обеих - 192.168.1.1 и 192.168.1.2
>
>Использовать DNAT + SNAT без указания основного шлюза на машине

Сделал так:

#NAT
nat on $ext_if0 from $int_if0:network to any -> ($ext_if0)
nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
#REDIRECT_PORTS
rdr on $ext_if0 proto tcp from any to ($ext_if0) port 10001 -> 192.168.1.7

Работает, но медленная скорость отдачи - 10-15 кб/с. Обычно было около 90
Где-то что-то не так...


"Можно ли указать разные шлюзы по портам?"
Отправлено reader , 15-Июл-09 15:44 
>[оверквотинг удален]
>
>#NAT
>nat on $ext_if0 from $int_if0:network to any -> ($ext_if0)
>nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
>#REDIRECT_PORTS
>rdr on $ext_if0 proto tcp from any to ($ext_if0) port 10001 -> 192.168.1.7
>
>Работает, но медленная скорость отдачи - 10-15 кб/с. Обычно было около 90
>
>Где-то что-то не так...

udp не пробовали тоже пробрасывать?


"Можно ли указать разные шлюзы по портам?"
Отправлено Sergetv , 15-Июл-09 15:47 
>[оверквотинг удален]
>>nat on $ext_if0 from $int_if0:network to any -> ($ext_if0)
>>nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
>>#REDIRECT_PORTS
>>rdr on $ext_if0 proto tcp from any to ($ext_if0) port 10001 -> 192.168.1.7
>>
>>Работает, но медленная скорость отдачи - 10-15 кб/с. Обычно было около 90
>>
>>Где-то что-то не так...
>
>udp не пробовали тоже пробрасывать?

Да , они пробрасываются тоже, строчку скопировать забыл
#NAT
nat on $ext_if0 from $int_if0:network to any -> ($ext_if0)
nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
#REDIRECT_PORTS
rdr on $ext_if0 proto tcp from any to ($ext_if0) port 10001 -> 192.168.1.7
rdr on $ext_if0 proto udp from any to ($ext_if0) port 10001 -> 192.168.1.7


"Можно ли указать разные шлюзы по портам?"
Отправлено ALex_hha , 15-Июл-09 18:13 
>[оверквотинг удален]
>>
>>udp не пробовали тоже пробрасывать?
>
>Да , они пробрасываются тоже, строчку скопировать забыл
>#NAT
>nat on $ext_if0 from $int_if0:network to any -> ($ext_if0)
>nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
>#REDIRECT_PORTS
>rdr on $ext_if0 proto tcp from any to ($ext_if0) port 10001 -> 192.168.1.7
>rdr on $ext_if0 proto udp from any to ($ext_if0) port 10001 -> 192.168.1.7

Не посдкажу, фаерволл freebsd почти не знаю


"Можно ли указать разные шлюзы по портам?"
Отправлено reader , 15-Июл-09 20:54 
>[оверквотинг удален]
>>
>>udp не пробовали тоже пробрасывать?
>
>Да , они пробрасываются тоже, строчку скопировать забыл
>#NAT
>nat on $ext_if0 from $int_if0:network to any -> ($ext_if0)
>nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
>#REDIRECT_PORTS
>rdr on $ext_if0 proto tcp from any to ($ext_if0) port 10001 -> 192.168.1.7
>rdr on $ext_if0 proto udp from any to ($ext_if0) port 10001 -> 192.168.1.7

врят ли скорость упала из-за этих правил
попробуйте прописать на 192.168.1.7 шлюзом эту машину и сравните, а потом уберите nat с внутреннего интерфейса и снова сравните


"Можно ли указать разные шлюзы по портам?"
Отправлено sergtv , 15-Июл-09 22:23 
>[оверквотинг удален]
>>#NAT
>>nat on $ext_if0 from $int_if0:network to any -> ($ext_if0)
>>nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
>>#REDIRECT_PORTS
>>rdr on $ext_if0 proto tcp from any to ($ext_if0) port 10001 -> 192.168.1.7
>>rdr on $ext_if0 proto udp from any to ($ext_if0) port 10001 -> 192.168.1.7
>
>врят ли скорость упала из-за этих правил
>попробуйте прописать на 192.168.1.7 шлюзом эту машину и сравните, а потом уберите
>nat с внутреннего интерфейса и снова сравните

Пробовал:
С правилом nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
и с отсутствующим указанием шлюза - скорость до 15, и траффик показывается как локальный (малиновым цветом на графике скорости uTorrent) Но зато по двум каналам.

Без правила nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
И с указаным шлюзом - до 90 скорость, и на графике красным цветом. Правда только один клиент по одному каналу.


"Можно ли указать разные шлюзы по портам?"
Отправлено reader , 15-Июл-09 23:46 
>[оверквотинг удален]
>>
>>врят ли скорость упала из-за этих правил
>>попробуйте прописать на 192.168.1.7 шлюзом эту машину и сравните, а потом уберите
>>nat с внутреннего интерфейса и снова сравните
>
>Пробовал:
>С правилом nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
>и с отсутствующим указанием шлюза - скорость до 15, и траффик показывается
>как локальный (малиновым цветом на графике скорости uTorrent) Но зато по
>двум каналам.

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

кстати если клиент все же инициирует какие то соединения , то при таких настройках они все будут идти через шлюз по умолчанию, даже те которые по правельному должны быть отправлены через другой шлюз. как это отразится на работе клиента не знаю.
>
>Без правила nat on $int_if0 from any to 192.168.1.7 port 10001  -> ($int_if0)
>И с указаным шлюзом - до 90 скорость, и на графике красным
>цветом. Правда только один клиент по одному каналу.

а с nat и со шлюзом?


"Можно ли указать разные шлюзы по портам?"
Отправлено sergtv , 16-Июл-09 01:46 

>а с nat и со шлюзом? если нат на той же машине на которую установлен шлюз - работает, но низкая скорость.

"Можно ли указать разные шлюзы по портам?"
Отправлено reader , 16-Июл-09 13:03 
>
>>а с nat и со шлюзом? если нат на той же машине на которую установлен шлюз - работает, но низкая скорость.

то есть в пакете нужен адрес отправителя наверно

может попробовать route-to


"Можно ли указать разные шлюзы по портам?"
Отправлено Sergetv , 16-Июл-09 14:17 
Спасибо, пока решил я прекратить эксперименты. Поставил второй клиент на второю ХР-машину  настроенную на второй шлюз. Объявим перемирие :-)
Спасибо всем огромное за участие.

"Можно ли указать разные шлюзы по портам?"
Отправлено angra , 14-Июл-09 19:46 
Что можно сделать в винде не подскажу. Но вот на шлюзе 192.168.1.2 можно сделать кроме DNAT еще и SNAT, который подставит для пакетов идущих на машину с XP в качестве источника адрес шлюза, в этом случае ответ уйдет напрямую 192.168.1.2.

"Можно ли указать разные шлюзы по портам?"
Отправлено sergtv , 14-Июл-09 22:25 
>Что можно сделать в винде не подскажу. Но вот на шлюзе 192.168.1.2
>можно сделать кроме DNAT еще и SNAT, который подставит для пакетов
>идущих на машину с XP в качестве источника адрес шлюза, в
>этом случае ответ уйдет напрямую 192.168.1.2.

Спасибо за подсказку! Я тоже об этом подумал пока домой шел. Наверное это будет наиболее быстрый и правильный метод. Только я не знаю пока как средствами PF на FreeBSD SNAT организовать.



"Можно ли указать разные шлюзы по портам?"
Отправлено reader , 14-Июл-09 23:00 
>>Что можно сделать в винде не подскажу. Но вот на шлюзе 192.168.1.2
>>можно сделать кроме DNAT еще и SNAT, который подставит для пакетов
>>идущих на машину с XP в качестве источника адрес шлюза, в
>>этом случае ответ уйдет напрямую 192.168.1.2.
>
>Спасибо за подсказку! Я тоже об этом подумал пока домой шел. Наверное
>это будет наиболее быстрый и правильный метод. Только я не знаю
>пока как средствами PF на FreeBSD SNAT организовать.

если грубо, то в pf линуксовый SNAT - nat, а DNAT - rdr, синтаксис не страшный


"Можно ли указать разные шлюзы по портам?"
Отправлено Sergetv , 15-Июл-09 11:05 
>>Спасибо за подсказку! Я тоже об этом подумал пока домой шел. Наверное
>>это будет наиболее быстрый и правильный метод. Только я не знаю
>>пока как средствами PF на FreeBSD SNAT организовать.
>
>если грубо, то в pf линуксовый SNAT - nat, а DNAT -
>rdr, синтаксис не страшный

Добавил в PF на второй машине такое:
nat on $int_if0 from any to any port 10002 -> ($int_if0)

int_if0 = 192.168.1.2

Отдача пошла, правда DHT сеть не поднялась и входящих соединений все равно нет, но  на внyтренней сетевухе первой машины 192.168.1.1 (шлюзе по умолчанию) TCPDUMP отлавливает пакеты с XP-машины (192.168.1.7) адресованные на внешний айпишник второй машины и порт 10002:

tcpdump -ni vr0 port 10002
09:54:03.680554 IP 192.168.1.7.2095 > 95.132.150.1.10002: S 1017194008:1017194008(0) win 65535 <mss 1460,nop,nop,sackOK>
09:54:06.698439 IP 192.168.1.7.2095 > 95.132.150.1.10002: S 1017194008:1017194008(0) win 65535 <mss 1460,nop,nop,sackOK>

Откуда они берутся - непонятно пока....


"Можно ли указать разные шлюзы по портам?"
Отправлено reader , 15-Июл-09 15:39 
>[оверквотинг удален]
>Отдача пошла, правда DHT сеть не поднялась и входящих соединений все равно
>нет, но  на внyтренней сетевухе первой машины 192.168.1.1 (шлюзе по
>умолчанию) TCPDUMP отлавливает пакеты с XP-машины (192.168.1.7) адресованные на внешний айпишник
>второй машины и порт 10002:
>
>tcpdump -ni vr0 port 10002
>09:54:03.680554 IP 192.168.1.7.2095 > 95.132.150.1.10002: S 1017194008:1017194008(0) win 65535 <mss 1460,nop,nop,sackOK>
>09:54:06.698439 IP 192.168.1.7.2095 > 95.132.150.1.10002: S 1017194008:1017194008(0) win 65535 <mss 1460,nop,nop,sackOK>
>
>Откуда они берутся - непонятно пока....

наверно это не ответы на запросы, поэтому отправляются через шлюз по умолчанию


"Можно ли указать разные шлюзы по портам?"
Отправлено PavelR , 14-Июл-09 19:54 
>[оверквотинг удален]
>192.168.1.1. Хочу поставить оба торрент-клиента на раздачу через разные соединения- одному
>сказал слушать на порту 10001, второму на порту 10002. Настроил на
>машинах, раздающих интернет  проброс портов - на первой на 10001,
>на второй на 10002. Первый торрент-клиент прекрасно работает (тот у которого
>порт 10001, что пробрасывается машиной являющейся шлюзом по умолчанию-192.168.1.1) А второй
>клиент, естественно не хочет, так как он получает запросы с 192.168.1.2,
>а возвращает ответы на шлюз по умолчанию -192.168.1.1. Первый вопрос -
>можно ли под XP прописать маршрут Route, привязанный не к сети,
>а к порту отправителя? (Пакеты с порта 10002 отправлять через другой
>шлюз).

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

> Или может проще как-то заворачивать на шлюз-машине 192.168.1.1 (FreeBSD) пакеты
>на вторую машину (192.168.1.2)? Заранее благодарен.

ИМХО задача достаточно сложная по объему действий :)

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

2. на машине, которая является основным шлюзом (1.1) сделать проброс пакетов на шлюз 1.2 если эти пакеты идут с доп айпи.

на первый взгляд, для этого достаточно

ipfw add fwd 192.168.1.2 all from 192.168.1.DopIP to any out via extIF

в соответствующем месте.

Соответственно, меняя адрес на машине с ХР вы должны получать различную трассировку к внешним хостам, через провайдера 1 и через провайдера 2 соответственно.

//на машинах 1.1 и 1.2 должен быть настроен нат, это, надеюсь, понятно.