Страница 1 из 1
два канала - два natd
Добавлено: 2009-01-09 19:23:31
filosan
Захотелось чтоб два канала для выхода в инет использовались одновременно. Поднимаю второй natd. Причём чтоб он акуратно опускался и поднимался вместе с файрволом и первым natd. Делаю:
новый файлик правлю:
Код: Выделить всё
#!/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 выполняемый файлик
Да, так гораздо лучше. Спасибо.