Во-первых:FreeBSD 5.3-RELEASE-p10
ipacctd: v 1.46 из портов.
NAT работает, то есть без ipacctd инет есть.# cat /etc/rc.conf|grep ipacctd:
ipacctd_enable="YES"
ipacctd_flags="-v -w"
ipacctd_rules="rl0"
ipacctd_rule_rl0_flags="-p 10000"# cat /etc/ipfw.conf:
/sbin/ipfw add divert natd all from any to 213.27.18.42 via rl0
/sbin/ipfw add divert 10000 all from any to 1.0.0.0/24 in via rl0
/sbin/ipfw add divert 10000 all from 1.0.0.0/24 to any out via rl0
/sbin/ipfw add divert natd all from 1.0.0.0/24 to any out via rl0Проблема состоит в невозможности выхода в инет с машин в локалке (подсеть 1.0.0.*). В /var/log/messages имеется такое:
May 27 17:32:22 box ipacctd[533]: (port 10000) accounting started ($Revision: 1.46 $, using 'divert' socket, verbose statistic, threshold = 30000, socket buffer = 0)
Меня смущает строка socket buffer = 0. Я пробовал руками добавлять параметр -b со значением, равным kern.ipc.maxsockbuf, но это приводило к следующим ошибкам в messages:
May 27 16:48:33 box ipacctd[471]: (port 10000) setsockopt(SO_RCVBUF): No buffer space available
May 27 16:48:33 box ipacctd[471]: (port 10000) setsockopt(SO_SNDBUF): No buffer space availableЧто посоветуете, как побороть?
Заранее спасибо.
/sbin/ipfw add divert natd all from any to 213.27.18.42 via rl0
/sbin/ipfw add divert 10000 all from any to 1.0.0.0/24 in via rl0
/sbin/ipfw add divert 10000 all from 1.0.0.0/24 to any out via rl0
/sbin/ipfw add divert natd all from 1.0.0.0/24 to any out via rl0правила не вернно раставлены
сначала посчитай, потом транслируй
>
>правила не вернно раставлены
>сначала посчитай, потом транслируйпоменял на:
/sbin/ipfw add divert 10000 all from any to 1.0.0.0/24 in via rl0
/sbin/ipfw add divert 10000 all from 1.0.0.0/24 to any out via rl0
/sbin/ipfw add divert natd all from any to 213.27.18.42 via rl0
/sbin/ipfw add divert natd all from 1.0.0.0/24 to any out via rl0ничего не изменилось :(.
>>
>>правила не вернно раставлены
>>сначала посчитай, потом транслируй
>в общем понял как делать чтобы работало, но хочется чтоб работало по человечески.. изменил конфиг файрволла чтобы при старте сбрасывались все правила:
/sbin/ipfw -f flush
/sbin/ipfw add divert 10000 all from any to 1.0.0.0/24 in via rl0
/sbin/ipfw add divert 10000 all from 1.0.0.0/24 to any out via rl0
/sbin/ipfw add divert natd all from any to 213.27.18.42 via rl0
/sbin/ipfw add divert natd all from 1.0.0.0/24 to any out via rl0Перегружаю машину, ipacctd запускается, но не работает. Потом делаю sh /etc/ipfw.conf и все начинает работать. Как бы это исправить или что нужно сделать чтобы после перезагрузки оно само начинало работать?
PS. по умолчанию в ядре default to deny.
>>>
>>>правила не вернно раставлены
>>>сначала посчитай, потом транслируй
>>
>
>в общем понял как делать чтобы работало, но хочется чтоб работало по
>человечески.. изменил конфиг файрволла чтобы при старте сбрасывались все правила:
>
>/sbin/ipfw -f flush
>/sbin/ipfw add divert 10000 all from any to 1.0.0.0/24 in via rl0
>
>/sbin/ipfw add divert 10000 all from 1.0.0.0/24 to any out via rl0
>
>/sbin/ipfw add divert natd all from any to 213.27.18.42 via rl0
>/sbin/ipfw add divert natd all from 1.0.0.0/24 to any out via rl0
>
>
>Перегружаю машину, ipacctd запускается, но не работает. Потом делаю sh /etc/ipfw.conf и
>все начинает работать. Как бы это исправить или что нужно сделать
>чтобы после перезагрузки оно само начинало работать?
>
>PS. по умолчанию в ядре default to deny.man rc.conf
firewall_script="/etc/ipfw.conf"
>>>>
>>>>правила не вернно раставлены
>>>>сначала посчитай, потом транслируй
>>>
>>
>>в общем понял как делать чтобы работало, но хочется чтоб работало по
>>человечески.. изменил конфиг файрволла чтобы при старте сбрасывались все правила:
>>
>>/sbin/ipfw -f flush
>>/sbin/ipfw add divert 10000 all from any to 1.0.0.0/24 in via rl0
>>
>>/sbin/ipfw add divert 10000 all from 1.0.0.0/24 to any out via rl0
>>
>>/sbin/ipfw add divert natd all from any to 213.27.18.42 via rl0
>>/sbin/ipfw add divert natd all from 1.0.0.0/24 to any out via rl0
>>
>>
>>Перегружаю машину, ipacctd запускается, но не работает. Потом делаю sh /etc/ipfw.conf и
>>все начинает работать. Как бы это исправить или что нужно сделать
>>чтобы после перезагрузки оно само начинало работать?
>>
>>PS. по умолчанию в ядре default to deny.
>
>man rc.conf
>firewall_script="/etc/ipfw.conf"
у меня так:firewall_enable="YES"
firewall_type="/etc/ipfw.conf"думаю эти параметры равносильны. или я не прав?
>>>>>
>>>>>правила не вернно раставлены
>>>>>сначала посчитай, потом транслируй
>>>>
>>>
>>>в общем понял как делать чтобы работало, но хочется чтоб работало по
>>>человечески.. изменил конфиг файрволла чтобы при старте сбрасывались все правила:
>>>
>>>/sbin/ipfw -f flush
>>>/sbin/ipfw add divert 10000 all from any to 1.0.0.0/24 in via rl0
>>>
>>>/sbin/ipfw add divert 10000 all from 1.0.0.0/24 to any out via rl0
>>>
>>>/sbin/ipfw add divert natd all from any to 213.27.18.42 via rl0
>>>/sbin/ipfw add divert natd all from 1.0.0.0/24 to any out via rl0
>>>
>>>
>>>Перегружаю машину, ipacctd запускается, но не работает. Потом делаю sh /etc/ipfw.conf и
>>>все начинает работать. Как бы это исправить или что нужно сделать
>>>чтобы после перезагрузки оно само начинало работать?
>>>
>>>PS. по умолчанию в ядре default to deny.
>>
>>man rc.conf
>>firewall_script="/etc/ipfw.conf"
>
>
>у меня так:
>
>firewall_enable="YES"
>firewall_type="/etc/ipfw.conf"
>
>думаю эти параметры равносильны. или я не прав?ты ман читал?
я тебе уже ответил
>>
>>man rc.conf
>>firewall_script="/etc/ipfw.conf"
>
>
>у меня так:
>
>firewall_enable="YES"
>firewall_type="/etc/ipfw.conf"
>
>думаю эти параметры равносильны. или я не прав?оказалось нет :). спасибо большое за помощь!