Собственно проблема вот в чем:
FreeBSD7, в качестве фаервола PF. Поднят OpenVPN на tun1 интерфейсе. Естественно tun1 учавствует в правилах PF. Но получается вот что - при загрузке PF (он естественно стартует одним из первых) он не загружает файл с правилами, т.к. не находит, указанный там tun1. А tun1 создается позже, автоматом, при старте OpenVPN.
Думаю самым правильным будет создание tun1 при загрузке. Но как?
Стоит FreeBSD6.2+pf+OpenVPN - при перезагрузке пф стартует перед впн, в правилах присутствует tun0 - все работает.
на таком правиле:
pass in quick on $if_vpn from 192.168.1.0/24 to $if_vpn
правило разворачивается в:
pass in quick on tun1 inet from 192.168.0.0/16 to 192.168.2.1 flags S/SA keep stateВ консоль выдает:
Jul 23 19:56:29 server kernel: /etc/pf.conf:425:
Jul 23 19:56:29 server kernel: could not parse host specification
Jul 23 19:56:29 server kernel:
Jul 23 19:56:29 server kernel: pfctl:
Jul 23 19:56:29 server kernel: Syntax error in config file: pf rules not loadedХотя, подумав, пришел к выводу - созданием tun интерфейса проблему не решить - IP адрес ему будет присвоен только после запуска OpenVPN. Пожалуй придется отказаться в правилах от задания IP адреса VPN через имя интерфейса и задавать вручную...
Похоже на то. У меня в правилах нигде не фигурирует ип. Гугл подсказал, что проблема существующая.
Есть второй сервер - выполняет схожую роль. Там, я предпочел использовать ipfw, и правила были запущены раньше чем были созданы интерфейсы - все прошло на ура! :)
Я решил эту проблему, запуская через cron скрипт, который проверяет наличие линка, если нужно, убивает tun0 и снова его создает и, заодно, заставляет pf перечитать кофигурацию.
Конфига на pf два. Один, по умолчанию, "пустой". Второй - рабочий.