Создание 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
Теперь, начнем генерацию ключей:
1. Редактируем файл 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 FIles\OpenVPN, а конфиг в папке 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 и пропинговать шлюз, если пакеты ходят, то значит что все хорошо

