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

Исходное сообщение
"ipnat на работающей системе"

Отправлено Ert , 23-Ноя-05 01:36 
Подскажите, как запустить ipnat вместо natd, не компилируя ядро.
Выполняю kldload ipl, ipfilter загрузился.
Далее делаю /sbin/ipfilter -CF -f /etc/ipnat.rules
0 entries flushed from NAT table
1 entries flushed from NAT list
Cам ipnat.rules:
map rl1 10.1.0.0/24 -> 213.226.189.0/24

rl1 - внешний, 213.226.135.2 rl0 - 10.1.1.1

Выполняю ipnat -l нет никаких сессий.!


Содержание

Сообщения в этом обсуждении
"ipnat на работающей системе"
Отправлено vvvua , 23-Ноя-05 01:41 
ipnat -FC
ipnat -f /etc/ipnat.rules

Файл /etc/ipnat.rules:

map rl1 from 10.1.0.0/24 to any -> 213.226.135.2/32

>Подскажите, как запустить ipnat вместо natd, не компилируя ядро.
>Выполняю kldload ipl, ipfilter загрузился.
>Далее делаю /sbin/ipfilter -CF -f /etc/ipnat.rules
>0 entries flushed from NAT table
>1 entries flushed from NAT list
>Cам ipnat.rules:
>map rl1 10.1.0.0/24 -> 213.226.189.0/24
>
>rl1 - внешний, 213.226.135.2 rl0 - 10.1.1.1
>
>Выполняю ipnat -l нет никаких сессий.!



"ipnat на работающей системе"
Отправлено Ert , 23-Ноя-05 10:30 
Так и сделал - ничего. Может фиревалл настроить надо еще?

/sbin/ipfw add 98 divert natd all from 10.1.0.0/23 to any out via rl1
/sbin/ipfw add 99 divert natd all from any to 213.226.189.0/24 in via rl1

>ipnat -FC
>ipnat -f /etc/ipnat.rules
>
>Файл /etc/ipnat.rules:
>
>map rl1 from 10.1.0.0/24 to any -> 213.226.135.2/32
>
>>Подскажите, как запустить ipnat вместо natd, не компилируя ядро.
>>Выполняю kldload ipl, ipfilter загрузился.
>>Далее делаю /sbin/ipfilter -CF -f /etc/ipnat.rules
>>0 entries flushed from NAT table
>>1 entries flushed from NAT list
>>Cам ipnat.rules:
>>map rl1 10.1.0.0/24 -> 213.226.189.0/24
>>
>>rl1 - внешний, 213.226.135.2 rl0 - 10.1.1.1
>>
>>Выполняю ipnat -l нет никаких сессий.!



"ipnat на работающей системе"
Отправлено vvvua , 23-Ноя-05 11:45 
divert вообще убрать надо.
Это с другой оперы.
И natd покилять.
Запись 213.226.189.0/24 ошибочна.
Я свой конфиг прислал, он работает. FreeBSD 5.4

>Так и сделал - ничего. Может фиревалл настроить надо еще?
>
>/sbin/ipfw add 98 divert natd all from 10.1.0.0/23 to any out via
>rl1
>/sbin/ipfw add 99 divert natd all from any to 213.226.189.0/24 in via
>rl1
>
>>ipnat -FC
>>ipnat -f /etc/ipnat.rules
>>
>>Файл /etc/ipnat.rules:
>>
>>map rl1 from 10.1.0.0/24 to any -> 213.226.135.2/32
>>
>>>Подскажите, как запустить ipnat вместо natd, не компилируя ядро.
>>>Выполняю kldload ipl, ipfilter загрузился.
>>>Далее делаю /sbin/ipfilter -CF -f /etc/ipnat.rules
>>>0 entries flushed from NAT table
>>>1 entries flushed from NAT list
>>>Cам ipnat.rules:
>>>map rl1 10.1.0.0/24 -> 213.226.189.0/24
>>>
>>>rl1 - внешний, 213.226.135.2 rl0 - 10.1.1.1
>>>
>>>Выполняю ipnat -l нет никаких сессий.!



"ipnat на работающей системе"
Отправлено Ert , 23-Ноя-05 12:21 
Может я чего-то недопонимаю?? Работает только еслю делаю в firewalle на все разрешение. А как же тогда принудительно засунуть траффик в dummynet? И через какой работает порт ipnat?

"ipnat на работающей системе"
Отправлено Ert , 23-Ноя-05 14:05 
Ну помогите, никак не могу разобраться.... В ipnat.rules пишу
map rl1 10.1.0.5/32 -> 213.226.135.5/32

в /etc/rc.firewall

ipfw add 1229 pipe 1174 ip from 10.1.0.5 to any out via rl1

ipfw add 1230 pipe 1175 ip from any to 213.226.135.5 in via rl1


и нет никакого ограничения, счетчики крутятся... Как понимаю пакеты уходят от 10.1.0.5, на rl1 а возвращаются к 213.226.135.5 на rl1
как выставит ограничение конкретному пайпу?


"ipnat на работающей системе"
Отправлено vvvua , 23-Ноя-05 14:54 
Жать надо на внутреннем интерфейсе, а не внешнем. Допустим, к юзерам rl0 смотрит:

ipfw pipe 1 config bw 64kbit/s delay 10ms
ipfw pipe 2 config bw 64kbit/s delay 10ms
ipfw add pipe 1 ip from 10.1.0.0/24 to any in recv rl0
ipfw add pipe 2 ip from any to 10.1.0.0/24 out via rl0
ipfw add allow ip from any to any via rl0

Если не получиться, пришли "ifconfig -a" , "ipfw sh", "ipnat -l".

>Ну помогите, никак не могу разобраться.... В ipnat.rules пишу
>map rl1 10.1.0.5/32 -> 213.226.135.5/32
>
>в /etc/rc.firewall
>
>ipfw add 1229 pipe 1174 ip from 10.1.0.5 to any out via
>rl1
>
>ipfw add 1230 pipe 1175 ip from any to 213.226.135.5 in via
>rl1
>
>
>и нет никакого ограничения, счетчики крутятся... Как понимаю пакеты уходят от 10.1.0.5,
>на rl1 а возвращаются к 213.226.135.5 на rl1
>как выставит ограничение конкретному пайпу?



"ipnat на работающей системе"
Отправлено Provokator , 23-Ноя-05 14:07 
>Может я чего-то недопонимаю?? Работает только еслю делаю в firewalle на все
>разрешение. А как же тогда принудительно засунуть траффик в dummynet? И
>через какой работает порт ipnat?


Что значит засунуть траффик в дамминет ?Ты ограничить скорость хочешь, чтоли ?


"ipnat на работающей системе"
Отправлено Ert , 23-Ноя-05 19:36 
Спасибо, помогли!!! Может еще подскажете, как сделать полный редирект всех портов, т.е. чтобы пользователь мог запускать ftp, web, в emule был high ID. А то мой выше написанный конфиг как-то не работает?



"ipnat на работающей системе"
Отправлено Ert , 24-Ноя-05 09:39 
Мне просто объясните, если не трудно, принцип работы ipfw - а то весь инет перерыл, ничего не нахожу, да и в мануале не растолковано.

Есть сеть

______       ___________________     ____________________      ________
INET |______|rl1 213.226.135.5 |____| rl0 10.1.0.5/23   |____|LAN     |
______|      |__________________|    |___________________|    |________|

Пакет идет наружу из 10.1.0.0/23 - он попадает в rl0, сразу же вопрос - почему надо именно резать траффик на rl0, ведь тогда все равно до rl1 у пользователя с инета скачается на максимальной скорости, забьется канал, а только будет ограничения на интерфейсе rl0.
Второй вопрос - почему  

/sbin/ipfw add 1106 pipe 1051 all from any to 10.1.0.28 out via rl0
/sbin/ipfw add 1107 pipe 1052 all from 10.1.0.28 to any in via rl0

Как бы должно быть по всем правилам 1051 "from any to 10.1.0.28 in via rl0" ведь пакет приходит из инета на адрес 10.1.0.28??
Аналогично и 1052, ведь пакет выходит через rl0?

При выходе через интерфейс rl1, ип адрес ipnat меняет на 213.189.135.5

Почему не работает конструкция, с которой, как я думаю, не было бы проблем с открытыми портами, т.к. я хочу чтобы клиентский компьютер был полностью доступен из инета:

/sbin/ipfw add 1108 pipe 1051 all from any to 213.226.189.5 in via rl1


или же

/sbin/ipfw add 1108 pipe 1051 all from any to 10.1.0.5 in via rl1

Надеюсь только на вашу помощь, хоть носом ткните, только не в мануал...:)


"ipnat на работающей системе"
Отправлено vvvua , 24-Ноя-05 12:25 
Да, давно я столько вопрсов не получал :)

В бсд системах есть как минимум 3 системы работы с пакетами.
1. Исторически первый - ipfw
2. ipfilter
3. pf (Packet filter, вроде)

Все они умеют делать почти одно и то же но по-разному и с той или иной специализацией.
Как по мне, то ipfilter наиболее удачно сделан.

В системе могут существовать все 3 вид фильтров одновременно.
NAT (он же SNAT в линухах) нужен для подмены ИСХОДЯЩЕГО адреса (source).
В ipfw он не был реализован, поэтому сделали демон пользовательского уровня natd и на него стали передавать пакеты путем divert.

ipnat это только утилита управления NAT'ом и сопутсвующими функциями из пакета программ ipfilter.

Для того, чтобы машина была видна ИЗ инета, то нужно использовать map по портам. Эта технология зовется PNAT (в линухах DNAT, от слова destination). Пример проброса порта 22 на локальную машину:
rdr fxp1 213.226.135.5/32 port 22 -> 10.1.0.28 port 22 tcp

Можно, конечно и полностью айпишник пробросить, но это в мануалах читай - долго объяснять.

Ну а на счет in/out в правилах, то это модификаторы относительно данного интерфейса. Т.е. пакет может быть входящим либо исходящим относительно данного интерфейса.

Ну а жать на входящем интерфейсе потому, что на сетевуху вторую уже должно попасть с новым адресом.


P.S. одно из предназначений NAT - защита от от доступа с внешних адресов.
Пробить NAT практически невозможно.

>Мне просто объясните, если не трудно, принцип работы ipfw - а то
>весь инет перерыл, ничего не нахожу, да и в мануале не
>растолковано.
>
>Есть сеть
>
>______       ___________________    
>____________________      ________
> INET |______|rl1 213.226.135.5 |____| rl0 10.1.0.5/23   |____|LAN  
>  |
>______|      |__________________|    |___________________|  
>  |________|
>
>Пакет идет наружу из 10.1.0.0/23 - он попадает в rl0, сразу же
>вопрос - почему надо именно резать траффик на rl0, ведь тогда
>все равно до rl1 у пользователя с инета скачается на максимальной
>скорости, забьется канал, а только будет ограничения на интерфейсе rl0.
>Второй вопрос - почему
>
>/sbin/ipfw add 1106 pipe 1051 all from any to 10.1.0.28 out via
>rl0
>/sbin/ipfw add 1107 pipe 1052 all from 10.1.0.28 to any in via
>rl0
>
>Как бы должно быть по всем правилам 1051 "from any to 10.1.0.28
>in via rl0" ведь пакет приходит из инета на адрес 10.1.0.28??
>
>Аналогично и 1052, ведь пакет выходит через rl0?
>
>При выходе через интерфейс rl1, ип адрес ipnat меняет на 213.189.135.5
>
>Почему не работает конструкция, с которой, как я думаю, не было бы
>проблем с открытыми портами, т.к. я хочу чтобы клиентский компьютер был
>полностью доступен из инета:
>
>/sbin/ipfw add 1108 pipe 1051 all from any to 213.226.189.5 in via
>rl1
>
>
>или же
>
>/sbin/ipfw add 1108 pipe 1051 all from any to 10.1.0.5 in via
>rl1
>
>Надеюсь только на вашу помощь, хоть носом ткните, только не в мануал...:)
>