Поясню по поводу --ipcache-hostname.
Этот параметр позволяет запоминать соответствие ip и hostname и со 2-го раза задействовать поиск профиля с учетом hostname прямо с самого начала. Включая нулевую фазу.
Но есть нюанс использования этой схемы вместе с autohostlist.
Предположим, у нас имеется такая схема :
–dpi-desync=syndata --hostlist-auto=autolist.txt
syndata будет применяться всегда, потому что профиль auto hostlist приоритетный
–dpi-desync=syndata --hostlist=list.txt
здесь без --ipcache-hostname syndata не будет применяться никогда, потому что на 0 фазе хост неизвестен
–ipcache-hostname --dpi-desync=syndata --hostlist=list.txt
здесь syndata будет применяться с 2 раза, когда будет известно соответствие ip->hostname. соответствие будет храниться --ipcache-lifetime секунд, 2 часа по умолчанию, или до рестарта процесса nfqws. соответствие хранится в RAM, никуда не сохраняется в файлы. Если попадется запрос на тот же IP с другим hostname, до выяснения хоста из содержимого запроса будет так, как будто бы идет обращение к первоначальному хосту со всеми вытекающими следствиями для алгоритма поиска профиля. Как только будет выяснен хост из запроса, произойдет повторный поиск профиля, который может привести к его смене. Хост в кэше будет замещен на последний вариант. Если пойдет опять первый хостнейм, то схема повторится. Это легко может быть , когда сайт использует несколько технических доменов или поддоменов на одном IP адресе. Он может работать нестабильно из-за чехарды разных доменов, конкурирующих на одном IP. Хаотичность может возникнуть так же из-за соответствия одного домена разным IP. Если rutracker.org ресолвится в 10 IP, а static.rutracker.org в те же 10 IP, то тут будет работать закон случая. То так работает, то сяк. Клиент берет рандомный IP для подключения. Так работает load balancing через DNS. Если даже перекрытия по доменам нет, но просто есть 10 IP, в которые ресолвится домен, то оно может срабатывать с 10 раза. Потому что на каждом запросе будет другой IP, и на каждый IP будет своя история со “2-м разом”
Надо понимать ограничения технологии ipcache. Это не взрывная фича, решающая все проблемы. Но пользы от нее может быть больше, чем вреда. Пробуйте, смотрите.
а что делать, если нужно, чтобы syndata работала по автохостлисту только на те домены, которые попадут в лист ? нужно клонировать профиль с автохостлистом
–ipcache-hostname --dpi-desync=syndata --hostlist=autolist.txt --new --hostlist-auto=autolist.txt
пока домена нет в autolist.txt, первый профиль срабатывать не будет. будет срабатывать профиль с автолистом. но поскольку там нет syndata, то она применяться не будет
когда домен попадет в autolist.txt, в следующий раз сработает первый профиль, а в нем и syndata.
дополнительной RAM такое написание не потребует, потому что листы хранятся в RAM только единожды, а из профилей на них идут ссылки. листы идентифицируются по типу (hostlist,ipset) и имени файла. внесение изменений в лист в RAM автоматически меняет его для всех профилей, потому что по сути это один лист в одном месте в памяти
вариант со стандартным листом из скриптов запуска :
NFQWS_OPT="--ipcache-hostname --dpi-desync=syndata <HOSTLIST_NOAUTO> --new <HOSTLIST>"
MODE_FILTER=autohostlist
При смене MODE_FILTER на hostlist такая схема будет избыточна и только тратить лишний ресурс cpu на повторную проверку листов без какого-либо смысла.
параметр --ipcache-hostname глобален и не относится к профилю. где его писать значения не имеет