Приветствую всех.Помоги разобраться с такой проблемкой. Есть шлюз, в нём работает pf. Натит серую сеть 10.8.0.0 в пул выделенных адресов.
nat pass on $ext_if inet from 10.8.0.0/14 to any -> 217.1.1.0/22 source-hash
Все натится прекрасно, но вот торрент у клиентов не работает. Тобишь когда клиент открывает у себя порт в торренте к примеру 58981 или дает возможность программе самой открывать его, то к нему не могут подключиться другие юзеры интернета.
К примеру по state выводится такая связка
all tcp 10.8.7.80:58981 -> 217.1.1.105:57971 -> 93.190.177.116:12517 ESTABLISHED:ESTABLISHED
Что ещё нужно прописать в pf чтобы натилось в другую сторону для торрент-клиента?
Спасибо.
P.S. Надеюсь что ясно изложил проблему))
>[оверквотинг удален]
>К примеру по state выводится такая связка
>
>all tcp 10.8.7.80:58981 -> 217.1.1.105:57971 -> 93.190.177.116:12517 ESTABLISHED:ESTABLISHED
>
>Что ещё нужно прописать в pf чтобы натилось в другую сторону для
>торрент-клиента?
>
>Спасибо.
>
>P.S. Надеюсь что ясно изложил проблему))насколько я знаю под натом ТОрент работает в "пассивном" режиме , т.е может работать только с теми у кого стоит прямой ip а со всеми теми кто сидит под натом не может работать , для этих целей если хочешь пойти навстречу людям сделай правила форварда что всё например с порта 20101 идёт на хост 10.8.0.10 на порт 20101 , с порта 20102 всё идёт на хост 10.8.0.15 на порт 20102 (грубо говоря люди должны настроить свои клиенты так что бы входящий порт для торента был у каждого уникальный и четко прописанный) .
не уверен , но вроде так (правила fwd для ipnat найти не сложно)
>[оверквотинг удален]
>может работать только с теми у кого стоит прямой ip а
>со всеми теми кто сидит под натом не может работать ,
>для этих целей если хочешь пойти навстречу людям сделай правила форварда
>что всё например с порта 20101 идёт на хост 10.8.0.10 на
>порт 20101 , с порта 20102 всё идёт на хост 10.8.0.15
>на порт 20102 (грубо говоря люди должны настроить свои клиенты так
>что бы входящий порт для торента был у каждого уникальный и
>четко прописанный) .
>не уверен , но вроде так (правила fwd для ipnat найти не
>сложно)Помогите пожалуйста разобраться хотя бы для одного порта.
к примеру нат у меня настроен так
nat pass on $ext_if inet from 10.15.0.0/16 to any -> 217.X.X.X/16 source-hashК примеру я хотел бы форвардить до клиентов порты с 38820 по 38825
Какое лучше правило мне создать дополнительно (чего то с rdr не получается сделать)??
rdr pass on $ext_if proto {tcp, udp} from 217.X.X.X/16 port 38820:38825 to 10.15.0.0/16 port 38820:38825
Так нужно??
нужно примерно так
rdr pass on $ext_if proto tcp to 217.?.X.X/16 port 38825 -> 10.15.0.5 port 38825то есть любой запрос на екст_иф на адреса с сети 217.?.x.x/16 порт 38825 будет направлен на 10.15.0.5
выдаешь каждому внутреннему адресу по порту, если внутренний адрес динамически можно по доменному имени отслеживать (somehost.local) port 38825
а лучше наверно для каждого внутреннего адреа с торентом выделить внешний и для каждого писать правило типа
rdr pass on $ext_if proto {tcp, udp} to 217.?.0.5 port 38825 -> 10.15.0.5 port 38825
но тогда для торрента и натить надо этот внутренний адрес на определенный внешний
>[оверквотинг удален]
>выдаешь каждому внутреннему адресу по порту, если внутренний адрес динамически можно по
>доменному имени отслеживать (somehost.local) port 38825
>
>а лучше наверно для каждого внутреннего адреа с торентом выделить внешний и
>для каждого писать правило типа
>
>rdr pass on $ext_if proto {tcp, udp} to 217.?.0.5 port 38825 -> 10.15.0.5 port 38825
>
>но тогда для торрента и натить надо этот внутренний адрес на определенный
>внешнийХм, но ведь пакеты каждого внутреннего адреса транслируются на внешние адреса из пула по вышеприведенному правилу через опцию source-hash. Как тогда правило rdr узнает соответствие между внутренним и внешним адресами??
>Хм, но ведь пакеты каждого внутреннего адреса транслируются на внешние адреса из
>пула по вышеприведенному правилу через опцию source-hash. Как тогда правило rdr
>узнает соответствие между внутренним и внешним адресами??надо перед основным правилом ната (с source-hashed) добавить правила ната для каждого узла с торентом, как-то так:
nat on $ext_if inet tag from 10.15.0.5 port 38825 -> 217.15.0.5
nat on $ext_if inet tag from 10.15.0.5 to port 6969 -> 217.15.0.5а еще удобнее ставить теги в правилах пасс на входе внутреннего интерфеса (pass in on $int_if) при форвардинге, а здесь их проверять...
тока вот я не уверен насчет того что у всех трекеров порт 6969, с этим может быть трабл...
или для каждого клиента с торрентом просто забить правило ната на все порты перед source-hashed, тогда траблов меньше и правил меньше.
>nat on $ext_if inet tag from 10.15.0.5 port 38825 -> 217.15.0.5
>nat on $ext_if inet tag from 10.15.0.5 to port 6969 -> 217.15.0.5ошибочка)
nat on $ext_if inet tcp from 10.15.0.5 port 38825 -> 217.15.0.5
nat on $ext_if inet tcp from 10.15.0.5 to port 6969 -> 217.15.0.5
>>nat on $ext_if inet tag from 10.15.0.5 port 38825 -> 217.15.0.5
>>nat on $ext_if inet tag from 10.15.0.5 to port 6969 -> 217.15.0.5
>
>ошибочка)
>nat on $ext_if inet tcp from 10.15.0.5 port 38825 -> 217.15.0.5
>nat on $ext_if inet tcp from 10.15.0.5 to port 6969 -> 217.15.0.5Хорошо, а откуда ты знаешь что внутреннему адресу 10.15.0.5 будет соответствовать всегда внешний адрес 217.15.0.5 при опции source-hash??
>Хорошо, а откуда ты знаешь что внутреннему адресу 10.15.0.5 будет соответствовать всегда
>внешний адрес 217.15.0.5 при опции source-hash??man pf. В правилах ната срабатывает первое подошедшее правило. То есть траф для торрента вообще не будет знать о source-hashed, он пойдет по вышеизложенным правилам. Кстати можно для торент-юзеров применить перед source-hashed bitmask, с ним сопоставление адресов становится предсказуемым...
>>Хорошо, а откуда ты знаешь что внутреннему адресу 10.15.0.5 будет соответствовать всегда
>>внешний адрес 217.15.0.5 при опции source-hash??
>
>man pf. В правилах ната срабатывает первое подошедшее правило. То есть траф
>для торрента вообще не будет знать о source-hashed, он пойдет по
>вышеизложенным правилам. Кстати можно для торент-юзеров применить перед source-hashed bitmask, с
>ним сопоставление адресов становится предсказуемым...Извиняюсь ступил))) Спасибо. Но я заметил, когда выдается айпи по source-hashed, то трекер берет этот айпи выделенный и уже после к нему подключается.