Имею две машины-шлюза соединения с интернетом, 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)? Заранее благодарен.
>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.Как шлюзы выходят в инет?
>>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.
>
>Как шлюзы выходят в инет?PPPoE поднимается Tun0
>>>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.
>>
>>Как шлюзы выходят в инет?
>
>PPPoE поднимается Tun0На какой машине?
>>>>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.
>>>
>>>Как шлюзы выходят в инет?
>>
>>PPPoE поднимается Tun0
>
>На какой машине?На обеих - 192.168.1.1 и 192.168.1.2
>>>>>Имею две машины-шлюза соединения с интернетом, 192.168.1.1 и 192.168.1.2.
>>>>
>>>>Как шлюзы выходят в инет?
>>>
>>>PPPoE поднимается Tun0
>>
>>На какой машине?
>
>На обеих - 192.168.1.1 и 192.168.1.2Использовать DNAT + SNAT без указания основного шлюза на машине
>>
>>На обеих - 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
Где-то что-то не так...
>[оверквотинг удален]
>
>#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 не пробовали тоже пробрасывать?
>[оверквотинг удален]
>>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
>[оверквотинг удален]
>>
>>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 почти не знаю
>[оверквотинг удален]
>>
>>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 с внутреннего интерфейса и снова сравните
>[оверквотинг удален]
>>#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 скорость, и на графике красным цветом. Правда только один клиент по одному каналу.
>[оверквотинг удален]
>>
>>врят ли скорость упала из-за этих правил
>>попробуйте прописать на 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 и со шлюзом?
>а с nat и со шлюзом? если нат на той же машине на которую установлен шлюз - работает, но низкая скорость.
>
>>а с nat и со шлюзом? если нат на той же машине на которую установлен шлюз - работает, но низкая скорость.то есть в пакете нужен адрес отправителя наверно
может попробовать route-to
Спасибо, пока решил я прекратить эксперименты. Поставил второй клиент на второю ХР-машину настроенную на второй шлюз. Объявим перемирие :-)
Спасибо всем огромное за участие.
Что можно сделать в винде не подскажу. Но вот на шлюзе 192.168.1.2 можно сделать кроме DNAT еще и SNAT, который подставит для пакетов идущих на машину с XP в качестве источника адрес шлюза, в этом случае ответ уйдет напрямую 192.168.1.2.
>Что можно сделать в винде не подскажу. Но вот на шлюзе 192.168.1.2
>можно сделать кроме DNAT еще и SNAT, который подставит для пакетов
>идущих на машину с XP в качестве источника адрес шлюза, в
>этом случае ответ уйдет напрямую 192.168.1.2.Спасибо за подсказку! Я тоже об этом подумал пока домой шел. Наверное это будет наиболее быстрый и правильный метод. Только я не знаю пока как средствами PF на FreeBSD SNAT организовать.
>>Что можно сделать в винде не подскажу. Но вот на шлюзе 192.168.1.2
>>можно сделать кроме DNAT еще и SNAT, который подставит для пакетов
>>идущих на машину с XP в качестве источника адрес шлюза, в
>>этом случае ответ уйдет напрямую 192.168.1.2.
>
>Спасибо за подсказку! Я тоже об этом подумал пока домой шел. Наверное
>это будет наиболее быстрый и правильный метод. Только я не знаю
>пока как средствами PF на FreeBSD SNAT организовать.если грубо, то в pf линуксовый SNAT - nat, а DNAT - rdr, синтаксис не страшный
>>Спасибо за подсказку! Я тоже об этом подумал пока домой шел. Наверное
>>это будет наиболее быстрый и правильный метод. Только я не знаю
>>пока как средствами 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>Откуда они берутся - непонятно пока....
>[оверквотинг удален]
>Отдача пошла, правда 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>
>
>Откуда они берутся - непонятно пока....наверно это не ответы на запросы, поэтому отправляются через шлюз по умолчанию
>[оверквотинг удален]
>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 должен быть настроен нат, это, надеюсь, понятно.