VPN сети с помощью OpenVPN">

Блог gigimon'а

Создание VPN сети с помощью OpenVPN

Потребовалось мне тут на досуге, реализовать VPN сеть для пары десятков компьютеров, находящихся в разных точках Земли. Для этого выбрал OpenVPN, а для сервера использовал свой VPS, который видят все.

Итак, первое что нам необходимо, это установить OpenVPN

apt-get install openvpn

После этого, настрйока сервера и клиентов сводится к генерации ключей, раздачи их клиентам и написании 2-х конфигов (для сервера и клиентов).

Идем в папку /usr/share/openvpn/easy-rsa/2.0 (в этйо папке хранятся скрипты для создания ключей)

cd /usr/share/openvpn/easy-rsa/2.0

Теперь, начнем генерацию ключей:

#. Редактируем файл vars, который хранит значения по-умолчанию (чтобы не вводить кучу раз)

nano vars

В самом низу, меняем

export KEY_COUNTRY="RU"
export KEY_PROVINCE="Moscow oblast"
export KEY_CITY="Moscow"
export KEY_ORG="my-network"
export KEY_EMAIL="root@mynet.ru"

Теперь экспортиуре этот файл и генерируем корневой сертификат:

source ./vars
./clean-all
./build-ca

После, генерируем ключ сервера:

./build-key-server server

На последние 2 вопроса, отвечаем Y44

После, генерируем  ключ Диффи-Хэлмана

./build-dh

Он делается несколько минут, придется подождать

Теперь, генерируем ключи для каждого клиента

./build-key client_name

После этого, отдаем клиентам их ключи, а также файл ca.crt

Для большей защиты, на файлы server.key установить права 600, а на server.crt и dh1024.pem права 644

Теперь надо написать конфиг сервера.

port 1194 #порт, на котором работать (рекомендуемый)
proto udp #протокол, можно tcp
dev tun #устройство, которое будет использоваться
ca путь_до_файла_ca.crt
cert путь_до_файла_server.crt
key путь_до_файла_server.key
dh путь_до_файла_dh1024.pem
server 10.10.10.0 255.255.255.0 #подсеть и маска для ВПН сети, из нее будут выдаваться адреса клиентам
client-to-client #разрешаем общение между клиентами
ifconfig-pool-persist /etc/openvpn/ipp.txt #это позволит выдавать клиентам один и тот же IP
comp-lzo #компрессия
max-clients 28 #максимальное количество клиентов
keepalive 10 120 #каждые 10 секунд пинг, если нет ответа 120 секунд, то откидывать клиента
persist-key #хранить ключи в памяти, не перечитывать с диска
persist-tun #позволять держать соединение
status /tmp/openvpn-status.log #статус сервера
verb 6 #уровень отладки (нормально 2)
log-append /var/log/openvpn.log #файл логов

Теперь нам надо подготовить конфиг для клиентов.

На Windows, OpenVPN устанавливается в C:Program FIlesOpenVPN, а конфиг в папке config (логично :). Создадим в ней новый конфиг openvpn.ovpn и кинем в нее же сгенерированные ключи и сертификаты.

Впишем в конфиг следующее:

client #указываем что мы клиент
nobind #не цепляться за интерфейс
dev tun #используемое устройство
proto udp #протокол
remote IP_сервера порт #куда конектиться
resolv-retry infinite #количество попыток, infinite-бесконечно
persist-key #хранить ключ в памяти
persist-tun #держать соединение
comp-lzo #сжатие
ns-cert-type server
ca ca.crt #ключи
cert название.crt
key название.key

После этого, запустим OpenVPN, кликнем Connect, дождемся, когда компьютерики станут зелеными (это будет значить, что к серверу успешно подключились). Теперь можно открыть cmd и пропинговать шлюз, если пакеты ходят, то значит что все хорошо :)

2008 — 2018