перекопал все, начиная от переустановки freeradiusd, заканчивая назначением каждому юзеру выделенного IP. в таком случае все работало, однако на циске всего 150 vpn туннелей, а юзеров гораздно больше. по крайней мере хватило времени на разбирательство.
путем отката на конфиги из ежедневных бэкапов нашел рабочуюю конфигурацию. сравнил с текущей, и обнаружил такую штуку:
- были созданы 2 NAS-а, один рабочий, второй для экспериментов, каждый со своим пулом адресов
- несколько тарифных планов были привязаны к обоим NAS-ам
- потом тестовый NAS был удален
- с этого момента начались глюки
вобщем рационализаторское предложение ;)
перед удалением какого либо элемента проводить проверку на предмет использования этого элемента в других местах. можно просто выводить сообщение о невозможности операции, либо дать список этих других элементов, которые используют удаляемый (например, при удалении тарифного плана предупреждать, что есть много юзеров, которые его используют), либо на автомате производить дерегистрацию.
даже если моя проблема не связана с этим фактом, все равн остается вероятность, что индекс удаленного элемента впоследствии займет другой элемент, к которому привяжутся ранее его использующие элементы (например, при удалении dial-up NAS-а и добавление другого NAS-а на более скоростной линии юзеры со старыми тарифами полезут на высокие скорости).
p.s. все примеры взяты просто от балды ;)