imported>Supportadmin |
imported>Vix |
Строка 1: |
Строка 1: |
| ===Генерация сертификатов===
| | '''ПОЛЕЗНОЕ:''' |
| | | <hr> |
| '''Генерация сертификатов как [http://support.qbpro.ru/index.php?title=Debian_squeeze_open-vpn здесь].''' | | * [https://golangs.org/ Уроки для изучения Golang] |
| ===Подключить репозитории OpenVPN===
| | * [https://metanit.com/go/tutorial/2.11.php Функции и их параметры] |
| '''Подключить [https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos репозиторий] и у меня подключены бэк-порты.'''
| | * [https://www.ibm.com/developerworks/ru/library/l-go_01/ Язык программирования go] |
| | | * [https://tproger.ru/translations/golang-basics/ Golang: основы для начинающих] |
| ''На всякий случай продублирую''
| | * [http://golang-book.ru/ Введение в программирование на Go] |
| | | * [https://medium.com/golang-notes/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-visual-studio-code-%D0%B4%D0%BB%D1%8F-go-647ea94aa795 Настройка Visual Studio Code для Go] |
| <nowiki>
| | * [https://serverspace.by/support/help/ustanovka-go-na-windows-server/ Установка GoLang на Windows Server] |
| Using OpenVPN apt repositories
| | * [https://otus.ru/nest/post/1015/ GOPATH и GOROOT больше не нужны?] |
| We maintain several OpenVPN (OSS) software repositories. To setup the repositories you need to change to the root user. Typically this is done using sudo:
| | * [https://nuancesprog.ru/p/5966/ Идеальная настройка вашего Golang проекта] |
| | | * [https://habr.com/ru/post/249449/ Кросс-компиляция в Go] |
| $ sudo -s
| | * [https://gobyexample.com/ Go by Example] |
| Then import the public GPG key that is used to sign the packages:
| | * [https://golang.org/pkg/ Golang Packages] |
| | |
| $ wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -
| |
| Next you need to create a sources.list fragment (as root) so that apt can find the new OpenVPN packages. One way to do it is this:
| |
| | |
| $ echo "deb http://build.openvpn.net/debian/openvpn/<version> <osrelease> main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
| |
| Where <version> can be one of
| |
| | |
| stable: stable releases only - no alphas, betas or RCs
| |
| testing: latest releases, including alphas/betas/RCs
| |
| release/2.3: OpenvPN 2.3 releases
| |
| release/2.4: OpenVPN 2.4 releases, including alphas/betas/RCs
| |
| and <osrelease> depends your distribution:
| |
| | |
| wheezy (Debian 7.x)
| |
| jessie (Debian 8.x)
| |
| precise (Ubuntu 12.04)
| |
| trusty (Ubuntu 14.04)
| |
| xenial (Ubuntu 16.04)
| |
| Examples:
| |
| | |
| $ echo "deb http://build.openvpn.net/debian/openvpn/testing jessie main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
| |
| $ echo "deb http://build.openvpn.net/debian/openvpn/release/2.3 wheezy main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
| |
| Now you're set for installing OpenVPN. Note that packages built for older operating system releases might work just fine on newer release of the same operating system.
| |
| | |
| Installing OpenVPN
| |
| On Debian/Ubuntu use
| |
| | |
| $ apt-get update && apt-get install openvpn</nowiki>
| |
| | |
| '''Обновить libssl, возможно не критично, но это ssl :D'''
| |
| ===Конфигурации сервера и клиента для двух интерфейсов tun и tap одновлеменно===
| |
| В Debian 8 существует особенность запуска двух и более конфигураций openvpn. Эта особенность в "любимом" systemd. При установке активируется '''openvpn@server.service'''. И '''''запускается только один конфигурационный файл и только с именем server.conf''''' (3 часа мозг ломали). Исправляется это деактивацией openvpn@server.service. Затем в каталоге /lib/systemd/system сделать копии файла openvpn@server.service и назвать их по именам конфигурационных файлов. В моём случае файлы конфигураций называются server_tap.conf и server_tun.conf по задействованным интерфейсам. Затем их активировать
| |
| | |
| <nowiki>systemctl enable openvpn@server_tap.service
| |
| systemctl enable openvpn@server_tun.service</nowiki>
| |
| | |
| Это позволит управлять (start, stop, restart) интерфейсами по отдельность
| |
| | |
| Разница в интерфейсах:
| |
| *tun выдает 4-х адресную сеть (/30) и по dhcp и настройках клиента тоже это учитывается, tap одна большая сеть | |
| *tun позволяет маршрутизацию
| |
| *для tun используется параметр server, для tap - ifconfig
| |
| *tun - L3 интерфейс, tap - L2 интерфейс
| |
| * и много чего [https://openvpn.net/index.php/open-source/documentation/howto.html#policy], [https://sergeysl.ru/freebsd-openvpn-client-static-ip/,http://plangc.mybb.ru/viewtopic.php?id=83]
| |
| | |
| | |
| '''ВНИМАНИЕ!!! Копия dh2048.pem с сервера или какая там у вас будет глубина шифрования на клиенте НЕ НУЖНА.'''
| |
| | |
| | |
| На клиент положить только сертификат клиента и конфиг. Сертификат может быть с паролем, может быть без. Как сделаете (смотри картинки по генерации сертификатов внимательно). На клиенте тоже обновить версию openvpn до серверной (может и не надо но в 2.4.0 есть lz4 сжатие и работать будет только на 2.4.0 клиенте).
| |
| | |
| Для выдачи клиентам фиксированных постоянных ip, на сервере в каталогах /etc/openvpn/ccd или /etc/openvpn/ddc нужно создавать файлики по одному на клиента.
| |
| Имя файла должно совпадать с именем сертификата (при генерации (common name) или можно посмотреть в логах)
| |
| | |
| <nowiki>
| |
| /etc/openvpn/ccd/lopic.crt для tap интерфейса
| |
| | |
| ifconfig-push 10.8.0.13 255.255.255.0
| |
| push "route 10.7.0.0 255.255.255.0 10.8.0.1"
| |
| </nowiki>
| |
| <nowiki>
| |
| /etc/openvpn/ddc/lopic.crt для tun интерфейса
| |
| | |
| ifconfig-push 10.7.0.10 10.7.0.9
| |
| push "route 10.8.0.0 255.255.255.0 10.7.0.9"
| |
| </nowiki>
| |
| | |
| Для клиентов без явно указания ip будет выдан ip динамически.
| |
| | |
| Обратите внимание, что формат параметров в команде ifconfig-push для разных интерфейсов разный. Для tap - ip и маска сети. Шлюз по умолчанию первый ip в подсети. Для tun интерфейса ip клиента и ip шлюза для 30-й подсети (как задействовать еще два адреса из 4-х адресной сетки пока не ясно)
| |
| | |
| ====/etc/openvpn/server_tap.conf====
| |
| | |
| <nowiki>
| |
| #указывает программе работать в режиме сервера
| |
| mode server
| |
| | |
| #активирует работу Transport Layer Security (криптографический протокол) сервера
| |
| tls-server
| |
| | |
| #программа будет работать в режиме демона, если нет в этом необходимости - просто раскомментируйте строку
| |
| daemon
| |
| | |
| #локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов.
| |
| local 192.168.0.226
| |
| | |
| #указываем порт, по которому будет работать OpenVPN (обязательно поменять с 1194!!!)
| |
| port 1194
| |
| | |
| #выбираем протокол TCP (если необходим UDP, тогда: proto udp)
| |
| proto tcp-server
| |
| | |
| #используемый тип интерфейса - L2 туннель (для L3-туннеля: dev tun)
| |
| dev tap
| |
| | |
| #указываем файл с ключем сервера
| |
| pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12
| |
| | |
| #указываем файл Диффи Хельман
| |
| dh /etc/openvpn/easy-rsa/keys/dh2048.pem
| |
| | |
| #задаем IP-адрес сервера и маску подсети
| |
| ifconfig 10.8.0.1 255.255.255.0
| |
| | |
| #Если нам лень со статикой заморачиваться
| |
| #server для tun интерфейсов
| |
| #server 10.8.0.0 255.255.255.0
| |
| #ifconfig-pool 10.8.0.5 10.8.0.254 255.255.255.0
| |
| | |
| #путь к каталогу индивидуальных клиентских конфигураций
| |
| client-config-dir /etc/openvpn/ccd
| |
| | |
| #Для назначения статических ip-адресов клиентов
| |
| #ifconfig-pool-persist ipp.txt
| |
| | |
| | |
| | |
| #push "dhcp-option DNS 10.8.0.1"
| |
| #push "dhcp-option DOMAIN net.local"
| |
| #push "dhcp-option DOMAIN-SEARCH net.local"
| |
| #push "redirect-gateway"
| |
| | |
| #пинг каждые 10 секунд для поддержания канала связ
| |
| keepalive 10 120
| |
| | |
| #Связь между клиентами
| |
| client-to-client
| |
| | |
| push "route 10.8.0.0 255.255.255.0"
| |
| | |
| # включаем шифрацию пакетов
| |
| cipher BF-CBC
| |
| | |
| # сжатие трафика
| |
| comp-lzo
| |
| | |
| # максимум клиентов
| |
| max-clients 100
| |
| | |
| # Не перечитывать ключи после получения
| |
| # SIGUSR1 или ping-restart
| |
| persist-key
| |
| | |
| # Не закрывать и переоткрывать TUN\TAP
| |
| # устройство, после получения
| |
| # SIGUSR1 или ping-restart
| |
| persist-tun
| |
| | |
| # логгирование (не забудьте создать эту директорию /var/log/openvpn/)
| |
| status /var/log/openvpn/tap-status.log
| |
| log /var/log/openvpn/tap.log
| |
| | |
| # Уровень информации для отладки 0 - 11
| |
| verb 6
| |
| | |
| </nowiki>
| |
| | |
| ====/etc/openvpn/server_tun.conf====
| |
| <nowiki>
| |
| mode server
| |
| tls-server
| |
| daemon
| |
| local 192.168.0.226
| |
| port 1194
| |
| | |
| # TCP or UDP server?
| |
| ##;proto tcp
| |
| proto udp
| |
| | |
| ##;dev tap
| |
| dev tun
| |
| | |
| #tun-mtu 1492
| |
| #указываем файл с ключем сервера
| |
| pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12
| |
| | |
| #указываем файл Диффи Хельман
| |
| dh /etc/openvpn/easy-rsa/keys/dh2048.pem
| |
| | |
| ## ipaddr server
| |
| server 10.7.0.0 255.255.255.0
| |
| | |
| #### clients ip
| |
| client-config-dir ddc
| |
| | |
| #push dhcp-option DOMAIN net.local
| |
| client-to-client
| |
| #########
| |
| #auth MD5
| |
| # включаем шифрацию пакетов
| |
| cipher BF-CBC
| |
| keepalive 10 120
| |
| | |
| # сжатие трафика
| |
| comp-lzo
| |
| | |
| # максимум клиентов
| |
| max-clients 100
| |
| | |
| # Не перечитывать ключи после получения
| |
| # SIGUSR1 или ping-restart
| |
| persist-key
| |
| | |
| # Не закрывать и переоткрывать TUN\TAP
| |
| # устройство, после получения
| |
| # SIGUSR1 или ping-restart
| |
| persist-tun
| |
| | |
| # логгирование (не забудьте создать эту дирректорию /var/log/openvpn/)
| |
| status /var/log/openvpn/tun-status.log
| |
| log /var/log/openvpn/tun.log
| |
| | |
| # Уровень информации для отладки
| |
| verb 6</nowiki>
| |
| | |
| ====клиент Linux tap /etc/openvpn/client.conf====
| |
| | |
| <nowiki>
| |
| client
| |
| dev tap0
| |
| proto tcp-client
| |
| remote 192.168.0.226 1194
| |
| resolv-retry infinite
| |
| nobind
| |
| #user nobody
| |
| #group nobody
| |
| persist-key
| |
| persist-tun
| |
| pkcs12 lopic85.p12
| |
| ns-cert-type server
| |
| comp-lzo
| |
| status /var/log/openvpn/openvpn-status.log
| |
| log /var/log/openvpn/openvpn.log
| |
| verb 6
| |
| mute 20
| |
| auth-nocache
| |
| | |
| </nowiki>
| |
| | |
| ====клиент Linux tun /etc/openvpn/client.conf====
| |
| <nowiki>
| |
| client
| |
| dev tun0
| |
| proto udp
| |
| remote 192.168.0.226 1194
| |
| resolv-retry infinite
| |
| nobind
| |
| #user nobody
| |
| #group nobody
| |
| persist-key
| |
| persist-tun
| |
| pkcs12 lopic85.p12
| |
| ns-cert-type server
| |
| comp-lzo
| |
| status /var/log/openvpn/openvpn-status.log
| |
| log /var/log/openvpn/openvpn.log
| |
| verb 6
| |
| mute 20
| |
| auth-nocache
| |
| | |
| </nowiki>
| |
| | |
| | |
| ====клиент Windows c:\Program files\Openvpn\conf\client.ovpn====
| |
| | |
| Конфиг как на линукс клиенте кроме двух строк:
| |
| <nowiki>status /var/log/openvpn/openvpn-status.log
| |
| log /var/log/openvpn/openvpn.log</nowiki>
| |
| Их надо удалить. Лог пишется в папке C:\Users\Пользователь\Openvpn
| |
| | |
| ===КОСТЫЛЬ №1 Присвоение постоянных ip клиентам openvpn 2.4.0===
| |
| После написания файла lopic.crt, и перезагрузки openvpn ip выдавался следующий после сервера 10.8.0.2, а не тот который прописан в lopic.crt
| |
| | |
| '''Нужно:'''
| |
| # '''ОСТАНОВИТЬ''' openvpn
| |
| # в файле /etc/openvpn/ipp.txt прописать в новой строке ''''''lopic,10.8.0.13'''''' (зяпятая между именем и ip без пробелов). lopic.crt уже должен быть
| |
| # запустить openvpn
| |
| | |
| UPD: Перед добавлением следующего клиента скопировать ipp.txt, потом остановить openvpn, вернуть ipp.txt, внести изменения в ipp.txt и потом запустить openvpn. Это точно фича, либо моя криворукость.
| |
| | |
| ===КОСТЫЛЬ №2 Автостарт openvpn 2.4.0 в systemd===
| |
| Не знаю, баг это или фича, но на сервере сервисы openvpn.service и openvpn@.service активны, загружены и исполнены, а интерфейса нет.
| |
| | |
| '''Как сдел я:'''
| |
| # /etc/scripts/ovpn_restart.sh
| |
| <nowiki>#!/bin/bash
| |
| sleep 10
| |
| systemctl restart openvpn
| |
| exit 0
| |
| </nowiki>
| |
| # /etc/systemd/system/ovpn.service
| |
| <nowiki>
| |
| [Unit]
| |
| Description=OpenVPN restart kostil
| |
| After=syslog.target network.target
| |
| After=openvpn.service
| |
| | |
| [Service] | |
| Type=forking
| |
| ExecStart=/etc/scripts/ovpn_restart.sh
| |
| | |
| [Install]
| |
| WantedBy=multi-user.target</nowiki>
| |
| #systemctl enable ovpn.service
| |
| | |
| Конечно наколхозил, но работает :D
| |
| | |
| | |
| ===Пропускная способность===
| |
| | |
| На HP procurve c 100Мбит/с интерфейсами через ssh прокачал 11.3 Мбайт/с
| |