Есть желание использовать ядро GENERIC и в связи с этим возник вопрос:
Как лучше подключить фаер с натом?
Для ipfw понял что так:
# echo 'ipfw_load="YES"' >> /boot/loader.conf
Ну и стандартные строки в rc.conf естественно...
Как подключить НАТ? причем хотелось бы использовать kernel NAT вместо natd.
FreeBSD - [решено] Динамическое подключение IPFW & NAT
-
Dm1try
Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT
Цитата:
Есть желание использовать ядро GENERIC
То есть FORWARD и DIVERT - использовать не планируете?
Цитата:
хотелось бы использовать kernel NAT вместо natd.
kernel NAT - это что?
Есть желание использовать ядро GENERIC
То есть FORWARD и DIVERT - использовать не планируете?
Цитата:
хотелось бы использовать kernel NAT вместо natd.
kernel NAT - это что?
-
Аlchemist
Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT
Цитата Dm1try:
То есть FORWARD и DIVERT - использовать не планируете?
как раз планирую и ищу способы альтернативной реализации
Цитата Dm1try:
kernel NAT - это что?
Вот тут обсуждали:
А это я нашел в мане по ipfw:
Код:
То есть FORWARD и DIVERT - использовать не планируете?
FreeBSD - [решено] Динамическое подключение IPFW & NAT
как раз планирую и ищу способы альтернативной реализации
Цитата Dm1try:
kernel NAT - это что?
FreeBSD - [решено] Динамическое подключение IPFW & NAT
Вот тут обсуждали:
http://www.opennet.ru/openforum/vslu...ID3/40608.html
А это я нашел в мане по 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 # LSNAT
or 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-
Dm1try
Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT
ТО есть, NAT работающий в kernel space.
Я знаю что в 7.x ipfw научился делать NAT без natd, но мне честно, лень, искать что нужно для этого.
Очевидно одно - пересборка ядра потребуется.
Попробуйте загрузить модулем pf, он и NAT умеет, и много чего еще.
Я знаю что в 7.x ipfw научился делать NAT без natd, но мне честно, лень, искать что нужно для этого.
Очевидно одно - пересборка ядра потребуется.
Попробуйте загрузить модулем pf, он и NAT умеет, и много чего еще.
-
Аlchemist
Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT
Поднял тестовую машину, дописал в rc.conf стандартные вещи:
firewall_enable="YES"
firewall_script="/etc/rules"
natd_enable="YES"
natd_interface="rl0"
в /boot/loader.conf:
ipfw_load="YES"'
- все пашет без пересборки ядра. Нат работает по стандартным правилам natd...
firewall_enable="YES"
firewall_script="/etc/rules"
natd_enable="YES"
natd_interface="rl0"
в /boot/loader.conf:
ipfw_load="YES"'
- все пашет без пересборки ядра. Нат работает по стандартным правилам natd...
-
Dm1try
Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT
Очевидно Вы используете user space nat
Почему это так:
Код:
Таким образом используется как не сложно догадаться: /sbin/natd.
Далее, обращаем внимание на вывод данной команды:
Код:
ИМХО, то есть для того чтобы использовать NAT in kernel space без пересборки ядра нужно:
Код:
По зависимотям к данному модулю тянется:
Код:
О чем собственно свидетельствует и надпись в dmesg моего ядра:
ipfw2 initialized, divert enabled, nat loadable, rule-based forwarding enabled, default to accept, logging limited to 1000 packets/entry by default
А все же желательно пересобрать ядро:
Код:
Почему это так:
Код:
Код: Выделить всё
root@mail# more /etc/rc.d/natd
#!/bin/sh
#
# $FreeBSD: src/etc/rc.d/natd,v 1.5 2006/12/31 10:37:18 yar Exp $
#
# PROVIDE: natd
# KEYWORD: nostart nojail
. /etc/rc.subr
. /etc/network.subr
name="natd"
rcvar=`set_rcvar`
command="/sbin/${name}"
pidfile="/var/run/${name}.pid"
start_precmd="natd_precmd"
required_modules="ipdivert"
natd_precmd()
{
if [ -n "${natd_interface}" ]; then
dhcp_list="`list_net_interfaces dhcp`"
for ifn in ${dhcp_list}; do
case "${natd_interface}" in
${ifn})
rc_flags="$rc_flags -dynamic"
;;
esac
done
if echo "${natd_interface}" | \
grep -q -E '^[0-9]+(\.[0-9]+){0,3}$'; then
rc_flags="$rc_flags -a ${natd_interface}"
else
rc_flags="$rc_flags -n ${natd_interface}"
fi
fi
return 0
}
load_rc_config $name
run_rc_command "$1"Таким образом используется как не сложно догадаться: /sbin/natd.
Далее, обращаем внимание на вывод данной команды:
Код:
Код: Выделить всё
# ls -la /boot/kernel|grep nat
-r-xr-xr-x 1 root wheel 14016 Jun 30 20:28 ipfw_nat.ko
-r-xr-xr-x 1 root wheel 91520 Jun 30 20:28 ipfw_nat.ko.symbolsИМХО, то есть для того чтобы использовать NAT in kernel space без пересборки ядра нужно:
Код:
Код: Выделить всё
kldload ipfw_natПо зависимотям к данному модулю тянется:
Код:
Код: Выделить всё
# kldstat
Id Refs Address Size Name
1 4 0xffffffff80100000 8fd0f8 kernel
2 1 0xffffffffd9886000 128c ipfw_nat.ko
3 1 0xffffffffd9888000 5d93 libalias.koО чем собственно свидетельствует и надпись в dmesg моего ядра:
ipfw2 initialized, divert enabled, nat loadable, rule-based forwarding enabled, default to accept, logging limited to 1000 packets/entry by default
А все же желательно пересобрать ядро:
Код:
Код: Выделить всё
options IPFIREWALL_NAT
options LIBALIAS-
Аlchemist