FreeBSD - [решено] Динамическое подключение IPFW & NAT

Ответить
Аватара пользователя
Аlchemist

FreeBSD - [решено] Динамическое подключение IPFW & NAT

Сообщение Аlchemist »

Есть желание использовать ядро GENERIC и в связи с этим возник вопрос:

Как лучше подключить фаер с натом?

Для ipfw понял что так:

# echo 'ipfw_load="YES"' >> /boot/loader.conf

Ну и стандартные строки в rc.conf естественно...

Как подключить НАТ? причем хотелось бы использовать kernel NAT вместо natd.
Аватара пользователя
Dm1try

Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT

Сообщение Dm1try »

Цитата:



Есть желание использовать ядро GENERIC



То есть FORWARD и DIVERT - использовать не планируете?




Цитата:



хотелось бы использовать kernel NAT вместо natd.



kernel NAT - это что?
Аватара пользователя
Аlchemist

Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT

Сообщение Аlchemist »

Цитата Dm1try:



То есть 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

Сообщение Dm1try »

ТО есть, NAT работающий в kernel space.

Я знаю что в 7.x ipfw научился делать NAT без natd, но мне честно, лень, искать что нужно для этого.

Очевидно одно - пересборка ядра потребуется.



Попробуйте загрузить модулем pf, он и NAT умеет, и много чего еще.
Аватара пользователя
Аlchemist

Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT

Сообщение Аlchemist »

Поднял тестовую машину, дописал в rc.conf стандартные вещи:

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

Сообщение Dm1try »

Очевидно Вы используете user space nat Изображение

Почему это так:



Код:

Код: Выделить всё

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

Re: FreeBSD - [решено] Динамическое подключение IPFW & NAT

Сообщение Аlchemist »

Dm1try, спасибо, все так и получается Изображение
Ответить

Вернуться в «Общий по FreeBSD»