Добрый день всем!Имеется ПС с двумя сетевухами, fxp0 ( внешняя) и rl0(внутренняя)
Настроил нат по статье http://www.opennet.me/tips/info/1618.shtml. Из локалки можно ходить в интернет, но это не главная задача. Надо переправить некоторые порты с fxp0 на сервера размещённые в локалке. Если бы нат сделал через natd , то нужно было бы использовать redirect_port(как везде пишут). А как быть в случае использования kernel nat ? Подозреваю что в этом случае надо в ipfw правила прописывать devert или fwd. Не подскажите как быть? В нете не нашёл описания для ната, который через ядро работает..
>быть? В нете не нашёл описания для ната, который через ядро
>работает..man ipfw
В самом конце:
--------------------
NAT, REDIRECT AND LSNAT
First redirect all the traffic to nat instance 123:ipfw add nat 123 all from any to any
Then to configure nat instance 123 to alias all the outgoing traffic with
ip 192.168.0.123, blocking all incoming connections, trying to keep same
ports on both sides, clearing aliasing table on address change and keep-
ing a log of traffic/link statistics:ipfw nat 123 config ip 192.168.0.123 log deny_in reset same_ports
Or to change address of instance 123, aliasing table will be cleared (see
reset option):ipfw nat 123 config ip 10.0.0.1
To see configuration of nat instance 123:
ipfw nat 123 show config
To show logs of all the instances in range 111-999:
ipfw nat 111-999 show
To see configurations of all instances:
ipfw nat show config
Or a redirect rule with mixed modes could looks like:
ipfw nat 123 config redirect_addr 10.0.0.1 10.0.0.66
redirect_port tcp 192.168.0.1:80 500
redirect_proto udp 192.168.1.43 192.168.1.1
redirect_addr 192.168.0.10,192.168.0.11
10.0.0.100 # LSNAT
redirect_port tcp 192.168.0.1:80,192.168.0.10:22
500 # LSNATor it could be splitted in:
ipfw nat 1 config redirect_addr 10.0.0.1 10.0.0.66
ipfw nat 2 config redirect_port tcp 192.168.0.1:80 500
ipfw nat 3 config redirect_proto udp 192.168.1.43 192.168.1.1
ipfw nat 4 config redirect_addr
192.168.0.10,192.168.0.11,192.168.0.12
10.0.0.100
ipfw nat 5 config redirect_port tcp
192.168.0.1:80,192.168.0.10:22,192.168.0.20:25 500-----------------------
То есть в правилах для ipfw после строчки
${fwcmd} nat 123 config ip ${oif} log
надо поставить
${fwcmd} nat 123 config redirect_port tcp 192.168.10.200:80 80Где ${oif} внешний ип , а 192.168.10.200 ип вебсервера в локалке.
Или я не так понял.
>То есть в правилах для ipfw после строчки
>${fwcmd} nat 123 config ip ${oif} log
>надо поставить
>${fwcmd} nat 123 config redirect_port tcp 192.168.10.200:80 80
>
>Где ${oif} внешний ип , а 192.168.10.200 ип вебсервера в локалке.
>Или я не так понял./usr/share/example/etc/rc.firewall - Для ленивых
Есть пример двух натов.
>/usr/share/example/etc/rc.firewall - Для ленивых
>
>
>Есть пример двух натов.############
# Network Address Translation. All packets are passed to natd(8)
# before they encounter your remaining rules. The firewall rules
# will then be run again on each packet after translation by natd
# starting at the rule number following the divert rule.
#
# For ``simple'' firewall type the divert rule should be put to a
# different place to not interfere with address-checking rules.
#
case ${firewall_type} in
[Oo][Pp][Ee][Nn]|[Cc][Ll][Ii][Ee][Nn][Tt])
case ${natd_enable} in
[Yy][Ee][Ss])
if [ -n "${natd_interface}" ]; then
${fwcmd} add 50 divert natd ip4 from any to any via ${natd_interface}
fi
;;
esac
case ${firewall_nat_enable} in
[Yy][Ee][Ss])
if [ -n "${firewall_nat_interface}" ]; then
${fwcmd} nat 123 config if ${firewall_nat_interface} log
${fwcmd} add 50 nat 123 ip4 from any to any via ${firewall_nat_interface}
fi
;;
esac
esac
Вы это имели в виду? Больше ничего связанного с натом там не нашёл. И на счёт редиректа портов так и не понятно...
>[оверквотинг удален]
>>
>>
>>Есть пример двух натов.
>
>############
># Network Address Translation. All packets are passed to natd(8)
># before they encounter your remaining rules. The firewall rules
># will then be run again on each packet after translation by
>Вы это имели в виду? Больше ничего связанного с натом там не
>нашёл. И на счёт редиректа портов так и не понятно...Все там понятно. Мозг включи. :)
----------- Вставляешь в свой rc.firewall
# IP Firewall NAT from kernel
case ${firewall_nat_enable} in
[Yy][Ee][Ss])
if [ -n "${firewall_nat_interface}" ]; then
if echo "${firewall_nat_interface}" | \
grep -q -E '^[0-9]+(\.[0-9]+){0,3}$'; then
firewall_nat_flags="ip ${firewall_nat_interface} ${firewall_nat_flags}"
else
firewall_nat_flags="if ${firewall_nat_interface} ${firewall_nat_flags}"
fi
${fwcmd} nat 123 config log ${firewall_nat_flags}
${fwcmd} add nat 123 ip4 from any to any via ${firewall_nat_interface}
fi
;;
esac
------------------------------------
--------- Вставляешь в rc.conf ---------------firewall_nat_enable="YES"
firewall_nat_interface="rl0" <---- тут можно использовать IP адрес или имя интерфейса
firewall_nat_flags="unreg_only same_ports redirect_port tcp 10.10.10.16:12232 12323"-----------------------------------------
Что изменить ты додумаешься сам. :)
> Что изменить ты додумаешься сам. :)Ну.. могу сказать , что ничего не получилось с 7 версией,..
Так как мы пока тестируем это дело, то решили далее не углублятся и воспользоваться готовым продуктом http://www.opennet.me/opennews/art.shtml?num=12931
Да простят меня поклонники командной строки :)
>> Что изменить ты додумаешься сам. :)
>Ну.. могу сказать , что ничего не получилось с 7 версией,..Значит не было желания и нужной настойчивости.
>Так как мы пока тестируем это дело, то решили далее не углублятся
>и воспользоваться готовым продуктом http://www.opennet.me/opennews/art.shtml?num=12931Ню-ню...
>Да простят меня поклонники командной строки :)Да нам то что, вам работать. :)
>[оверквотинг удален]
>
>>Так как мы пока тестируем это дело, то решили далее не углублятся
>>и воспользоваться готовым продуктом http://www.opennet.me/opennews/art.shtml?num=12931
>
> Ню-ню...
>
>
>>Да простят меня поклонники командной строки :)
>
> Да нам то что, вам работать. :)порты не перенаправляются никак, инфы и примеров нигде не найти(только то что вы написали)
да, ещё паралельно пытался ipsec запустить... то-же самое с ним на 7 бсд что и с натом :) может надо было всётаки на 6.3 настраивать... или руки не от туда растут или в freebsd 7 многое переделали
>Имеется ПС с двумя сетевухами, fxp0 ( внешняя) и rl0(внутренняя)Почему-то из года в год люди наружу (для видимости?) ставят хорошие карточки, а внутрь (для своих) - дерьмо... Хотя как раз изнутри трафика и пр. менеджмента обычно больше, а ширина канала в инет хорошо если исчисляется мегабитами.
>Настроил нат по статье http://www.opennet.me/tips/info/1618.shtml. Из локалки можно
Есть ли смысл в продакшн ставить 7.0?
>это не главная задача. Надо переправить некоторые порты с fxp0 на
>сервера размещённые в локалке. Если бы нат сделал через natd ,
>то нужно было бы использовать redirect_port(как везде пишут). А как быть
>в случае использования kernel nat ? Подозреваю что в этом случае
>надо в ipfw правила прописывать devert или fwd. Не подскажите как
>быть? В нете не нашёл описания для ната, который через ядро
>работает..Уже давно в портированном pf есть "kernel nat", работает прекрасно на 6-ке, прочесть доку про правила nat и rdr - 10-20 минут
inet_if="rl0"
lan_if="fxp0"
nat on $inet_if from {$lan_if:network} to any -> ($inet_if)
rdr on $inet_if proto tcp from any to ($inet_if) port 80 -> wwwserver port 80
Вот и весь конфиг для начала (только сетевые шнуры таки переставь)
>Почему-то из года в год люди наружу (для видимости?) ставят хорошие карточки,
>а внутрь (для своих) - дерьмо... Хотя как раз изнутри трафика
>и пр. менеджмента обычно больше, а ширина канала в инет хорошо
>если исчисляется мегабитами.Просто fxp0 встроенная, а реалтек счас поменяем гигабитную реалтек :) позже купим нормальную сетевую.
>Есть ли смысл в продакшн ставить 7.0?
Решили потестировать новую версию, офис перебирается на новое место и там пока никого нет тестируем.
>Уже давно в портированном pf есть "kernel nat", работает прекрасно на 6-ке,
>прочесть доку про правила nat и rdr - 10-20 минут
>inet_if="rl0"
>lan_if="fxp0"
>nat on $inet_if from {$lan_if:network} to any -> ($inet_if)
>rdr on $inet_if proto tcp from any to ($inet_if) port 80 -> wwwserver port 80
>Вот и весь конфиг для начала (только сетевые шнуры таки переставь)ipfw использовал так как только им и пользовался раньше. Возможно надо расширять кругозор :)