Alias тип host(s)
-
Добрый день.
Сегодня столкнулся с таким.
Есть Alias типа host(s). До сегодня с ним было все нормально.
В него включены несколько dns-имен.
DNS Resolver работает нормально.
Но если смотреть Diagnostics\Tables, то в таблице соответствующей этому alias, отсутствует по крайней мере одна запись с определенным IP.
Добавил в этот Alias строку с нужным IP.
В Diagnostics\Tables для этого Alias строка с нужным IP тоже не добавилась.Как заставить обновляться данный Alias?
И вообще в чем причина. -
@lucas1 Здр
- в консоли наберите
pfctl -t имя_таблицы -T show
Проверьте , есть ли нужный ip в этой таблице
если ip нет, то - в консоли
pfctl -t имя_таблицы -T add ip_адрес - см пункт 1
если результат нулевой , то , скорее всего, это какой-то сбой pf , перегрузите устройство
- в консоли наберите
-
Спасибо.
Вручную через pfctl Alias и его Table обновились. -
-
Все-таки нет способа reload таблицы, если это таблица не связана с внешним файлом?
-
Как лучше reload сам PfSense? Не само устройство, а набор правил и т.п.
-
-
@lucas1 Здр
Не совсем понял , что Вы хотите сделать ?
При любом обновлении правил PFSense удаляет содержимое всех таблиц и создает их заново .
Если Вы что-то хотите добавлять вручную после пересоздания таблиц , то можно это сделать следующим образом
устанавливаете пакет ShellcmdИ , используя этот пакет , создаете команду , которая будет выполняться при каждой перезагрузке правил файрвола
например ,
/sbin/pfctl -t имя_таблицы -T add ip_адрес -
@Konstanti
Я про вчерашнее.
Хотел сказать, что если тип alias (table) Url table (IPs) , то можно загрузить связанный с таблицей файл в DiagnosticsTables нажать Update. И с содержимым таблицы все нормально.
А в случае если alias (table) тип host(s) не связан с внешним файлом , то кроме указанного вами вчера способа редактирования содержимого таблицы, в текущем ruleset ничего не меняется.
Т.е. получается PfSense при обновлении всегда удаляет содержимое всех таблиц и создает их заново, но не всегда с правильным содержимым.
Или создал тестовый alias IPs, нажал Empty и он до сих пор пустой.
Второй вопрос связан с первым. Status \ Filter Reload, pfctl -f(наверно врядли) или как еще? -
@lucas1
Поясните пожалуйста на примере , что значит "не всегда с правильным содержимым"
И второй вопрос - зачем лишний раз перезагружать правила (при условии , что с содержимым таблиц можно работать динамически) ? -
Добрый
@lucas1Что-то похожее было и у меня.
Накостылил так:- Установил пакет Cron
- Добавил в Cron строку:
*/5 * * * * root /usr/bin/killall -9 filterdns ; /bin/sleep 5 ; /usr/local/sbin/filterdns -p /var/run/filterdns.pid -i 300 -c /var/etc/filterdns.conf -d 1
Зы. С NTP тоже иногда что-то нехорошее происходит. Добавил тамже в Cron-е:
*/15 * * * * root /usr/bin/killall -9 ntpd ; /bin/sleep 5 ; /usr/local/sbin/ntpd -g -c /var/etc/ntpd.conf -p /var/run/ntpd.pid -
@Konstanti
Так я описал ситуацию в первом сообщении темы.
Если смотреть сам Alias, то в нем 10 dns-имен и ip-адресов.
Если смотреть Diagnostics\Tables Alias - то в таблице 5 записей. И в результате на одном из серверов не было интернета (его ip отсутствовал в самой таблице). Но до этого естественно был. И был Интернет.
Ваш совет pfctl -t имя_таблицы -T add ip_адрес помог - 1/1 addresses added.
Но причина в чем?
По второму вопросу. как reload Pfsense ruleset и всего остального без перезагрузки устройства. -
Попробуйте схему с Кроном. У меня была ситуация подобная вашей.
Потому как "pfctl -t имя_таблицы -T add ip_адрес" поможет только ЕДИНОЖДЫ - при добавлении адреса в Алиас. Если ip хоста из Алиаса изменится - помжет только ручное передергивание dns resolver-а. Или схема с Кроном. Пробуйте.
Зы. В настройках пф указано передергивание dns resolver каЖные 5 минут для разрешения адресов в Алиасах. Но, видимо, оно как-то некорректно отрабатывает (
-
@lucas1
попробуйте так/usr/local/sbin/pfSctl -c 'filter reload'
в результате в логах должна появиться вот такая запись
Dec 27 17:24:39 check_reload_status Reloading filter -
@werter
Речь не о dns resolver. Добавление ip-адреса в Alias то-же не работает.
создал тестовый alias IPs, нажал Empty и он до сих пор пустой - дополнительный вопрос.
/var/etc/filterdns.conf - что за файл? -
@Konstanti
в Status\System Logs\System\General? -
@Konstanti
команда выполнилась. Но содержимое таблицы не изменилось. -
@lucas1
А почему содержимое таблицы должно было измениться ???
В таблицу попадает то , что в PF подают на вход. Дали 5 ip , он добавил 5, дали 10 , он добавит 10 .
Посмотрите файл
/var/tmp/rules.debug
и увидите то содержимое таблицы, которое получает на входе PF.По-моему, тут проблема не в PF. У меня лично есть подозрение , что где-то скрипт "ломается" .
Вы же не показываете "живой пример" проблемы ( если не хотите тут , напишите в личку).
Не видя настроек алиаса сложно что-либо говорить -
@Konstanti
Так меня интересует как раз содержимое таблицы на основе содержимого созданного/измененного Alias. Возможно alias действительно "сломался", когда я добавил в него как-бы вложенный alias:
был список IP и DNS имен. Я добавил в этот alias другой alias из трех DNS-имен.
Но сейчас я все вернул назад.
И есть проблема и по другому alias всего из 2 IP записей.
И это есть - создал тестовый alias IPs, нажал Empty и он до сих пор пустой.
Тогда вопрос в том как изменить /var/tmp/rules.debug.
ну не весь и не вручную. -
@lucas1
Никак. Это файл , который создается самим PFSense , каждый раз когда перезагружаются правила , и затем следует перезапуск PF.
Если некорректно создаются данные для этого файла , это значит , что или PFSense допускает ошибку при обработке алиаса , или что-то Вы неверно сделали.
Повторюсь , не видя алиаса и результатов работы PFSense ( куска файла rules.debug) сложно что-либо советовать -
@Konstanti
Взял перезагрузил, все нормально. -
@lucas1
Та не.
На примере тестового Alias: Tesing тип Host(s).
server1.domain.com, server2.domain.com, X.Y.12.5Добавил третье значение X.Y.12.5.
С PfSense все доступно: ping, nslookup.
Diagnostics\Tables
No entries exist in this table. -
@lucas1
Посмотрел /tmp/rules.debugtable <1C_Servers> persist
1C_Servers = "<1C_Servers>"
В DiagnosticsTables по этой таблице все нормально: 2 entries.
Но в /tmp/rules.debug пусто.table <ERP_Servers> { X.X.12.44 X.X.12.46 X.X.12.32 }
ERP_Servers = "<ERP_Servers>"
В DiagnosticsTables ее вообше нет.table <Servers_Internet> persist
Servers_Internet = "<Servers_Internet>
Но в /tmp/rules.debug пусто.
В DiagnosticsTables нет 2 entries из 9.Это что сразу заметил.
Откуда взялось persist по некоторым таблицам?
получается несоответствие (по некоторым таблицам) определению таблицы (alias) содержимому в /tmp/rules.debug.