Страница 1 из 1

два канала - два natd

Добавлено: 2009-01-09 19:23:31
filosan
Захотелось чтоб два канала для выхода в инет использовались одновременно. Поднимаю второй natd. Причём чтоб он акуратно опускался и поднимался вместе с файрволом и первым natd. Делаю:

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

# cp /etc/rc.d/natd /etc/rc.d/natd2
новый файлик правлю:

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

#!/bin/sh
#
# $FreeBSD: src/etc/rc.d/natd,v 1.3.2.1 2006/12/20 12:23:57 yar Exp $
#

# PROVIDE: natd
# KEYWORD: nostart nojail

. /etc/rc.subr
. /etc/network.subr

name="natd2"
rcvar=`set_rcvar`
command="/sbin/natd"
pidfile="/var/run/${name}.pid"
start_precmd="natd2_precmd"

natd2_precmd()
{
	if ! ${SYSCTL} net.inet.divert > /dev/null 2>&1; then
		if ! kldload ipdivert; then
			warn unable to load IPDIVERT module.
			return 1
		fi
	fi

	if [ -n "${natd2_interface}" ]; then
		dhcp_list="`list_net_interfaces dhcp`"
		for ifn in ${dhcp_list}; do
			case "${natd2_interface}" in
			${ifn})
				rc_flags="$rc_flags -dynamic"
				;;
			esac
		done

		if echo "${natd2_interface}" | \
		    grep -q -E '^[0-9]+(\.[0-9]+){0,3}$'; then
			rc_flags="$rc_flags -a ${natd2_interface}"
		else
			rc_flags="$rc_flags -n ${natd2_interface}"
		fi
	fi

	return 0
}

load_rc_config $name
run_rc_command "$1"
в /etc/rc.conf добавляю:

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

natd2_enable="YES"
natd2_interface="rl2"
natd2_flags="-m -u -p 8669 -dynamic"
Ну и в /etc/rc.d/ipfw добавляем запуск и остановку natd2 аналогично первому

В итоге при старте вижу надпись что nad2 загружен, но процесса такого нет! Грешу на /etc/rc.d/natd2, но ума не приложу что не так.

Re: два канала - два natd

Добавлено: 2009-01-09 21:55:01
voider
переходи на pf и не парься :)
pf.conf

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

ext_if="xl0"
int_if="nve0"
vpn_if="ng0"

nat on $ext_if proto { tcp udp icmp } from $int_if:network to any -> ($ext_if) 
nat on $vpn_if proto { tcp udp icmp } from $int_if:network to any -> ($vpn_if)

pass out

Re: два канала - два natd

Добавлено: 2009-01-09 22:00:29
voider
2 демонв ната стартуютьс ятак

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

/sbin/natd -n ng0
/sbin/natd -p 8667 -P /var/run/natd2.pid -n lx1

Re: два канала - два natd

Добавлено: 2009-01-09 22:06:09
voider
Захотелось чтоб два канала для выхода в инет использовались одновременно.
а это уже другая тема.

Re: два канала - два natd

Добавлено: 2009-01-10 20:30:59
filosan
voider писал(а):2 демонв ната стартуютьс ятак

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

/sbin/natd -n ng0
/sbin/natd -p 8667 -P /var/run/natd2.pid -n lx1
Всё же хотелось бы чтобы второй нат поднимался и опускался вместе с первым и ipfw и чтоб конфигить его из rc.conf. Просто не понятно почему он не стартует.

Re: два канала - два natd

Добавлено: 2009-01-10 20:46:04
paradox
natd для ассиметричных каналов
и для тех кому лень

настраивайте pfnat и немучайтесь

Re: два канала - два natd

Добавлено: 2009-01-11 0:24:28
voider
filosan писал(а):
voider писал(а):2 демонв ната стартуютьс ятак

Просто не понятно почему он не стартует.
из эрси.конфа можна стартануть командой natd enable только один демон ната

Re: два канала - два natd

Добавлено: 2009-01-11 0:30:57
voider
такое пойдет? подкорректируй под себя :)


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

ipfw table 12 add 85.21.52.1 255.255.255.255


# первый Nat до инета 1
ipfw add 48 divert 8667 ip from table\(12\) to any in via lx1
ipfw add 49 divert 8667 ip from any to table\(12\) out via lx1

# второй nat до инета 2
ipfw add 51 divert 8668 ip from any to any in via ng0
ipfw add 52 divert 8668 ip from any to not table\(12\) out via ng0

Re: два канала - два natd

Добавлено: 2009-01-11 1:06:57
Fioktist
filosan писал(а):Захотелось чтоб два канала для выхода в инет использовались одновременно. Поднимаю второй natd. Причём чтоб он акуратно опускался и поднимался вместе с файрволом и первым natd.
вот это реально работало на FreeBSD 6.2

rc.conf

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

ifconfig_xl1="inet 192.168.111.99 netmask 255.255.255.0"
ifconfig_xl0="inet 192.168.54.88 netmask 255.255.248.0"
ifconfig_ste0="inet 10.10.10.1 netmask 255.255.255.248"
defaultrouter="192.168.111.250"

firewall_enable="YES"
firewall_script="/etc/rc.fir3.run"

natd_enable="YES"
natd -a 192.168.111.99 -p 8668
natd -a 192.168.54.88 -p 8778
gateway_enable="YES"

/etc/rc.fir3.run

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

# Заварачиваем трафик в  (NAT)
${ipfw} add 10 divert 8668 all from ${homenet} to any out via xl1
${ipfw} add 20 divert 8668 all from any to ${ipout1} in via xl1
${ipfw} add 30 divert 8778 all from ${homenet} to any out via xl0
${ipfw} add 40 divert 8778 all from any to ${ipout2} in via xl0
сейчас FreeBSD 7.1 там нат с ядром компилируется

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

####    main rule
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=150
options         IPFIREWALL_NAT #обязательно для ядерного нат
options         LIBALIAS #обязательно для ядерного нат
options         IPFIREWALL_FORWARD
options         IPDIVERT
options         DUMMYNET
options         HZ=1000
####    end main rule

а в файерволе надо 6 строк для 2х "натов", только правила NAT после ssh правил

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

# SSH
${ipfw} add 930 allow tcp from me 22 to 192.168.255.2,192.168.255.3
${ipfw} add 940 allow tcp from 192.168.255.2,192.168.255.3 to me 22
${ipfw} add 950 deny log tcp from me 22 to any
${ipfw} add 960 deny log tcp from any to me 22

# Делаем NAT (трансляцию сетевых адресов) всему, что не ушло на squid
${ipfw} nat 8 config ip ${ipGT}
${ipfw} nat 9 config ip ${ipMA}
${ipfw} add 1020 nat 8 ip from ${DomNet} to any out via ${ethGT}
${ipfw} add 1030 nat 8 ip from any to ${ipGT} in via ${ethGT}
${ipfw} add 1040 nat 9 ip from ${DomNet} to any out via ${ethMA}
${ipfw} add 1050 nat 9 ip from any to ${ipMA} in via ${ethMA}
правда теперь я все больше в сторону PF посматриваю а не IPFW...

вот тут уже было про 6.2 http://forum.lissyara.su/viewtopic.php? ... 48&start=0
а тут про 7.0 и там даже 3 NAT интерфейса http://forum.lissyara.su/viewtopic.php? ... =25#p90388

Re: два канала - два natd

Добавлено: 2009-01-11 13:48:52
filosan
Fioktist писал(а):
вот это реально работало на FreeBSD 6.2

rc.conf

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

ifconfig_xl1="inet 192.168.111.99 netmask 255.255.255.0"
ifconfig_xl0="inet 192.168.54.88 netmask 255.255.248.0"
ifconfig_ste0="inet 10.10.10.1 netmask 255.255.255.248"
defaultrouter="192.168.111.250"

firewall_enable="YES"
firewall_script="/etc/rc.fir3.run"

natd_enable="YES"
natd -a 192.168.111.99 -p 8668
natd -a 192.168.54.88 -p 8778
gateway_enable="YES"
не работает. bsd 6.3. при старте много раз выводится natd: Unable to bind divert socket: Address already in use

Re: два канала - два natd

Добавлено: 2009-01-11 14:14:30
rmn
filosan писал(а):не работает. bsd 6.3. при старте много раз выводится natd: Unable to bind divert socket: Address already in use
правильно. rc.conf выполняется несколько раз и каждый раз выполняется

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

natd -a 192.168.111.99 -p 8668
natd -a 192.168.54.88 -p 8778
надо убрать из rc.conf natd_enable="YES" (и строчки, запускающие натд) и создать в /etc/rc.d выполняемый файлик, к примеру:

startnatd.sh:

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

#!/bin/sh

natd -a 192.168.111.99 -p 8668
natd -a 192.168.54.88 -p 8778

Re: два канала - два natd

Добавлено: 2009-01-12 13:11:57
filosan
rmn писал(а):надо убрать из rc.conf natd_enable="YES" (и строчки, запускающие натд) и создать в /etc/rc.d выполняемый файлик
Да, так гораздо лучше. Спасибо.