Стандартная настройка OpenVPN — работа по протоколу udp. Однако бывают случаи, когда нужно перейти на tcp. Например, решением следующей ошибки
TLS Error: TLS key negotiation failed to occur within 60 seconds
стал переход на использование протокола tcp для одного-двух клиентов
А что делать с остальными клиентами? Подключаться к каждому по teamviewer’у для редактирования конфига не вариант. Тогда нужно настроить OpenVPN на работу по двум протоколам. Но стандартная его настройка не позволяет включить два протокола в одном конфиге. Значит нужно сделать два конфига, каждый для своего протокола получив таким образом два рабочих независимых инстанса OpenVPN. Рассмотрим решение на примере Gentoo
Стандартно
Стандартный конфиг (openvpn.conf) сервера прост и выглядит приблизитено так:
local 333.33.3.1 port 1194 proto udp dev tun15 management localhost 7505 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/dkc.crt key /etc/openvpn/keys/dkc.key dh /etc/openvpn/keys/dh.pem crl-verify /etc/openvpn/keys/crl.pem server 192.168.15.0 255.255.255.0 client-config-dir /etc/openvpn/ccd push "dhcp-option DNS 192.168.12.9" push "dhcp-option DNS 192.168.12.10" tls-server tls-auth keys/ta.key 0 tls-timeout 60 auth SHA512 cipher AES-256-CBC keepalive 10 60 comp-lzo max-clients 30 user nobody group nobody persist-key persist-tun status /var/log/openvpn/openvpn-status.log # 0 is silent, except for fatal errors # 4 is reasonable for general usage # 5 and 6 can help to debug connection problems # 9 is extremely verbose log /var/log/openvpn/openvpn.log verb 3
Разделяем конфиги
Содержимое конфига выше оставляем как есть, только переименуем его. Чуть ниже будет понятно почему так нужно
mv openvpn.conf udp.conf
Теперь на его базе создаем конфиг для tcp-протокола
cp udp.conf tcp.conf
И приводим его к следующему виду
local 333.33.3.1 port 1194 proto tcp dev tun16 management localhost 7506 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/dkc.crt key /etc/openvpn/keys/dkc.key dh /etc/openvpn/keys/dh.pem crl-verify /etc/openvpn/keys/crl.pem server 192.168.16.0 255.255.255.0 client-config-dir /etc/openvpn/ccd push "dhcp-option DNS 192.168.12.9" push "dhcp-option DNS 192.168.12.10" tls-server tls-auth keys/ta.key 0 tls-timeout 60 auth SHA512 cipher AES-256-CBC keepalive 10 60 comp-lzo max-clients 30 user nobody group nobody persist-key persist-tun status /var/log/openvpn/openvpn-status.log # 0 is silent, except for fatal errors # 4 is reasonable for general usage # 5 and 6 can help to debug connection problems # 9 is extremely verbose log /var/log/openvpn/openvpn.log verb 3
Я выделил строки, которые нужно было изменить
Запуск
Запуск двух инстансов OpenVPN можно осуществить вручную, но нам нужно, чтоб они запускались сами после перегрузки сервера. В Gentoo это решается очень просто
cd /etc/init.d ln -s openvpn openvpn.udp ln -s openvpn openvpn.tcp
Забираем из автозапуска стандартный openvpn скрипт
rc-update del openvpn
И добавляем свои линки
rc-update add openvpn.udp rc-update add openvpn.tcp
После запуска
rc-service openvpn.udp start rc-service openvpn.tcp start
должны подняться интерфейсы tun15, tun16
Если так произошло, примите мои поздравления и подключайте клиентов

- Системный администратор. В сисадминстве с 2000 года
- Участник Хабр Q&A и cyberforum
- Кейсы
Добрый день!
Я правильно понимаю, что destination в ifconfig это маршрут по умолчанию?
Маршрут по-умолчанию используется, когда в таблице маршрутизации нет явного указания через какой шлюз пакет должен уйти
Если посмотреть на выхлоп
…
то, видно, что для клиентов с адресами из 15-й сети шлюзом будет сервер с адресом 192.168.15.2. Здесь есть явное указание. Клиенты из других сетей будут ходить через шлюз по-умолчанию, если не задано другое
Добрый день. Вопрос платный. Сертификаты клиентов OpenVpn, настроенные по TCP, конфликтуют друг с другом, если несколько устройств подключены с одним и тем же сертификатом.
Но сертификаты, настроенные через UDP, не конфликтуют, если вы используете один и тот же сертификат на нескольких устройствах.
Скажите, можно ли настроить сертификаты UDP так, чтобы они конфликтовали друг с другом, если вы используете один и тот же сертификат на нескольких устройствах. Я заплачу за помощь
uk.datacloud.com@gmail.com
Наличие/отсутствие параметра duplicate-cn в конфиге разрешает/запрещает одновременное подключение разных устройств с одним и тем же сертификатом
Или я чего-то не понимаю в вопросе?
Если есть непубличные подробности то укажите через форму обратной связи или телеграм
здравсвуйте! да вы правы. но параметр duplicate-cn в /etc/openvpn/server.conf в моем сервере нет. и все равно с одним сертификатом можно пользоваться на многих устройствах. может есть вариант отключить параметр duplicat_cn через ssh терминал? пользуюсь виртуалкой Ubuntu-18.04-amd64
помогите пожалуйста разобраться. Спасибо.
server.conf пришлите
я попробывал в server.conf прописать duplicate-cn и закомментировать этот параметр но это работает как то странно. ключи не оключают друг друга а продолжает работать но интернет доступен тому кто подключается последним. обычно сертификаты должны выбивать друг друга
Решение есть. Можете протестировать
Кто поможет поднять на centos 7 одновременно на tcp и udp openvpn ?
Вопрос еще актуален?
уже реализовал.
zdrawstwuyte. po wasey instruksii u menya podklyicayutsya tcp i udp. no na tcp pocemuto ne idut pakety. podklyuceniya yest no interneta net. a yesli v tcp.conf nicego ne menyat i ostavit kak na udp.conf togda naoborot na tcp idut pakety a na udp net. no podklyuceniya k vpn yest. kak by eto ispravit? izwinyayus za latynskie bukwy, noutbuk nowyy yesyo russkiye nakleyki ne nakleyil
Покажите ваши udp.conf и tcp.conf
Еще вывод
zdravstwuyte.
udp
tcp
Для каждого протокола Вам нужно организовать свою сеть (как в посте)
Вы используете «серую» сеть класса А, где первый октет — номер сети, все остальное — адрес хоста. Одна «серая» сеть 10
Попробуйте как в посте 192.168.15 сеть для udp, 192.168.16 для tcp
Ну или оставаться с «серой» сетью 10 и играться с подсетями
P.S.
Смущает номер порта 443, все же лучше использовать дифолтный 1194, а не веб-порт
А в папке ccd должны быть указаны маршруты, которые передаются клиенту, тогда у клиента есть доступ к нужным серверам
ya sdelal kak v poste 192.168 tam podklyuceniya yest no pakety ne idut na obeih protokolah.
1194 u nas zablokirovan. г nas mogut blokirowat drugiye porty krome 443
покажите, когда в конфигах 192.168.15 и 16
Мой ip addr выдает
у Вас иначе
192,168,15-16 propisany
10.8.0.0-10.9.0.0
resil problemu
10.8.0.0 udp
10.9.0.0 tcp
Menem turkmenistandan 😁 hemmamiz kosenyas shondan
Çozulýami şo bilen?
blagodaryu
spasibo aleksandr za etot post. realno pomog
Рад слышать
Berdi Salam , drug mojesh svoy kontakt dat nujna tvoya pomosh pojalusta