Openbsd - russian - pfctl -ef після кожної перезавантаження

openbsd 4.5 з усіма патчами з errata

Проблема: після кожного ребута необхідно вручну чіплятися
по ssh і довбати pfctl -ef /etc/pf.conf, інакше NAT не працює,
і пакети між інтерфейс не Рауса.

Ніхто не стикався з подібним? По налаштуваннях все прописано
коректно ніби як. І сам по собі pf працює як треба
(NAT / роутинг і тп). Уж, по крайней мере, pf наказано стартувати,
і права на pf.conf коректні, і помилок в конфіги немає. читав
десь, що Перезбірка ядра з відключенням ipv6 руйнує роботу pf,
але це не мій випадок (ipv6 я не чіпав). Подробиці нижче. Дякуємо.

# Diff ./GENERIC ./MYCONF
13c13
---
> Include "../../../conf/MYCONF"
34c34
<#option NTFS # Experimental NTFS support
---
> Option NTFS # Experimental NTFS support

# Diff. /../../conf/GENERIC. /../../conf/MYCONF; echo $?
0

# Ls -l /etc/pf.conf
-rw ------- 1 root wheel тисяча дев'ятсот вісімдесят дев'ять Sep 30 23:29 /etc/pf.conf

# Cat /etc/rc.conf | grep pf
ospfd_flags = NO # for normal use: ""
ospf6d_flags = NO # for normal use: ""
pf = NO # Packet filter / NAT
pf_rules = / etc / pf.conf # Packet filter rules file
pflogd_flags = # add more flags, ie. "-s 256"

# Cat /etc/rc.conf.local | grep pf
pf = YES

# Pfctl -nf /etc/pf.conf; echo $?
0

після ручного старту pfctl -ef /etc/pf.conf все працює.

НЕ клацати дзьобом під час завантаження і подивитися, чому pfctl
відмовився схаває pf.conf на той момент.

або, перечитати його вдумливо, оглядаючись на тему dns імен (під час
старту на момент pfctl майже завжди named ще не одуплён), всяких
tun'ов (яких ще тупо немає на момент pfctl) і так далі.

pfctl -ef в хвості rc.local. неелегантно.
курити pf.conf до просвітління, чому на недодуплённой системі pfctl
може порахувати, що там syntax error'и

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

In reply to this post by draft-3


>
> # Ls -l /etc/pf.conf
> -rw ------- 1 root wheel один тисяча дев'ятсот вісімдесят дев'ять Sep 30 23:29 /etc/pf.conf
>
> # Cat /etc/rc.conf | grep pf
> Ospfd_flags = NO # for normal use: ""
> Ospf6d_flags = NO # for normal use: ""
> Pf = NO # Packet filter / NAT
^^ тут дожно бути YES
> Pf_rules = / etc / pf.conf # Packet filter rules file
> Pflogd_flags = # add more flags, ie. "-s 256"
>
> # Cat /etc/rc.conf.local | grep pf
> Pf = YES
а rc.conf.local для іншого служить
>
--
динар Талипов

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження


>> # ls -l /etc/pf.conf
>> -rw ------- 1 root wheel 1989 Sep 30 23:29 /etc/pf.conf
>> # cat /etc/rc.conf | grep pf
>> ospfd_flags = NO # for normal use: ""
>> ospf6d_flags = NO # for normal use: ""
>> pf = NO # Packet filter / NAT
> ^^ тут дожно бути YES
>> pf_rules = / etc / pf.conf # Packet filter rules file
>> pflogd_flags = # add more flags, ie. "-s 256"
>> # cat /etc/rc.conf.local | grep pf
>> pf = YES
> А rc.conf.local для іншого служить

та НУ?
і для чого, тоді?

я вже чёрте-скільки часу в rc.conf тільки дивлюся, а весь свій
концентратом скидаю в rc.conf.local

найвеселіше в тому, що від зміни місця дислокації pf = YES результат
в нашому випадку ніхрена не зміниться.

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

In reply to this post by Dinar Talypov

Dinar Talypov пише:

^^^ не повинно, тому що rc.conf не редагується.
>> pf_rules = / etc / pf.conf # Packet filter rules file
>> pflogd_flags = # add more flags, ie. "-s 256"
>>
>> # cat /etc/rc.conf.local | grep pf
>> pf = YES
>>
> А rc.conf.local для іншого служить
>
Все вірно прописано в rc.conf.local.

Можна подивитися набір правил pf.conf?

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

In reply to this post by draft-3

думаю, Динара могли збентежити наступні рядки man rc.conf:

It is advisable to leave the /etc/rc.conf file untouched, and instead
create and edit a new /etc/rc.conf.local file. Variables set in this
file will override variables previously set in /etc/rc.conf.

ось тільки "variables set in this.", як показує практика, не
означає, що в .локал можна Сува тільки змінні -
булеві ес / ноу теж. по кр. міру, ні разу не страждав від того, що
включаю через rc.conf.local YES / NO

Igor Grabin wrote:

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

In reply to this post by draft-3

Igor Grabin wrote:

да все б добре. тільки сервер без консолі варто: - [
> Або, перечитати його вдумливо, оглядаючись на тему dns імен (під час
> Старту на момент pfctl майже завжди named ще не одуплён), всяких
> Tun'ов (яких ще тупо немає на момент pfctl) і так далі.
>
ось це вже практично в точку.
в правилах фігурує як тунель, так і ДНС-форвардери і
доменні імена, так що практично напевно, що
проблема в тому, що ще не піднято інет (через тунель - АДСЛ)

спасибі за наводку!
> Possible solutions:
>
підійдемо з іншого боку. як _ізящно_ розрулити проблему?
НЕ витончених варіантів багато - в тому числі, стартувати пф після
підняття інету. ( "Pf = NO" + "pfctl -e") але це як би. вже точно не
є правильно

як варіант, відмовитися від ДНС-імен в правилах, при цьому не руйнуватиме
pfctl через неможливість їх резолвнуть, але в свою чергу це створює
інші незручності. та й потім, від tun-а в правилах вже точно не
відмовитися.
(Який теж піднімається значно пізніше).
> Pfctl -ef в хвості rc.local. неелегантно.
> Курити pf.conf до просвітління, чому на недодуплённой системі pfctl
>
я правильно зрозумів, що pfctl відмовляється приймати правила не стільки
тому,
що не може, припустимо, резолвнуть ім'я, скільки через те, що на цьому
місці натикається
на підсумкову помилку в синтаксисі.
> Може порахувати, що там syntax error'и

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

тему з dns іменами я зазвичай розрулював за допомогою написання правил на
таблиці, а заповнення самих таблиць - вже окремим скриптом і потім.

> Я правильно зрозумів, що pfctl відмовляється приймати правила не стільки
> Тому,
> Що не може, припустимо, резолвнуть ім'я, скільки через те, що на цьому
> Місці натикається
> На підсумкову помилку в синтаксисі.
иии. одне жорстко слід за іншим. або є креатив по частині того,
як ці події можна відв'язати один від одного. -)

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

Igor Grabin wrote:

ммм, ну ось iptables ніби як правило, імена в якому не може
резолвнуть, просто пропускає. pf, наскільки я пам'ятаю, при зверненні
вручну теж якось на синтаксис не скаржився, якщо не міг щось знайти.
ніби як просто пропускав правило.

може, я не стикався просто.


в загальному, все ясно. Дякую за участь.

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

In reply to this post by draft-3

1. а "-e" -то навіщо.

Якщо в rc.conf * виходить pf = YES, то PF і так має бути заенаблен.

Якщо ж він не дозволений після завантаження, потрібно розбиратися з / etc / rc *
на предмет того що вбито (наприклад включення rc.conf.local в
/etc/rc.conf)

2. Покажіть pfctl -sr на момент після завантаження, якщо він порожній, це
ще пунктик на користь пункту 1.
При помилку в pf.conf повинен завантажуватися рулесет пропускає
тільки ssh і ще деякі дрібниці.

4. Ви впевнені що / etc / rc відпрацював до кінця. Я якось ловив запуск
програми в foreground (без "") в rc.local. Правда тоді у мене
(А точніше у брата по розуму), в результаті не запускався cron.

Іншими словами - налагоджувати і трасуючими стартові скрипти, проблема
десь в них або в момент їх виконання.

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

In reply to this post by draft-3


Я ніколи не використовую в PF DNS імена. Завжди є ризик, що щось не
разрезолвітся, навіть якщо DNS доступний. Я роблю макроси типу
host_domain_com = "IP" і використовую їх в правилах. Згоден що це не зручно,
зате надійно.
Є думка зробити парсілку конфіга, яка буде ні перетворювати
імена і вставляти замість них IP. Ось такий оброблений конфиг вже
викладати в /etc/pf.conf. Для мене це зручно, так як конфіги до різних
фаєрвол я все одно генеруючи mak'ом і вихідні темплейти зберігаю в cvs.
Зробити такий обробник не складно, але може бути хтось підкаже вже
готову утиліту.

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

In reply to this post by draft-3

останній рядок в rc.local
pfctl -f /etc/conf/pf.conf> /var/log/pf.start.log 2> 1


>> або, перечитати його вдумливо, оглядаючись на тему dns імен (під час
>> старту на момент pfctl майже завжди named ще не одуплён), всяких
>> tun'ов (яких ще тупо немає на момент pfctl) і так далі.
>>
> Ось це вже практично в точку.
> В правилах фігурує як тунель, так і ДНС-форвардери і
> Доменні імена, так що практично напевно, що
> Проблема в тому, що ще не піднято інет (через тунель - АДСЛ)
>
> Спасибі за наводку!
>> possible solutions:
>>
> Підійдемо з іншого боку. як _ізящно_ розрулити проблему?
»Не витончених варіантів багато - в тому числі, стартувати пф після
> Підняття інету. ( "Pf = NO" + "pfctl -e") але це як би. вже точно не
> Є правильно
>
> Як варіант, відмовитися від ДНС-імен в правилах, при цьому не руйнуватиме
> Pfctl через неможливість їх резолвнуть, але в свою чергу це створює
> Інші незручності. та й потім, від tun-а в правилах вже точно не
> Відмовитися.
> (Який теж піднімається значно пізніше).
>> pfctl -ef в хвості rc.local. неелегантно.
>> курити pf.conf до просвітління, чому на недодуплённой системі pfctl
>>
> Я правильно зрозумів, що pfctl відмовляється приймати правила не стільки
> Тому,
> Що не може, припустимо, резолвнуть ім'я, скільки через те, що на цьому
> Місці натикається
> На підсумкову помилку в синтаксисі.


--
З повагою, Улюбленець Андрій Олексійович

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

Andrey Lyubimets wrote:

ну, тоді вже не в rc.local. а десь в cat / etc / rc | grep -n pfctl
а то ж з rc.local він напевно відпрацює нормально.

Open this post in threaded view

Re: pfctl -ef після кожної перезавантаження

у мене не відпрацьовував, саме так і ловив

--
З повагою, Улюбленець Андрій Олексійович