Авторизация пользователей будет проходить при помощи сертификатов.
Установим OpenVPN:
1 | apt-get install openvpn |
Настройка сервера OpenVPN
Создадим в папке /etc/openvpn файл server.conf:
1 | nano /etc/openvpn/server.conf |
Содержимое файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # порт port 1194 # протокол proto udp dev tun # пути к ключам и сертификатам ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key dh /etc/openvpn/dh1024.pem # подсеть для сети openvpn server 10.10.10.0 255.255.255.0 # содержит информацию о ip адресах клиентов # файл необходимо создать вручную ifconfig-pool-persist ipp.txt # передача клиенту информацию о домашней сети, то что за сервером push "route 10.20.0.0 255.255.255.0" # передача dns клиенту push "dhcp-option DNS 10.20.0.1" # интервал пинга хоста 10 сек, если не отвечает # 120 сек то считать недоступным keepalive 10 120 # сжатие comp-lzo # понижение привилегий сервера до указанных user nobody group nogroup persist-key persist-tun # уровень информативности логов verb 4 mute 20 # разрешить клиентам видеть друг друга client-to-client # конфиги клиентов client-config-dir /etc/openvpn/ccd # маршурт что бы с компьютеров из сети за сервером # был доступ к клиентам route 10.10.10.0 255.255.255.0 |
Создаем ключи и сертификаты:
1 2 3 4 5 | cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 bash . ./vars ./clean-all ./build-ca |
Создаем сертификат и ключ для сервера:
1 | ./build-key-server server |
Создаем ключи для клиента (сlientx — уникальное имя клиента):
1 | ./build-key clientx |
Если клиентов необходимо добавить спустя некоторое время то выполним следующие действия:
1 2 3 | cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 source ./vars ./build-key clientn |
Генерируем параметры
./build-dh
Копируем в папку /etc/openvpn следующие файлы:
ca.crt
server.crt
dh1024.pem
server.key
Настройка клиента
Путь к файлу конфигурации в windows будет отличаться. В ubuntu — /etc/openvpn/client.conf, в windows по умолчанию в C:\Program Files\OpenVPN\сonfig\openvpn.ovpn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # адрес сервера remote 85.114.25.150 1194 # говорим что клиент client dev tun proto udp resolv-retry infinite nobind persist-key persist-tun # пути к ключам и сертификатам клиента ca ca.crt cert client.crt key client.key comp-lzo verb 4 mute 20 |
Необходимо скопировать с сервера в папку /etc/openvpn/ (C:\Program Files\OpenVPN\сonfig\) сгенерированные клиентские ключи и авторитарный сертификат сервера:
ca.crt
client1.crt
client1.key
Если хотим получить доступ к сети за клиентом (например 192.168.10.0) то:
необходимо добавить в файл server.conf строки:
1 2 | client-config-dir ccd route 192.168.10.0 255.255.255.0 |
необходимо создать файл /etc/openvpn/ccd/clientx такого содержания:
1 | iroute 192.168.10.0 255.255.255.0 |
Отличная статья! Большое спасибо за доступное изложение материала. Настроила по мануалу, все завелось с первого раза!
Спасибо за пост. В некоторых случаях нужно быстро поднять тунель между двома точками. И самый быстрый способ с минимальной безопасностью, это общий ключ, как пишут, к примеру здесь — http://sysadm.pp.ua/linux/shifrovanie/openvpn-point-to-point.html . Генерацию ключей через OpenSSL никто не подскажет как делать?