Должен быть установлен пакет openvpn:
sudo apt-get install openvpn
Сервер
Создаём конфигурационный файл для сервера /etc/openvpn/server.conf:
port 1194
proto udp
dev tun
;dev-node tap0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh1024.pem
server 10.10.10.0 255.255.255.0 # vpn subnet
ifconfig-pool-persist ipp.txt
push "route 192.168.7.0 255.255.255.0" # home subnet
;duplicate-cn
keepalive 10 120
;cipher BF-CBC # Blowfish (default)
;cipher AES-128-CBC # AES
;cipher DES-EDE3-CBC # Triple-DES
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
;status openvpn-status.log
;log-append openvpn.log
verb 4
mute 20
client-to-client
client-config-dir /etc/openvpn/ccd
route 192.168.1.0 255.255.255.0
Полный разбор файла конфигурации
Примечание: при загрузке системы автоматически поднимаются все VPN соединения, для которых в папке /etc/openvpn есть соответствующие файлы с расширением .conf.
Теперь необходимо создать ключи и сертификаты для шифрования и авторизации (http://openvpn.net/index.php/documentation/howto.html#pki). Соответствующие скрипты для этого находятся в папке /usr/share/doc/openvpn/examples/easy-rsa/2.0
Создаём CA (авторитетный сертификат):
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
sudo bash
. ./vars
./clean-all
./build-ca
Теперь создадим сертификат и приватный ключ для сервера:
./build-key-server server
Создаём ключ для клиента (если клиентов несколько, процедуру придётся повторить):
./build-key client1
Примечание: для каждого клиента должно быть указано своё уникальное имя (в данном случае client1).
Примечание: если новый клиент создаётся спустя некоторое время, процедура будет выглядеть следующим образом:
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
source ./vars
./build-key client2
Генерируем параметры Диффи-Хеллмана:
./build-dh
Помещаем следующие файлы в директорию /etc/openvpn/
- ca.crt
- server.crt
- dh1024.pem
- server.key
Создаём файл /etc/openvpn/ipp.txt в который программа будет помещать IP адреса выданные клиентам клиентов.
Клиент
Конфигурационный файл клиентской машины /etc/openvpn/client.conf будет выглядеть следующим образом:
remote XX.XX.XX.XX 1194
client
dev tun
proto udp
resolv-retry infinite # this is necessary for DynDNS
nobind
user nobody
group nogroup
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client1.crt
key /etc/openvpn/client1.key
comp-lzo
verb 4
mute 20
Теперь необходимо скопировать с сервера в папку /etc/openvpn/ сгенерированные клиентские ключи и авторитарный сертификат сервера:
- ca.crt
- client1.crt
- client1.key
Автоматическая настройка маршрута на сервере до удалённой сети
Важное замечание: Все клиенты идентифицируются на сервере по имени выданного им сертификата (в нашем примере client1).
Если за клиентом находится подсеть 192.168.1.0/24, то для того чтобы при подключении этого клиента, на нашем сервере автоматически прописывался маршрут до него, мы должны сделать следующее:
- добавить в файл server.conf строки:
client-config-dir ccd
route 192.168.1.0 255.255.255.0
- создать файл /etc/openvpn/ccd/client1 такого содержания:
iroute 192.168.1.0 255.255.255.0
15 комментариев:
В Ubuntu 8.10 не корректно выполнялись скрипты: ./vars; ./clean_all; ./build_ca. Пришлось объединить содержание этих скриптов в один исполняемый файл и после этого всё заработало! Также нужно было создать дополнительный каталог ./keys, потому-что его там не было.
спасибо за howto
стоит добавить,
1. что тем кто не хочет парится (я такой) ключи можно взять отсюда /usr/share/doc/openvpn/examples/sample-keys
но это, естественно, не безопасно бла-бла-бла
2. запустить openvpn sudo /etc/init.d/openvpn start
проверить всё ли нормально через ifconfig - должен появится ещё один интерфейс tun0
если нету смотреть ошибки tail /ver/log/syslog
вроде всё
ps
а вот по хутушке с хелп.убунта не получилось запуститься :(
Спасибо за дополнения.
На 8.10 настраивать не пробовал (видимо они там опять что-то поломали :)).
В 8.10 все прекрасно работает - просто внимательно читаем - запускать надо не "./vars", а
". ./vars" - точка и пробел в начале не опечатка. Почему именно так - читаем документацию :)
Всё встало. 9.10 server. Самый толковый ман из немногих найденных. Спасибо!
bmalkov
Всё отлично работает!!! Спасибо большое!!!
Самый классный мануал!
Автору - большой респект.
Надеюсь, у меня под 9.10 тожее заработает
Делаю, всё как в мануале.
немного не до конца понимаю вопрос с маршрутизацией.
например есть у меня клиенты с внутренними сетями.
и я хочу чтоб они друг друга видели.
например есть сервер на за ним 192.168.5.0
к нему цепляются клиенты
192.168.4.0
192.168.3.0
Хочу чтоб компы последних 2х сетей пинговали друг друга.
как прописать так, чтоб эти маршруты выдавались openvpn сервером
Про "точку пробел точку" надо было прям в самой статье там и написать, а то пока поймешь что это не очепятка ... А вот remote XX.XX.XX.XX 1194 не понянто что за иксы....
Спасибо большое за статью. С точкой согласен) сам помучался.
А вот с иксами все как раз ясно, вместо них нужно указать IP сервера на котором это все настраивается.
Слава яйцам! нашлась таки отличная статья! Усё работает)))
Кстати, хотелось бы увидеть ответ на вопрос Developer'а... Плз.
to Developer В конфиге же есть опция client-to-client, то есть пересылка между клиентами разрешена. Вам нужно настроить только маршрутизацию на клиентах на соответствущие сети через сервер.
to 6uest
А как настроить маршрутизацию на клиентах?
Get the Fastest VPN for 2018 that allows you to access blocked and restricted content from anywhere in the world. Stream and Download with complete anonymity and security. FastestVPN service provider offers secure access and high speed.
Отправить комментарий