12

12

Свой DoubleVPN за 20 минут

DeepWebMay 27, 2018

Приветствуем всех! Сегодня будем делать свой DoubleVPN.

Для этого нам потребуется 2 сервера\ vps(если openVZ должны быть включены tun\tap адаптеры). На одном из серверов должно быть 2 ip адреса. В качестве ОС используем debian.


Начнем

Идём на сервер с двумя ip.

apt-get update
apt-get install openvpn


Идём в каталог:

cd /usr/share/doc/openvpn/examples/sample-config-files


Распаковываем архив:

gzip -d server.conf.gz


Копируем файлы

cp -R /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn
cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn


Можно начинать генерировать сертификаты:

cd /etc/openvpn/2.0

./clean-all

source ./vars

./clean-all

./build-ca


Заполняем все поля

Common Name вписываем server

./build-key-server server


Common Name вписываем server

Challenge password Запоминаем его мы вписывали 12345

./build-dh


Сертификаты для сервера готовы, переходим ко клиентским

./build-key-pass client1


Первым делом у нас спросят пароль для клиентского сертификата (мы указывали 9999)

Common Name вписываем client1. После ввода e-mail адреса запросят Challenge password вспоминаем какой вводили указываем его (в нашем случае 12345)

./build-key-pass client2


Для генерации второго и последующих сертификатов не забываем менять Common Name.

Переходим к настройке и запуску сервера.

cd /etc/openvpn


Очистим файл конфигурации сервера

echo " " > server.conf


Установим консольный текстовый редактор

apt-get install nano
nano server.conf



local 46.37.169.30
port 1800
proto tcp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem

push "redirect-gateway def1"
push "dhcp-option DNS 66.96.208.21"
user nobody
group nobody

server 10.8.0.0 255.255.255.0
keepalive 10 120
persist-key
persist-tun
comp-lzo
max-clients 10
up up
down down


Комменты к конфигу:

local - адрес где крутится demon

port - порт на котором запускается demon


push "dhcp-option DNS 66.96.208.21"

66.96.208.21 адрес dns сервера через который будем резолвится. Взять его можно тут:cat /etc/resolv.conf.

Добавим права на выполнение двум скриптам

chmod +x up down

nano /etc/default/openvpn


Ищем строку OPTARGS="" и приводим её к виду OPTARGS="--script-security 2"

Теперь включаем ip_forward

echo 1 > /proc/sys/net/ipv4/ip_forward


Добавим группу nobody

addgroup nobody


копируем файлы сертов:

cp -R /etc/openvpn/2.0/keys/ca.crt /etc/openvpn/
cp -R /etc/openvpn/2.0/keys/server.crt /etc/openvpn/
cp -R /etc/openvpn/2.0/keys/server.key /etc/openvpn/
cp -R /etc/openvpn/2.0/keys/dh1024.pem /etc/openvpn/


Запускаем демон:

/etc/init.d/openvpn start


VPN сервер готов впринципе через него уже можно работать, но у нас целью был DoubleVPN поэтому продолжаем настройку.


Идём на сервер где у вас 1 ip.

apt-get update

apt-get install openvpn


Чтобы вновь не объяснять как генерятся сертификаты сгенерил пачку сертификатов и залил для общего пользования: http://www.sendspace.com/file/9eu4s7

Скачиваем эти файлы, коннектимся к серверу через winSCP заходим в папку /etc/openvpn И копируем всё содержимое архива туда(Вместе с папкой ip_1)

В терминале:

cp /etc/openvpn/ip_1/server.conf /etc/openvpn/

nano /etc/openvpn/server.conf


Меняем в строке local ip-адрес на адрес сервера на котором вы сейчас находитесь. И удаляем строки status и log. Этим отключим логирование нашего сервера.

Теперь надо исправить up и down скрипты

nano /etc/openvpn/ip_1/up


Видим ip адрес 184.82.183.28 меняем его на адрес вашего сервера.

nano /etc/openvpn/ip_1/down


Видим ip адрес 184.82.183.28 меняем его на адрес вашего сервера.

Добавим права на выполнение на файлы up и down

chmod +x /etc/openvpn/ip_1/down
chmod +x /etc/openvpn/ip_1/up


Далее.

nano /etc/default/openvpn


Ищем строку OPTARGS="" и приводим её к виду OPTARGS="--script-security 2"

Теперь включаем ip_forward

echo 1 > /proc/sys/net/ipv4/ip_forward


Запускаем openvpn.

/etc/init.d/openvpn start


Возвращаемся к серверу с двумя IP. Скачиваем http://www.sendspace.com/file/vjuiqb

Подключаемся через winSCP в папку /etc/openvpn и закидываем папку из архива ip_

Затем копируем файл конфига

cp /etc/openvpn/ip_1/client.conf /etc/openvpn/
nano /etc/openvpn/client.conf


remote Указываем ip адрес сервера с 1 ip

local указываем второй ip адрес вашего сервера

Удаляем строки status и log

Добавляем файлам права на выполнение

chmod +x /etc/openvpn/ip_1/down
chmod +x /etc/openvpn/ip_1/up


И редактируем конфиг 

nano /etc/openvpn/server.conf


в local вписываем 192.168.1.2

/etc/init.d/openvpn restart



Клиентская часть

Вот мы и подошли к финальной части настроек, а именно настроек клиентской части. Скачиваем с сервера с двумя ip_адресами из папки /etc/openvpn/2.0/keys

Файлы:

ca.crt

client1.crt

client1.key


Надеюсь что openvpn у вас уже установлен. Идём в папочку

C:\Program Files\OpenVPN\config И там создаём папочку test. В неё помещаем скачанные файлы. Теперь скачиваем образец конфига:

http://www.sendspace.com/file/g89eg2

Скачанный файлик помещаем в папочку test

Теперь редактируем его.


remote 217.12.220.71 1800


217.12.220.71 


Меняем на ip сервера на котором один ip адрес.

ca ca.crt

cert client1.crt

key client1.key


Исправляем если сертификаты клиентов имеют иные имена.

Всё готово, осталось скачать утилиту которая будет следить за тем чтобы соединение не разорвалось, подойдёт утилита любого vpn сервиса.


Теперь осталось подключиться к нашему впн и радоваться жизни, трафик идёт по схеме : сервер с 1ip<-->сервер с 2ip<-->сеть.