Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

Настройка OpenVPN Client-Config-Dir (CCD): статические IP и маршруты

Обновлено: 25.08.2026  ·  Официальная база знаний
  • Клиенты OpenVPN получают случайные IP-адреса из пула при каждом новом подключении.
  • Центральный сервер не видит локальную подсеть за подключенным OpenVPN-клиентом (Site-to-Site режим).
  • Ошибка в логах сервера: MULTI: no route to receive address from client.
  • Игнорирование персональных конфигураций из каталога client-config-dir из-за несовпадения Common Name (CN).

1. Архитектура механизма Client-Config-Dir (CCD)

Механизм CCD позволяет серверу OpenVPN при аутентификации клиента считывать файл конфигурации, имя которого в точности совпадает с Common Name (CN) сертификата клиента. Это позволяет передавать индивидуальные статические IP, персональные маршруты (push route) и регистрировать подсети филиалов внутри виртуального маршрутизатора OpenVPN (директива iroute).

2. Настройка серверной части (/etc/openvpn/server.conf)

# Включение каталога индивидуальных настроек клиентов
client-config-dir /etc/openvpn/ccd

# Базовая сеть туннеля
server 10.8.0.0 255.255.255.0
topology subnet

# Регистрация маршрута к подсети филиала в таблице ядра сервера
route 192.168.30.0 255.255.255.0

3. Создание персонального файла клиента в каталоге CCD

Создайте файл /etc/openvpn/ccd/branch-office-spb (имя файла должно строго совпадать с CN сертификата):

# 1. Назначение фиксированного IP клиенту в топологии subnet
ifconfig-push 10.8.0.50 255.255.255.0

# 2. Сообщение внутреннему роутеру OpenVPN, что подсеть 192.168.30.0/24 находится за этим клиентом
iroute 192.168.30.0 255.255.255.0

# 3. Передача индивидуальных маршрутов только этому клиенту
push "route 172.16.0.0 255.255.0.0"
push "dhcp-option DNS 10.8.0.1"

4. Настройка прав доступа

chmod 750 /etc/openvpn/ccd
chmod 640 /etc/openvpn/ccd/*
chown -R root:openvpn /etc/openvpn/ccd

5. Включение форвардинга трафика в ядре сервера

# Активация IP Forwarding
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-openvpn-forward.conf
sysctl --system

# Разрешение транзитного трафика в iptables
iptables -A FORWARD -s 10.8.0.0/24 -d 192.168.30.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.30.0/24 -d 10.8.0.0/24 -j ACCEPT
Практический опыт инженера: Если вы настраиваете Site-to-Site туннель между филиалами, всегда указывайте обе директивы: route в server.conf (для ядра Linux) и iroute в файле CCD (для внутреннего диспетчера OpenVPN). Без одной из них трафик ходить не будет.

Частые вопросы (FAQ)

В чем разница между директивами 'route' и 'iroute'?

Директива 'route' добавляет маршрут в таблицу маршрутизации самой операционной системы Linux. Директива 'iroute' (Internal Route) регистрирует маршрут во внутренней таблице демона OpenVPN, чтобы он знал, какому именно подключенному клиенту адресовать этот пакет.

Почему настройки из файла CCD не применяются к клиенту?

Проверьте CN сертификата клиента через openssl x509 -in client.crt -noout -subject. Имя файла в каталоге ccd должно точно совпадать со значением CN с учетом регистра символов.

Какую топологию сети следует использовать в modern OpenVPN?

Всегда используйте 'topology subnet'. Устаревшая топология 'net30' выделяет виртуальные подсети по 4 адреса на каждого клиента и сложна в расчете статических IP.

Можно ли полностью запретить клиенту доступ в интернет через CCD?

Да, в файле CCD можно переопределить опцию redirect-gateway, убрав push дефолтного шлюза, или применить специфические правила iptables для IP-адреса данного клиента.