Динамічні клієнти підключаються й маршрутизуються нормально, але єдиний клієнт із фіксованою адресою взагалі не досягає сервера. У брандмауері нічого не змінювалося, а рядок CCD виглядає правдоподібно. Звичайна причина — другий аргумент, написаний для іншої топології TUN, ніж та, яку використовує сервер. Збій тихий: клієнт піднімається з адресою, сервер приймає з'єднання, але трафік не проходить.

У net30 це поле — адреса партнера; у subnet це маска підмережі. Дві форми є альтернативами, а не послідовністю.

Дві форми поруч

У традиційному розгортанні net30 кожен клієнт володіє блоком /30: адреса мережі, дві придатні адреси та широкомовна адреса. ifconfig-push приймає адресу клієнта й адресу партнера, а партнер — це друга придатна адреса в тому самому блоці, яку використовує серверний бік з'єднання точка-точка.

# net30: client address and its peer
ifconfig-push 10.99.0.6 10.99.0.5
# topology subnet: client address and the pool netmask
ifconfig-push 10.99.0.20 255.255.255.0

За topology subnet клієнт ділить одну підмережу із сервером, і та сама директива приймає адресу й маску підмережі. Власна адреса сервера надходить із директиви server, а не з другого поля. Змішування форм дає клієнта, який вважає, що перебуває в з'єднанні точка-точка, тоді як сервер маршрутизує його як хост підмережі, або навпаки. Тому маску підмережі ніколи не можна поєднувати з net30.

Обидва рядки в блоці — окремі рядки для файлу CCD. Один клієнт отримує рівно один із них.

Прочитайте топологію, яку сервер справді використовує

Читайте робочу конфігурацію, а не типове значення з пакета, бо топологію могли встановити роки тому й скопіювати далі. Шукайте topology subnet або його відсутність, потім перевірте, як рядок server розподіляє адреси. Конфігурація, яка взагалі не згадує топологію, не те саме, що та, яка задає subnet.

Потім прочитайте налаштування, які отримав клієнт. Адреса, маска й партнер, які він повідомляє, підказують, яку інтерпретацію застосував сервер.

Тримайте фіксовану адресу поза динамічним пулом

Фіксована адреса має бути поза динамічним пулом, інакше двом клієнтам може дістатися однакова адреса. За топології subnet nopool у рядку server пригнічує автоматичний пул, а явний діапазон ifconfig-pool визначає, що отримують динамічні клієнти.

dev tun
topology subnet
server 10.99.0.0 255.255.255.0 nopool
ifconfig-pool 10.99.0.100 10.99.0.210 255.255.255.0
client-config-dir /etc/openvpn/ccd

Сервер бере 10.99.0.1 собі, а фіксована адреса клієнта лежить поза діапазоном пулу. Файл CCD називається за чинним ідентифікатором клієнта, а не за іменем файлу профілю, і не має додаткового розширення. Якщо username-as-common-name активний, автентифіковане ім'я користувача є ідентифікатором, який треба зіставити. Два пристрої з одним ідентифікатором ділитимуть і фіксовану адресу, що є проблемою політики, а не маршрутизації.

Перевірте призначення, яке клієнт справді отримав

Перепідключіть потрібний клієнт і підтвердьте, який файл CCD вибрано, перш ніж перевіряти будь-що інше. Потім перевірте адресу, маску або партнера й маршрут назад до сервера. Клієнт, що показує адресу партнера в розгортанні subnet, досі використовує неправильну форму.

Зміна топології зачіпає кожного клієнта й кожне перевизначення, тож ставтеся до неї як до міграції, а не як до ремонту одного клієнта. Виправлення статичного рядка відповідно до вже використовуваної топології зазвичай є меншою зміною. Довідка server-options описує помічник і перевизначення для конкретних клієнтів.

Схожі статті