Alias тип host(s)



  • Добрый день.

    Сегодня столкнулся с таким.

    Есть Alias типа host(s). До сегодня с ним было все нормально.
    В него включены несколько dns-имен.
    DNS Resolver работает нормально.
    Но если смотреть Diagnostics\Tables, то в таблице соответствующей этому alias, отсутствует по крайней мере одна запись с определенным IP.
    Добавил в этот Alias строку с нужным IP.
    В Diagnostics\Tables для этого Alias строка с нужным IP тоже не добавилась.

    Как заставить обновляться данный Alias?
    И вообще в чем причина.



  • @lucas1 Здр

    1. в консоли наберите
      pfctl -t имя_таблицы -T show
      Проверьте , есть ли нужный ip в этой таблице
      если ip нет, то
    2. в консоли
      pfctl -t имя_таблицы -T add ip_адрес
    3. см пункт 1
      если результат нулевой , то , скорее всего, это какой-то сбой pf , перегрузите устройство


  • Спасибо.
    Вручную через pfctl Alias и его Table обновились.



  • @Konstanti

    1. Все-таки нет способа reload таблицы, если это таблица не связана с внешним файлом?

    2. Как лучше reload сам PfSense? Не само устройство, а набор правил и т.п.



  • @lucas1 Здр
    Не совсем понял , что Вы хотите сделать ?
    При любом обновлении правил PFSense удаляет содержимое всех таблиц и создает их заново .
    Если Вы что-то хотите добавлять вручную после пересоздания таблиц , то можно это сделать следующим образом
    устанавливаете пакет Shellcmd

    И , используя этот пакет , создаете команду , которая будет выполняться при каждой перезагрузке правил файрвола
    например ,
    /sbin/pfctl -t имя_таблицы -T add ip_адрес

    fee69e23-bf99-4ba1-8cfa-0b8e05d978e7-image.png



  • @Konstanti
    Я про вчерашнее.
    Хотел сказать, что если тип alias (table) Url table (IPs) , то можно загрузить связанный с таблицей файл в DiagnosticsTables нажать Update. И с содержимым таблицы все нормально.
    А в случае если alias (table) тип host(s) не связан с внешним файлом , то кроме указанного вами вчера способа редактирования содержимого таблицы, в текущем ruleset ничего не меняется.
    Т.е. получается PfSense при обновлении всегда удаляет содержимое всех таблиц и создает их заново, но не всегда с правильным содержимым.
    Или создал тестовый alias IPs, нажал Empty и он до сих пор пустой.
    Второй вопрос связан с первым. Status \ Filter Reload, pfctl -f(наверно врядли) или как еще?



  • @lucas1
    Поясните пожалуйста на примере , что значит "не всегда с правильным содержимым"
    И второй вопрос - зачем лишний раз перезагружать правила (при условии , что с содержимым таблиц можно работать динамически) ?



  • Добрый
    @lucas1

    Что-то похожее было и у меня.
    Накостылил так:

    1. Установил пакет Cron
    2. Добавил в 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 и всего остального без перезагрузки устройства.



  • @lucas1

    Попробуйте схему с Кроном. У меня была ситуация подобная вашей.

    Потому как "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.debug

    table <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.



  • @lucas1
    Чтобы увидеть точно , что у Вас происходит в системе , я бы рекомендовал все-таки пользоваться консолью ( красивая обертка - это конечно здорово , но не всегда корректно)
    Итак ,

    1. чтобы увидеть , про какие таблицы знает PF
      pfctl -sT
    2. чтобы увидеть содержимое таблиц
      pfctl -t имя_таблицы -Ts
    3. попробуйте настроить PFSense так ,чтобы он использовал публичный DNS сервер (это надо для того ,чтобы не использовать Resolver при построении таблиц)
    4. необязательный пункт ( напишите мне в личку имена доменов и ip адрес сервера , чтобы на стенде можно было смоделировать ситуацию)

    P.S. persist добавляется в том случае, если при построении файла rules.debug отсутствуют входные данные для таблицы.



  • @Konstanti

    1. pfctl -sT - вывод этой команды полностью соответствует списку таблиц из Diagnostics\Tables.
      в частности table <ERP_Servers> в выводе нет.
      И так ее нет:
      pfctl -t ERP_Servers -T show
      pfctl: Table does not exist.

    2. pfctl -t имя_таблицы -Ts - выборочно вывод по таблицам полностью соответствует выводу в Diagnostics\Tables.

    3. Без DNS Resolver не будет работать PfBlockerNG DNSBL. И проблема есть и просто по IPs в Alias.



  • @lucas1
    Утилита pfctl имеет опцию проверки синтаксиса файла конфигурации PF. Попробуйте запустить её на предмет ошибок. Должна быть причина, по которой таблица не создаётся из файла



  • @lucas1

    Скрин Alias покажите.



  • @werter
    Насчет пустых таблиц. Если alias не участвует в правиле Firewall его таблица будет пустой.

    На англоязычном форуме это решают уже давно.
    И кроме указанного вами решения Cron другого нету.



  • @lucas1
    Решение с кроном - рабочее. Пользую его >2-х лет. Может в будущих релизах и пофиксят.



  • @werter

    В журнале DNS Resolver:

    unbound 72676:1 notice: sendto failed: No buffer space available

    Эти записи повторяются.



  • @lucas1
    Версия пф свежая?

    unbound 72676:1 notice: sendto failed: No buffer space available --> google



  • @werter
    Все свежее. Вчера завезли.

    Вообщем из личных наблюдений.

    Если host еще не участвует в каком-то alias, то с ним все нормально. И таблицей тоже.
    Если host входит в несколько aliases, то нормальная таблица по одному только alias.



  • @werter Привет
    Судя по исходникам на Github - пофиксили
    Если интересно , скачал исходники , собрал filterdns , могу выслать для тестирования
    По моим наблюдениям , работает как надо

    bb6538cf-c9e5-4afe-8312-6a5b955b08be-image.png

    [2.4.4-RELEASE][admin@pfSense.localdomain]/root: pfctl -t test_alias -Ts
       5.255.255.5
       5.255.255.50
       8.8.8.8
       77.88.55.50
       77.88.55.88
       2a02:6b8:a::a
    [2.4.4-RELEASE][admin@pfSense.localdomain]/root: pfctl -t test_alias2 -Ts
       5.255.255.5
       5.255.255.50
       77.88.55.50
       77.88.55.88
       2a02:6b8:a::a
    
    
    Jan 12 21:27:55 pfSense filterdns: Received signal Hangup(1).
    Jan 12 21:27:55 pfSense filterdns: merge_config: configuration reload
    Jan 12 21:27:55 pfSense filterdns: Copied 3 actions to old
    Jan 12 21:27:55 pfSense filterdns: 	Adding Action: pf table: test_alias host: www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 		Adding host www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 	Adding Action: pf table: test_alias host: 8.8.8.8
    Jan 12 21:27:55 pfSense filterdns: 	Adding Action: pf table: test_alias2 host: www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: Copied 3 actions to new
    Jan 12 21:27:55 pfSense filterdns: Cleaning up action type: pf table: test_alias hostname: 8.8.8.8
    Jan 12 21:27:55 pfSense filterdns: Loaded actions: 1 old and 2 new = 3 total
    Jan 12 21:27:55 pfSense filterdns: Cleaning up previous actions
    Jan 12 21:27:55 pfSense filterdns: Cleaning up action type: pf table: test_alias2 hostname: www.tks.ru
    Jan 12 21:27:55 pfSense filterdns: Cleaning up action type: pf table: test_alias hostname: www.tks.ru
    Jan 12 21:27:55 pfSense filterdns: 	Awaking from the sleep for hostname 8.8.8.8 (1)
    Jan 12 21:27:55 pfSense filterdns: 	Awaking from the sleep for hostname www.tks.ru (1)
    Jan 12 21:27:55 pfSense filterdns: Cleaning up hostname www.tks.ru
    Jan 12 21:27:55 pfSense filterdns: 			removing address 77.221.158.141 from host www.tks.ru
    Jan 12 21:27:55 pfSense filterdns: Stopped 2 old actions
    Jan 12 21:27:55 pfSense filterdns: Creating a new thread for action type: pf table: test_alias2 hostname: www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: Creating a new thread for action type: pf table: test_alias hostname: www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: Creating a new thread for host www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 			adding address 77.88.55.88 for host www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 			adding address 5.255.255.50 for host www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 			adding address 5.255.255.5 for host www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 			adding address 77.88.55.50 for host www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 			adding address 2a02:6b8:a::a for host www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: Change detected on host: www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 	Awaking from the sleep for type: pf table: test_alias hostname: www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 2a02:6b8:a::a
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 77.88.55.50
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 5.255.255.5
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 5.255.255.50
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 77.88.55.88
    Jan 12 21:27:55 pfSense filterdns: 	Updated pf table test_alias host: www.yandex.ru error: 0
    Jan 12 21:27:55 pfSense filterdns: 	Awaking from the sleep for type: pf table: test_alias2 hostname: www.yandex.ru
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 2a02:6b8:a::a
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 77.88.55.50
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 5.255.255.5
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 5.255.255.50
    Jan 12 21:27:55 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 77.88.55.88
    Jan 12 21:27:55 pfSense filterdns: 	Updated pf table test_alias2 host: www.yandex.ru error: 0
    


  • @Konstanti
    Спасибо, но подожду готовое )
    И через время (по умолч - 5 мин) оно автоматом алиасы перечитывает и обновляет? Или только при создании\добавление новых ресурсов в алиас? Проверяли? Именно в этом и есть проблема.



  • @werter

    Jan 14 14:40:40 pfSense filterdns: 	Adding Action: pf table: test_alias host: www.yandex.ru
    Jan 14 14:40:40 pfSense filterdns: 		Adding host www.yandex.ru
    Jan 14 14:40:40 pfSense filterdns: 	Adding Action: pf table: test_alias host: 8.8.8.8
    Jan 14 14:40:40 pfSense filterdns: 		Adding host 8.8.8.8
    Jan 14 14:40:40 pfSense filterdns: 	Adding Action: pf table: test_alias2 host: www.yandex.ru
    Jan 14 14:40:40 pfSense filterdns: Creating a new thread for action type: pf table: test_alias hostname: www.yandex.ru
    Jan 14 14:40:40 pfSense filterdns: Creating a new thread for action type: pf table: test_alias hostname: 8.8.8.8
    Jan 14 14:40:40 pfSense filterdns: Creating a new thread for action type: pf table: test_alias2 hostname: www.yandex.ru
    Jan 14 14:40:40 pfSense filterdns: Creating a new thread for host www.yandex.ru
    Jan 14 14:40:40 pfSense filterdns: Creating a new thread for host 8.8.8.8
    Jan 14 14:40:40 pfSense filterdns: 			adding address 8.8.8.8 for host 8.8.8.8
    Jan 14 14:40:40 pfSense filterdns: Change detected on host: 8.8.8.8
    Jan 14 14:40:40 pfSense filterdns: 	Awaking from the sleep for type: pf table: test_alias hostname: 8.8.8.8
    Jan 14 14:40:40 pfSense filterdns: 		Added pf address, table: test_alias host: 8.8.8.8 address: 8.8.8.8
    Jan 14 14:40:40 pfSense filterdns: 	Updated pf table test_alias host: 8.8.8.8 error: 0
    Jan 14 14:40:41 pfSense filterdns: 			adding address 77.88.55.66 for host www.yandex.ru
    Jan 14 14:40:41 pfSense filterdns: 			adding address 5.255.255.60 for host www.yandex.ru
    Jan 14 14:40:41 pfSense filterdns: 			adding address 5.255.255.70 for host www.yandex.ru
    Jan 14 14:40:41 pfSense filterdns: 			adding address 77.88.55.60 for host www.yandex.ru
    Jan 14 14:40:41 pfSense filterdns: 			adding address 2a02:6b8:a::a for host www.yandex.ru
    Jan 14 14:40:41 pfSense filterdns: Change detected on host: www.yandex.ru
    Jan 14 14:40:41 pfSense filterdns: 	Awaking from the sleep for type: pf table: test_alias hostname: www.yandex.ru
    Jan 14 14:40:41 pfSense filterdns: 	Awaking from the sleep for type: pf table: test_alias2 hostname: www.yandex.ru
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 2a02:6b8:a::a
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 2a02:6b8:a::a
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 77.88.55.60
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 77.88.55.60
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 5.255.255.70
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 5.255.255.70
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 5.255.255.60
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 5.255.255.60
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 77.88.55.66
    Jan 14 14:40:41 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 77.88.55.66
    Jan 14 14:40:41 pfSense filterdns: 	Updated pf table test_alias host: www.yandex.ru error: 0
    Jan 14 14:40:41 pfSense filterdns: 	Updated pf table test_alias2 host: www.yandex.ru error: 0
    Jan 14 14:45:39 pfSense filterdns: 	Awaking from the sleep for hostname www.yandex.ru (2)
    Jan 14 14:45:39 pfSense filterdns: 	Awaking from the sleep for hostname 8.8.8.8 (1)
    Jan 14 14:50:39 pfSense filterdns: 	Awaking from the sleep for hostname 8.8.8.8 (1)
    Jan 14 14:50:39 pfSense filterdns: 	Awaking from the sleep for hostname www.yandex.ru (2)
    Jan 14 14:55:39 pfSense filterdns: 	Awaking from the sleep for hostname www.yandex.ru (2)
    Jan 14 14:55:39 pfSense filterdns: 	Awaking from the sleep for hostname 8.8.8.8 (1)
    Jan 14 15:00:39 pfSense filterdns: 	Awaking from the sleep for hostname www.yandex.ru (2)
    Jan 14 15:00:39 pfSense filterdns: 	Awaking from the sleep for hostname 8.8.8.8 (1)
    Jan 14 15:00:39 pfSense filterdns: 			adding address 77.88.55.70 for host www.yandex.ru
    Jan 14 15:00:39 pfSense filterdns: 			removing address 77.88.55.60 from host www.yandex.ru
    Jan 14 15:00:39 pfSense filterdns: Change detected on host: www.yandex.ru
    Jan 14 15:00:39 pfSense filterdns: 	Awaking from the sleep for type: pf table: test_alias hostname: www.yandex.ru
    Jan 14 15:00:39 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 77.88.55.70
    Jan 14 15:00:39 pfSense filterdns: 		FAILED to remove pf address, table: test_alias host: www.yandex.ru address: 77.88.55.60 error: -1
    Jan 14 15:00:39 pfSense filterdns: 	Updated pf table test_alias host: www.yandex.ru error: -1
    Jan 14 15:00:39 pfSense filterdns: 	Awaking from the sleep for type: pf table: test_alias2 hostname: www.yandex.ru
    Jan 14 15:00:39 pfSense filterdns: 		Added pf address, table: test_alias2 host: www.yandex.ru address: 77.88.55.70
    Jan 14 15:00:39 pfSense filterdns: 		FAILED to remove pf address, table: test_alias2 host: www.yandex.ru address: 77.88.55.60 error: -1
    Jan 14 15:00:39 pfSense filterdns: 	Updated pf table test_alias2 host: www.yandex.ru error: -1
    Jan 14 15:05:39 pfSense filterdns: 	Awaking from the sleep for hostname 8.8.8.8 (1)
    


  • @Konstanti
    Супер. Осталось 2.4.5 дождаться )



  • @werter
    Ну , да )))
    В процессе тестирования вылезла одна ошибка
    Я у себя ее поправил , теперь все работает нормально ,по-моему
    Было

    Jan 14 15:00:39 pfSense filterdns: Change detected on host: www.yandex.ru
    Jan 14 15:00:39 pfSense filterdns: 	Awaking from the sleep for type: pf table: test_alias hostname: www.yandex.ru
    Jan 14 15:00:39 pfSense filterdns: 		Added pf address, table: test_alias host: www.yandex.ru address: 77.88.55.70
    Jan 14 15:00:39 pfSense filterdns: 		FAILED to remove pf address, table: test_alias host: www.yandex.ru address: 77.88.55.60 error: -1
    Jan 14 15:00:39 pfSense filterdns: 	Updated pf table test_alias host: www.yandex.ru error: -1
    

    Стало

    Jan 16 17:37:57 pfSense filterdns: 	Awaking from the sleep for hostname www.netflix.com (2)
    Jan 16 17:37:57 pfSense filterdns: 			adding address 54.84.155.179 for host www.netflix.com
    Jan 16 17:37:57 pfSense filterdns: 			removing address 52.20.168.249 from host www.netflix.com
    Jan 16 17:37:57 pfSense filterdns: 	Updated pf table test_alias host: www.netflix.com error: 0
    

    Те программа отрабатывала нормально , но в логах писала об ошибке


Log in to reply