Всем привет! В общем надо поднять 2 демон Natd. С основным проблем нет, интернет работает, все замечательно. Скопировал в etc/rc.d/natd в natd2, отредактировал заменив natd_interface на natd2_interface.
В rc.conf:
natd2_enable="YES"
natd2_interface="rl2"
natd2_flags="-f /etc/natd2.conf"И тут грабли, для запуска второго экземпляра natd2 просит natd2 в /sbib/, там же скопировал natd в natd2. При таком раскладе, одновременно запустится они не могут. При запуске natd2 freebsd пишет что уже запущен процес. В процессах весит Natd, убив его могу запустить второй. Одновременно никак не получается. в /sbib/natd2 в нем нешел natd.pid и переименовал на natd2.pid freebsd ругается что символы не те.
Читаем /etc/rc.d/natd до просветления и на основе него делаете аналог для natd2А лучше использовать ipfw nat. Более гибко и масштабируемо.
> Читаем /etc/rc.d/natd до просветления и на основе него делаете аналог для natd2Что то никак не просветлился....
> А лучше использовать ipfw nat. Более гибко и масштабируемо.
с помощью pf.conf сделал, работает.
Вот решил заморочиться со 2 демоном.
>> Читаем /etc/rc.d/natd до просветления и на основе него делаете аналог для natd2
> Что то никак не просветлился....Читайте дальше.
>>> Читаем /etc/rc.d/natd до просветления и на основе него делаете аналог для natd2
>> Что то никак не просветлился....
> Читайте дальше.У вас получилось поднять? Или не заморачивались. Если удалось то хоть логику подскажите, а то застрял немного.
>>>> Читаем /etc/rc.d/natd до просветления и на основе него делаете аналог для natd2
>>> Что то никак не просветлился....
>> Читайте дальше.
> У вас получилось поднять? Или не заморачивались. Если удалось то хоть логику
> подскажите, а то застрял немного.у меня ipfw nat , несколько инстансов
копию демона реально сделать.
я копировал, правил, но запускается только один, либо второй отключив первый. Завтра буду еще пробывать.
> я копировал, правил, но запускается только один, либо второй отключив первый. Завтра
> буду еще пробывать.цифра в divert правиле не наводит на размышлизмы?
>> я копировал, правил, но запускается только один, либо второй отключив первый. Завтра
>> буду еще пробывать.
> цифра в divert правиле не наводит на размышлизмы?Можешь подсказать в каком конфиге? Я копировал, может не все?
/etc/rc.d/natd
/sbin/natd
соответственно переименовывал на natd2.
> Потом по мере изучения, поиска статей, прочтения книг, они начали появляться!Но ведь у вас они могли появиться уже прямо сразу же! Стоило только прочитать ман к натд, где написано белым по черному, как создавать несколько инстансов ната, не занимаясь вивисекцией с копированием бинарников!
man natd
. . . . .
Options can be divided to several sections. Each section
applies to own natd instance. This ability allows to config‐
ure one natd process for several NAT instances. The first
instance that always exists is a "default" instance. Each
another instance should begin withinstance instance_name
At the next should be placed a configuration option. Example:
# default instance
port 8668
alias_address 158.152.17.1# second instance
instance dsl1
port 8888
alias_address 192.168.0.1
. . . . .
>[оверквотинг удален]
> instance instance_name
> At the next should be placed a configuration option. Example:
> # default instance
> port 8668
> alias_address 158.152.17.1
> # second instance
> instance dsl1
> port 8888
> alias_address 192.168.0.1
> . . . . .
данный вариант я пробовал:
natd.conf
log
instance default
interface ng0
port 8668
use_sockets yes
same_ports yes
instance re0
interface re0
port 8669
use_sockets yes
same_ports yes
globalport 8670
В rc.firewall добовлял:
${fwcmd} add divert 8668 all from any to any via ${PPPoE}
${fwcmd} add divert 8667 all from any to any via ${oif}
При загрузке freebsd natd не стартует (по каким причинам я не знаю) а вот если вручную стартануть, то все прекрасно работает, возможно из за того что интернет у меня PPPoE (mpd5).
> При загрузке freebsd natd не стартует (по каким причинам я не знаю)Если у вас что-то не работает, значит надо читать логи. А уж потом, когда чтение логов не поможет - морочить другим головы.
Вы занимаетесь ерундой, при этом не желаете сделать очевидное - разобраться.
>> При загрузке freebsd natd не стартует (по каким причинам я не знаю)
> Если у вас что-то не работает, значит надо читать логи. А уж
> потом, когда чтение логов не поможет - морочить другим головы.
> Вы занимаетесь ерундой, при этом не желаете сделать очевидное - разобраться.unknown interface name ng0
Как и раньше предполагала, сначала стартует natd, а потом mpd5 (ng0). Вот в этом и причина. Как решить пока не знаю.
> морочить другим головы.проблема в том,что ipfw инициализируется раньше mpd5, и когда он пытается это сделать, интерефейса ng0 еще нет - отсюда и ошибка.
так точно.http://forum.lissyara.su/viewtopic.php?f=4&t=30368
так что не надо говорить, что я морочу другим голову, вы сначала попробуйте сами создать 2 ната как в моем случае, а потом говорите громкие слова.....
>> морочить другим головы.
> проблема в том,что ipfw инициализируется раньше mpd5, и когда он пытается это
> сделать, интерефейса ng0 еще нет - отсюда и ошибка.Фух, как тяжко с вами.
## /etc/rc.confопция "-dynamic" как раз и означает, что на момент старта натд энторфейса может и не существовать, а если он и существует, то его параметры - адреса, маски и гейтвеи - могут меняться непредсказуемым образом.
. . . . .
natd_enable="YES"
natd_flags="-f /etc/rc.nat -dynamic"
natd_interface="ng0"
. . . . .## /etc/rc.nat
instance default
alias_address x.y.z.a
port 8600
redirect_port tcp 10.0.100.1:60001 x.y.z.a:60001
redirect_port tcp 10.0.100.2:60002 x.y.z.a:60002
redirect_port tcp 10.0.100.3:60003 x.y.z.a:60003
. . . . .
instance ep3
in_port 8601
out_port 8602
redirect_address 10.0.100.100 x.y.z.b
alias_address x.y.z.b
. . . . .
instance db2
. . . . .
. . . . .
globalport 8888
Читайте маны, они рулез.
>[оверквотинг удален]
> 8602
> redirect_address 10.0.100.100
> x.y.z.b
> alias_address x.y.z.b
> . . . . .
> instance db2
> . . . . .
> . . . . .
> globalport 8888
> Читайте маны, они рулез.Огромное спасибо! помогли (-dynamic), все заработало, до вашего ответа в mpd5 up.sh прописал.....
> Огромное спасибо! помогли (-dynamic), все заработало, до вашего ответа в mpd5 up.sh прописал.....кстати таки да, всё правильно, как вариант можно и так
затолкать в up.sh скрипт типо - как-то - так-тоnatd -n ng0 -dynamic -p 8669
ipfw add 40 divert 8669 all from any to any via ng0и потом, если уже не нужен будет,
не забывать прибивать этот второй natd в down.sh скрипте2 universite
ты че такой? не выспался? ))
ты был когда-нибудь маленький?
у тебя папа, мама был? зачем такой злой? (с)
> 2 universite
> ты че такой? не выспался? ))
> ты был когда-нибудь маленький?
> у тебя папа, мама был? зачем такой злой? (с)Почему люди не читают мануалы? Ему было указано направление, что читать.
Кстати, Handbook FreeBSD не такой уж большой, его можно за один вечер прочитать.
>> 2 universite
>> ты че такой? не выспался? ))
>> ты был когда-нибудь маленький?
>> у тебя папа, мама был? зачем такой злой? (с)
> Почему люди не читают мануалы? Ему было указано направление, что читать.
> Кстати, Handbook FreeBSD не такой уж большой, его можно за один вечер
> прочитать.да, ладно, че там! я ж не против, пусть себе читает, на здоровье ))
>>> морочить другим головы.
>> проблема в том,что ipfw инициализируется раньше mpd5, и когда он пытается это
>> сделать, интерефейса ng0 еще нет - отсюда и ошибка.
> Читайте маны, они рулез.Зря вы так.
Человек не хочет думать, хочет, чтоб ему все разжевали и сделали за него.
>> я копировал, правил, но запускается только один, либо второй отключив первый. Завтра
>> буду еще пробывать.
> цифра в divert правиле не наводит на размышлизмы?divert 8668 ip4 from any to any via ng0
natd2 не может стартануть, так как порт занят, вот я и не знаю где изменить 8669 для 2 natd.
> divert 8668 ip4 from any to any via ng0
> natd2 не может стартануть, так как порт занят, вот я и не
> знаю где изменить 8669 для 2 natd.У Вас два конфига для варианта неядерного natd
## /etc/rc.conf
. . . . .
natd_enable="YES"
natd_flags="-f /etc/natd.conf -dynamic"
natd_interface="ng0"
. . . . .
natd2_enable="YES"
natd2_flags="-f /etc/natd2.conf -dynamic"
natd2_interface="rl2"
. . . . .## /etc/natd.conf
interface ng0
port 8668
use_sockets yes
same_ports yes
. . . .## /etc/natd2.conf
interface rl2
port 8669
use_sockets yes
same_ports yes
. . . .Ну и
ln /sbin/natd /sbin/natd2Проверьте в ручную /etc/rc.d/natd start|restart|stop и
/etc/rc.d/natd2 start|restart|stop
>[оверквотинг удален]
> ## /etc/natd2.conf
> interface rl2
> port 8669
> use_sockets yes
> same_ports yes
> . . . .
> Ну и
> ln /sbin/natd /sbin/natd2
> Проверьте в ручную /etc/rc.d/natd start|restart|stop и
> /etc/rc.d/natd2 start|restart|stopСпасибо за ответ! У меня как раз natd(2).conf были не правильные....
/sbin/natd2, копировал, start работает, stop нет, пишет нет var/run/natd2.pid (могу немного пити не правельные написать), тогда залез в (/sbin/natd2, решил к natd.pid добавить 2, при запуске ошибка в виде не правильный символ, или что то вроде.....тогда natd.pid переименовал в mand.pid (ну и в других конфигах подкоректировал на matd) все заработало, natd 2 стартовал и останавливался. Еще раз спасибо, сейчас попробую, отпишусь.
>[оверквотинг удален]
> ## /etc/natd2.conf
> interface rl2
> port 8669
> use_sockets yes
> same_ports yes
> . . . .
> Ну и
> ln /sbin/natd /sbin/natd2
> Проверьте в ручную /etc/rc.d/natd start|restart|stop и
> /etc/rc.d/natd2 start|restart|stopпопробовала ваш вариант, в natd.conf тоже пробовал добавить порты. В итоге при старте вручную natd2 получаю: Unable to bind divert socket: Address already in use
natd2 - копия natd с добавлением 2 может тут косяк?
> попробовала ваш вариант, в natd.conf тоже пробовал добавить порты. В итоге при
> старте вручную natd2 получаю: Unable to bind divert socket: Address already
> in useПолагаю, не врет.
netstat -an4 | grep 8669
Что показывает после старта natd ?
> natd2 - копия natd с добавлением 2 может тут косяк?/etc/rc.d/natd2 в студию.
> /etc/rc.d/natd2 в студию.Извини, что так долго....
Брал natd.conf переименовывал все в нем на 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.subrname="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
fiif [ -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
doneif 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
fireturn 0
}load_rc_config $name
run_rc_command "$1"
Сделайте линк
ln /sbin/natd /sbin/natd2В /etc/rc.conf.local :
cloned_interfaces="ng0"> Брал natd.conf переименовывал все в нем на natd2, так же нашел:
Поправьте
> #!/bin/sh
> #
> # $FreeBSD: src/etc/rc.d/natd,v 1.3.2.1 2006/12/20 12:23:57 yar Exp $
> ## PROVIDE: natd2
> name="natd2"
> rcvar=`set_rcvar`command="/sbin/${name}"
> pidfile="/var/run/${name}.pid"
start_precmd="${name}_precmd"
> natd2_precmd()
.....
> Сделайте линк
> ln /sbin/natd /sbin/natd2Ты идиот?
В натд предусмотрена штатная возможность создания нескольких инстансов трансляции с разными конфигами. На одном бинарнике. Выше я специально привел кусок реального конфига, который этих инстансов создает более десятка.
А за линкование/копирование бинарников надо гнать из профессии ссаными тряпками.
>> Сделайте линк
>> ln /sbin/natd /sbin/natd2
> Ты идиот?Порядочные так не дискутируют и перестаньте "тыкать".
> В натд предусмотрена штатная возможность создания нескольких инстансов трансляции с разными
> конфигами. На одном бинарнике. Выше я специально привел кусок реального конфига,
> который этих инстансов создает более десятка.Топикпастер такую реализацию выбрал. Может у него релиз FreeBSD древний, в котором
natd не поддерживает опции instance .
Разберется с этой реализацией, будет осваивать instance .> А за линкование/копирование бинарников надо гнать из профессии ссаными тряпками.
С чего Вы это взяли ?
Проблема решена, (natd_flags="-f /etc/rc.nat -dynamic") все работает, хотел natd2 поднять, если это геморно то возможно и не буду заморачиваться.Единственное не сритесь тут :)
> С чего Вы это взяли ?С того, что есть штатное, предусмотренное разработчиками решение, гибкое и развитое.
Но нет, непременно нужно гланды через сфинктер ануса...