пятница, 18 июля 2008 г.

Настройка OpenVPN в Ubuntu

Должен быть установлен пакет 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
а вот по хутушке с хелп.убунта не получилось запуститься :(

6uest комментирует...

Спасибо за дополнения.
На 8.10 настраивать не пробовал (видимо они там опять что-то поломали :)).

Анонимный комментирует...

В 8.10 все прекрасно работает - просто внимательно читаем - запускать надо не "./vars", а
". ./vars" - точка и пробел в начале не опечатка. Почему именно так - читаем документацию :)

Анонимный комментирует...

Всё встало. 9.10 server. Самый толковый ман из немногих найденных. Спасибо!

bmalkov

IEgova2007 комментирует...

Всё отлично работает!!! Спасибо большое!!!
Самый классный мануал!
Автору - большой респект.

Dufunia комментирует...

Надеюсь, у меня под 9.10 тожее заработает

Developer комментирует...

Делаю, всё как в мануале.

немного не до конца понимаю вопрос с маршрутизацией.

например есть у меня клиенты с внутренними сетями.

и я хочу чтоб они друг друга видели.

например есть сервер на за ним 192.168.5.0
к нему цепляются клиенты
192.168.4.0
192.168.3.0

Хочу чтоб компы последних 2х сетей пинговали друг друга.
как прописать так, чтоб эти маршруты выдавались openvpn сервером

Анонимный комментирует...

Про "точку пробел точку" надо было прям в самой статье там и написать, а то пока поймешь что это не очепятка ... А вот remote XX.XX.XX.XX 1194 не понянто что за иксы....

Алексей комментирует...

Спасибо большое за статью. С точкой согласен) сам помучался.
А вот с иксами все как раз ясно, вместо них нужно указать IP сервера на котором это все настраивается.

buy a vpn account комментирует...
Этот комментарий был удален администратором блога.
Анонимный комментирует...

Слава яйцам! нашлась таки отличная статья! Усё работает)))
Кстати, хотелось бы увидеть ответ на вопрос Developer'а... Плз.

6uest комментирует...

to Developer В конфиге же есть опция client-to-client, то есть пересылка между клиентами разрешена. Вам нужно настроить только маршрутизацию на клиентах на соответствущие сети через сервер.

Анонимный комментирует...

to 6uest

А как настроить маршрутизацию на клиентах?

Anthony комментирует...

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.