[Comm] Openvpn

Nikolay A. Fetisov naf на naf.net.ru
Сб Фев 2 16:37:10 MSK 2013


Здравствуйте!

В Сб, 02/02/2013 в 08:52 +0400, Vladimir Karpinsky пишет:
> 31.01.2013 0:04, Nikolay A. Fetisov пишет:
> 
> > Offtopic: chroot и работу от псевдо-пользователя _действительно_ надо
> > было отключать в /etc/sysconfig/openvpn ?
> 
> А оно отключено? ...

В /etc/sysconfig/openvpn из пакета присутствуют строки
CHROOT=yes
OPENVPNUSER=openvpn
OPENVPNGROUP=openvpn

При их наличии init-скрипт запускает OpenVPN с ключами командной строки
"--user openvpn --group openvpn --persist-tun --persist-key
--chroot /var/lib/openvpn"

У Вас этого не наблюдается - соответственно, в /etc/sysconfig/openvpn
они отключены.
А есть ли соответствующие параметры в файле конфигурации - надо смотреть
отдельно.

...
> > Итого:
> > - есть две конфигурации, в /etc/net и в /etc/openvpn/ ;
> 
> Спасибо за подробный разбор. Теперь ситуация более-менее понятна. 

Было бы.

> По всей видимости одна конфигурация создана через альтератор, а вторая --- руками 
> по какому-то описанию, найденному в сети. 

Вообще-то, есть /usr/share/doc/openvpn-*/README* .

> Есть ли преимущества у какого-нибудь способа запуска?

Не скажу - я не пользуюсь ни конфигураций через etcnet, ни альтератором
в целом.

Запуск через init-скрипт - исторически первый появившийся и де-факто
стандартный. Зато конфигурация через etcnet поддерживается альтератором.

Через init-скрипт по-умолчанию OpenVPN запускается в chroot, через
etcnet, _судя по приведённому Вами файлу конфигурации_ - нет.

Как я понимаю, при наличии нескольких каналов OpenVPN в etcnet под
каждый надо создавать отдельный интерфейс - вне зависимости от того,
запускаются они все вместе, или выборочно. Через init-скрипт можно 
иметь конфигурации, не привязанные к именам интерфейсов (т.е. иметь в 
файле конфигурации просто 'dev tun', а не 'dev tunN') - что для
эпизодически используемых вручную запускаемых подключений может
упростить конфигурацию iptables.

При обновлении пакета сервис автоматически перезапустится - каналы,
поднятые etcnet, перезапускаться не будут и продолжат работать на
исполняемом коде старой версии пакета.

Так что, выбирать Вам.

Кстати, как минимум для клиентов есть и ещё один способ - Network
Manager. Со своим собственным способом хранения конфигурации и запуска
openvpn.

> ...
> Пытаюсь для начала свести конфигурации к единообразности по сертификатам.
> ...

На самом деле, зависит от того, как (чем) создаются сертификаты.
В целом:
- должен быть центр сертификации (Certification Authority) - его
  сертификат (или цепочка для SubCA) указывается в параметре ca;
- для сервера должен быть ключ и серверный сертификат, подписанный CA - 
  в key и cert в файле конфигурации сервера соответственно;
- для клиента должен быть ключ и клиентский сертификат, подписанный CA -
  в key и cert в файле конфигурации клиента соответственно;
- сертификаты CA, сервера и клиента должны быть действующими.

Т.е., сертификат CA на сервере должен быть тот же, что и на клиентах,
сертификат сервера должен быть подписан этим CA, и сертификаты клиентов
также должны быть подписаны тем же самым CA.

Опционально, на сервере в каталоге, указанном в ccd, _может_ быть файл
с именем, совпадающим с CN сертификата клиента - тогда клиенту будет
дополнительно при подключении передана конфигурация из такого файла.

Опционально, при задании на сервере параметра ccd-exclusive, файл в ccd
_обязан_ быть - иначе соединение с клиентом не будет установлено даже в
том случае, если сертификат у клиента правильный.


Вариант, когда в двух разных конфигурациях key и cert одинаковые, а
ca разный - какой-то очень подозрительный. Т.е., такое может и работать
(например, сертификат CA помещён внутрь cert, и отдельно указанный ca не
используется; или cert самоподписанный, и им же подписаны сертификаты
клиентов), но выглядит оно как-то странно.

-- 
С уважением,
Николай Фетисов



Подробная информация о списке рассылки community