Главная › Форумы › SOFTWARE › System settings › OpenVPN на Ubuntu Server 14.04
- В этой теме 1 ответ, 1 участник, последнее обновление 6 лет, 3 месяца назад сделано E-tec.
-
АвторСообщения
-
31.07.2018 в 16:30 #150
Главное условия построения защищенной сети — наличие белого IP адреса (он же статический). Уточнить или купить его можно у вашего текущего провайдера, обычно стоит не много, и облагается ежемесячной абонентской платой.
Для развертывании сервера будет достаточно 40Гб пространства на жестком диске, 4 процессорных ядра (если вы используете виртуальную машину) 4Гб ОЗУ, 1 сетевой адаптер.
После установки Ubuntu Server сразу зайдем в настройки сетевого адаптера и пропишем статический IP адрес внутренней сети нашего сервера. Все сетевые настройки находятся в файле /etc/network/interfaces, поэтому откроем любым текстовым редактором и пропишем интерфейсы желаемый IP адрес:
sudo nano /etc/network/interfaces
Я использую редактор nano, для своего сервера я буду использовать IP адрес 192.168.1.115, конфиг интерфейсов будет выглядеть следующим образом:# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.1.115 - внутренний IP адрес OpenVPN сервера netmask 255.255.255.0 - используемая маска gateway 192.168.1.1 - шлюз сети dns-nameservers 8.8.8.8 - тут будут DNS сервера Вашего провайдера
перезагружаем сервер
sudo reboot
после чего убеждаемся, что интернет на нашем сервере до сих пор есть и продолжаем развертку. Зайдем под Root пользователем для удобства.
sudo -i
После чего установим пакет OpenVPN
apt-get install openvpn
Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов. Для их генерации в пакете OpenVPN имеются специальные скрипты, расположенные в /usr/share/doc/openvpn/examples/easy-rsa/2.0 Перед началом работы скопируем их, чтобы не изменять оригиналы.Для 14.04 LTS, с лета 2013 года easy-rsa не входит в OpenVPN и команда указанная выше не сработает(не найдет easy-rsa), тогда делаем следующее:
apt-get install easy-rsa
mkdir /etc/openvpn/easy-rsa cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa/2.0
Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов
cd /etc/openvpn/easy-rsa/2.0
Редактируем файл переменных
nano vars
Файл vars отвечает за автоматическое заполнение полей при создании сертификатов, т.е. если Вам нужно будет с генерировать 100+ сертификатов, при этом Вы не хотите тратить время на заполнение всех полей, которые будут типичными для всех сертификатов, то они будут автоматически подобраны из этого файла.# Почти в самом низу файла, заполняем информацию о сертификатах по умолчанию (ваши значения). export KEY_COUNTRY="RU" - Ваше местоположение export KEY_PROVINCE="Amur Region" - Ваш регион, по идее то же самое, что и предыдущее поле export KEY_CITY="Blagoveschensk" - Ваш город export KEY_ORG="Organization" - Ваша организация сокращенно export KEY_EMAIL="vash@email.tut" - Ваш электронный адрес почты export KEY_OU="MyOrganizationalUnit" - Ваша организация # PKCS11 я не использовал, поэтому оставил без изменений. Кто шарит нафига эта штука, напишите ниже в теме. export PKCS11_MODULE_PATH=changeme export PKCS11_PIN=1234 #Добавить строчку export KEY_ALTNAMES="MyOpenVPN"
После чего сохраняем файл и выходим из редактора.копируем конфиг openssl
cp openssl-1.0.0.cnf openssl.cnf
Загружаем переменные
source ./vars
Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей
./clean-all
Создаем сертификат. По умолчанию поля будут заполняться данными, введенными ранее в vars, поэтому можно ничего не менять.
./build-ca
Создаем ключ сервера
./build-key-server server
В конце соглашаемся с запросом на подпись и добавление сертификата в базу.
Создаем ключ Диффи-Хеллмана
./build-dh
Cоздаем ключ для tls-аутификации
openvpn --genkey --secret keys/ta.key
Перемещаем сертификаты
cp -r /etc/openvpn/easy-rsa/2.0/keys/ /etc/openvpn/
Создание файла конфигурации сервера
Копируем архив конфигураций сервера в папку с нашим Openvpn, после чего переходим в директорию с нашей впн, распаковываем конфиг для дальнейшего редактирования:cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ cd /etc/openvpn gunzip -d /etc/openvpn/server.conf.gz
nano /etc/openvpn/server.conf
копируем туда следующее:# Порт по которому будет работать ваша сеть, этот порт должен быть открыт на вашем шлюзе port 443 # Протокол может быть UDP или TCP, я выбрал 1-й вариант. proto udp # Если вы выберите протокол TCP, здесь должно быть устройство tap. Однако, это вариант я не проверял, поэтому ищите $ dev tun # Указываем где искать ключи ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key # This file should be kept secret dh /etc/openvpn/keys/dh2048.pem # Задаем IP и маску виртуальной сети. Произвольно, но если не уверены лучше делайте как показано здесь server 10.0.1.0 255.255.255.0 topology subnet # Указыем, где хранятся файлы с настройками IP-адресов клиентов (создадим ниже) client-config-dir /etc/openvpn/ccd # Запоминать динамически выданные адреса для VPN-клиентов и при последующих подключениях назначать те же значения. ifconfig-pool-persist ipp.txt # Указываем сети, в которые нужно идти через туннель (сеть-клиента) это возможные адреса удаленных клиентов. route 192.168.0.0 255.255.255.0 route 192.168.1.0 255.255.255.0 route 102.168.100.0 255.255.255.0 # Включаем TLS tls-server tls-auth /etc/openvpn/keys/ta.key 0 tls-timeout 120 auth SHA1 # по-умолчанию. Можно ещё MD5. cipher BF-CBC # Если нужно, чтобы клиенты видели друг друга раскомментируйте client-to-client keepalive 10 120 # Сжатие трафика comp-lzo # Максимум клиентов max-clients 250 user nobody group nogroup # Не перечитывать ключи, не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart persist-key persist-tun status openvpn-status.log log /var/log/openvpn.log # Детальность логирования verb 9 # Защита от повторов (максимум 20 одинаковых сообщений подряд) mute 20 # Файл отозванных сертификатов. Разремить, когда такие сертификаты появятся. crl-verify /etc/openvpn/easy-rsa/2.0/keys/crl.pem
Создадим директорию для клиентских конфигов
mkdir /etc/openvpn/ccd
Можно запускать наш сервер OpenVPN
service openvpn restart
Смотрим список интерфейсов
ifconfig
Если среди прочих видимtun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.0.1.1 P-t-P:10.0.1.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
значит VPN-сервер завелся. Если нет, то смотрим лог
tail -f /var/log/openvpn.log
Создание ключей и сертификатов
Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов
cd /etc/openvpn/easy-rsa/2.0
Загружаем переменные
source vars
Создаем ключ клиента
./build-key client
Если хотим защитить ключ паролем, то генерируем его другой командой
./build-key-pass client
В этом случае при запуске соединения нужно будет каждый раз вводить пароль на ключ.
Присвоение статических адресов клиентам
Если Вы хотите присвоить каждому клиенту свой IP адрес, либо у вас много рользователей и нужно использовать 240+ IP адресов в одной защищенной сети, нужно создать папку ccd в директории с openvpn сервером
mkdir /etc/openvpn/ccd
После чего создать там файл с именем клиента для которого вы собираетесь использовать статический IP адрес, допустим это будет client1.
cd /etc/openvpn/ccd
touch /etc/openvpn/ccd/client1
После чего открываем файл
nano /etc/openvpn/ccd/client1
и редактируем егоifconfig-push 10.0.1.186 255.255.255.0 - Желаемый статический IP адрес и маска сети клиента push «route 10.0.1.0 255.255.255.0» - Сеть сервера push «route 192.168.0.0 255.255.255.0» - Локальная сеть в которой находится клиент push «route 192.168.1.0 255.255.255.0» - Локальная сеть в которой находится клиент
если локальная сеть клиента меняется не так часто, то можно оставлять одну строчку, но мне лениво менять файлы клиентов, поэтому я прописал обе сети на будущее ))))
Создание файла конфигурации клиента
Конфигурация клиента мало чем отличается от сервера, оно и понятно, но есть не большие изменения:remote 192.168.1.115 443 - IP адрес сервера, если клиент находится не в той же сети, что и сервер тут должен быть указан белый IP адрес, это то саме условие о котором говорилось ранее. client dev tun proto udp resolv-retry infinite # this is necessary for DynDNS nobind cipher BF-CBC user nobody group nogroup persist-key persist-tun dh C:\\OpenVPN\\ssl\\dh2048.pem ca C:\\OpenVPN\\ssl\\ca.crt cert C:\\OpenVPN\\ssl\\client1.crt key C:\\OpenVPN\\ssl\\client1.key tls-client tls-auth C:\\OpenVPN\\ssl\\ta.key 1 auth SHA1 # по-умолчанию. Можно MD5 comp-lzo verb 4 mute 20 #redirect-gateway #show-net-up
На этом настройки закончены, если нужно подключиться с windows то Вам нужно будет скачать клиент Openvpn с офф. сайта, конфиг клиента выше написан под windows, т.к. это ос наиболее популярна, но конфиг легко адаптируется и под другие ОС.
31.07.2018 в 16:34 #153Имеется Ubuntu server 14.04.5 на последнем ядре используется в качестве openvpn сервера, стоит это все дело на Hyper-v сервере соответственно, недавно понял, что openvpn сервер немного умирает когда к нему коннектица 250+ пользователей, на момент установки ubuntu я не рассчитывал, что придется подключать такое кол-во пользователей. Проблема заключается в том, что если в параметрах виртуальной машины добавлять ядра на ubuntu, она отлично загружается, но в итоге не видит интернет (т.е. не пингуется ни один хостинг), если вернуть все обратно, то все отлично работает.
В: как добавить в ubuntu server ядер, чтоб оно еще и работало нормально? =)
О: Решение оказалось, как ни странно, под носом, использовалось ядро GNU/Linux 3.13.0-76-generic i686, которое не хотело работать после «апгрейда» железа, командой:
sudo apt-get install --install-recommends linux-generic-lts-xenial
Ставим последнее стабильное ядро для 14.04.5 (оно же GNU/Linux 4.4.0-38-generic i686), и спокойно меняем параметры виртуального железа в Hyper-v, после чего все завелось и работает отлично!Команды для отзыва сертификата:
cd /etc/openvpn/easy-rsa/2.0 source ./vars ./revoke-full client
После ввода команд увидите сообщение:
последняя строчка говорит о том, что сертификат не прошел проверку, и больше не сможет подключаться к серверу -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.