Направи си сам OVPN (OpenVPN) - TheWired

Направи си сам OVPN (OpenVPN)

В самото начало на този блог написах как да се заобиколят ключалките, но тази инструкция е малко остаряла. Мисля, че е време да го актуализирам и реших да го направя не в оригиналния пост, а да напиша нов, въз основа на настоящите реалности. В резултат на това ще получите работата си OVPN (OpenVPN), свързване с едно щракване. Така че да тръгваме ...

сертификати ключове

Извинение: предполага се, че вече имате сървър с Ubuntu на борда, ако не, стартирайте го (за да направите това има две връзки вдясно, едната на Linode, другата на DigitalOcean). От опит не всички читатели разбират очевидните неща, затова ще пиша подробно.

# 1: инсталирайте и конфигурирайте OpenVPN сървъра и неговата среда

Сега нека инсталираме OpenVPN и Easy-RSA ...

По подразбиране конфигурацията трябва да бъде разопакована в/etc/openvpn, така че правим това ...

Сега трябва да отворите файла server.conf и да го редактирате ...

Този файл се нуждае от някои промени. Намерете секция от файла, която изглежда по следния начин:

Заменете dh1024.pem с dh2048.pem - това ще удвои дължината на RSA ключа при генериране на сървърни и клиентски ключове. Сега трябва да намерите този раздел на файла:

След това търсим този раздел:

По подразбиране OpenVPN се изпълнява като root и има пълен достъп до машината - по мое мнение това не е правилно, така че ние просто го конфигурирахме да работи като потребителски никой с групата nogroup. Това е потребител без никакви привилегии, обикновено запазен от системата за ненадеждни приложения. Сега можете да запазите файла и да излезете.

Основната конфигурация на сървъра OpenVPN е завършена, но все още има нюанси, без които нищо няма да работи. По-специално, има такава системна опция sysctl, която инструктира ядрото на сървъра да пренасочва трафика от клиентски устройства към Интернет. В противен случай трафикът няма да отиде никъде извън сървъра ви. Не се нуждаем от тази опция, така че нека активираме препращането на пакети:

Също така се нуждаем от тази настройка, за да бъде постоянна и да не се срива всеки път, когато сървърът се рестартира, така че:

Почти в самия връх на файла трябва да видите редове като този:

Сега можете да запазите този файл и да излезете. В Ubuntu, като се започне от версия 14.04, има нещо, наречено Некомплицирана защитна стена (ufw), ще ни трябва. ufw е интерфейс за iptables, лесно е да се настрои, просто трябва да създадете няколко правила и да промените конфигурации и след това да включите защитната стена. Отивам…

Ще конфигурираме OpenVPN да работи през UDP, така че ufw трябва да разреши UDP трафик на порт 1194.

Също така, за самия ufw, трябва да зададете правило за препращане на пакети, отворете конфигурацията:

Търсим реда DEFAULT_FORWARD_POLICY = "DROP". Стойността му трябва да бъде променена от DROP на ACCEPT, така че в крайна сметка да изглежда така:

Сега трябва да добавим някои допълнителни правила за ufw, за да активираме NAT и маскиране за свързани клиенти:

Веднага след този раздел:

Сега можете да запазите файла и да излезете. След това активирайте ufw:

ufw може да попита:

Да кажем да и натиснете enter:

Ако всичко е направено правилно, ще напише:

Можете да проверите състоянието му (по избор):

Отговорът най-вероятно е нещо подобно:

Това завършва конфигурацията на сървъра и защитната стена на OpenVPN, нека продължим;-)

# 2: създайте сертификати и ключове

OpenVPN използва сертификати за криптиране на трафика между клиент и сървър.

Нека създадем директория за съхранение на ключове:

Easy RSA има файл с променливи, които можем да редактираме (или можем да го оставим на мира, това не е задължително), за да създадем сертификати изключително за себе си, за бизнеса си и т.н. Тази информация се копира в сертификати и ключове и помага да се идентифицират ключовете по-късно. Нека отворим файла:

Можете да редактирате всичко, което е в кавички, като въведете данните си (по избор). В същия файл се уверете, че редът изглежда така:

Сега трябва да генерираме параметрите на Diffie-Hellman, това ще отнеме няколко минути (в зависимост от капацитета на сървъра):