The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

OpenVPN на Ubuntu Server (openvpn tunnel ubuntu vpn)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: openvpn, tunnel, ubuntu, vpn,  (найти похожие документы)
From: Alchemist <lipovetskiy@yandex.ru.> Newsgroups: email Date: Mon, 21 Dec 2008 17:02:14 +0000 (UTC) Subject: OpenVPN на Ubuntu Server Объединение центрального офиса с филиалами, складами и т.д. в единую сеть - это то, с чем приходится довольно часто сталкиваться администратору сети. Объединять сети можно "хардвардным" способом на железяках (Cisco, D-Link, etc) и "программным" на серваках под разными ОС (Windows, Linux, BSD). При наличии сервера на железяки можно не разоряться, а воспользоваться тем что есть, тем более что функционал в этом случае будет более широкий. В связи с планирующимся расширением фирмы, я решил заранее выбрать и обкатать наиболее подходящую схему объединения офисов. Немного погуглив, остановился на OpenVPN, как на более защищенном и не особо замороченом способе. Дистрибутивом взял Ubuntu Server 8,04 i386 т.к. очень хотелось пощупать Убунту в виде сервера и посмотреть на что она способна. Экспериментировал в виртуальных сетях под VMware Server. Схема соединения сетей следующая: 192.168.120.0 <serv1> 10.0.0.0 <serv2> 192.168.110.0 На каждом сервере поднят межсетевой экран iptables и nat. Для того, чтобы серверы могли устанавливать ПО из реальной глобальной сети, я подключал к ним третий bridged интерфейс. Далее в конфигурационных файлах я его упоминать не стал. Устанавливаем сервер (serv1) После нетривиальной установки, которую не буду описывать, конфигурируем сетевые интерфейсы: # cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.0.0.10 netmask 255.255.255.0 auto eth1 iface eth1 inet static address 192.168.120.20 netmask 255.255.255.0 Делаем из него роутер путем добавления в /etc/sysctl.conf строчки: net.ipv4.ip_forward=1 Настраиваем путь к репозиторям из которых будем устанавливать ПО: # cat /etc/apt/sources.list deb http://ru.archive.ubuntu.com/ubuntu/ hardy main contrib non-free restricted universe multiverse deb-src http://ru.archive.ubuntu.com/ubuntu/ hardy main contrib non-free restricted universe multiverse deb http://ru.archive.ubuntu.com/ubuntu/ hardy-updates main contrib non-free restricted universe multiverse deb-src http://ru.archive.ubuntu.com/ubuntu/ hardy-updates main contrib non-free restricted universe multiverse deb http://ru.archive.ubuntu.com/ubuntu/ hardy-security main contrib non-free restricted universe multiverse deb-src http://ru.archive.ubuntu.com/ubuntu/ hardy-security main contrib non-free restricted universe multiverse Дальше устанавливаем дополнительное ПО, предварительно обновившись: # aptitude update # aptitude upgrade # aptitude install console-cyrillic mc traceroute openvpn vsftpd Для работы OpenVPN необходимо создать сретификаты и конфигурационный файл openvpn.conf. Для генерирования сертификатов переходим в каталог easy-rsa: # cd /usr/share/doc/openvpn/examples/easy-rsa/2,0 Заполняем шаблонный файл с пременными vars. Я заполнил только последнюю часть с данными о фирме, городе и т.п., плюс изменил директорию с ключами: export KEY_DIR="/etc/openvpn/keys" Генерируем сертификаты: # ./build-dh # ./pkitool -initca # ./pkitool -server server # ./pkitool client Созданные сертификаты должны появиться в вышеуказанной папке, если конечно вы ее предварительно создали. Дальше пишем конфиг сервера. Читал разные статьи на эту тему, наступал на грабли, но в итоге плюнул и без проблем все сделал по примерам, которые лежат в папке /usr/share/doc/openvpn/examples/sample-config-files. В итоге получился такой конфиг: #cat /etc/openvpn/openvpn.conf dev tun tls-server proto udp port 3333 comp-lzo persist-tun persist-key # указываем узловые точки виртуальной сети ifconfig 10.1.0.1 10.1.0.2 # добавляем маршрут к локальной сети филиала route 192.168.110.0 255.255.255.0 dh /etc/openvpn/keys/dh1024.pem ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key log /var/log/openvpn.log verb 3 Все готово, делаем рестарт сервера и убеждаемся в том, что все ОК: # /etc/init.d/openvpn restart # ps -ely | grep openvpn Для полного счастья добавляем правила в iptables (приведенный ниже вариант может отличаться, в зависимости от вашей конфигурации): iptables -A INPUT -p udp -dport 3333 -j ACCEPT iptables -A INPUT -i tun0 -j ACCEPT iptables -A FORWARD -i tun0 -j ACCEPT iptables -A FORWARD -o tun0 -j ACCEPT Установка клиента (serv2) В плане установки и настройки системы проделываем то же самое, что и с предыдущем сервером. # cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.0.0.20 netmask 255.255.255.0 auto eth1 iface eth1 inet static address 192.168.110.10 netmask 255.255.255.0 Сертификаты нужно скопировать с центрального сервера. Я для этих целей поднимал там ftp. dev tun tls-client remote 10.0.0.10 proto udp port 3333 comp-lzo persist-tun persist-key # указываем узловые точки виртуальной сети ifconfig 10.1.0.2 10.1.0.1 # добавляем маршрут к локальной сети офиса route 192.168.120.0 255.255.255.0 dh /etc/openvpn/keys/dh1024.pem ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/client.crt key /etc/openvpn/keys/client.key log /var/log/openvpn.log verb 3 Запускаем: # /etc/init.d/openvpn restart Правим фаервол: iptables -A INPUT -i tun0 -j ACCEPT iptables -A FORWARD -i tun0 -j ACCEPT iptables -A FORWARD -o tun0 -j ACCEPT Пингуем хосты противоположных сетей по их внутренним адресам с обоих серверов и с клиентских машин каждой локальной сети. Итоговые впечатления: все стабильно, секьюрно и удобно, а Ubuntu Server может быть достойной заменой Debian.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Genix, 11:27, 25/12/2008 [ответить] [смотреть все]
  • +/
    Соединение точка точка получилось, которое еще придется и руками править роутинг в случае изменения адресов (добавления новых сетей) на серверной стороне.
    Вместо этого лучше было бы заиспользовать push со стороны сервера на клиента -- тогда достаточно было бы только изменить конфиг и перестартануть сервер.
    Плюс в вашей схеме офисы не будут видеть друг друга.
     
     
  • 2.27, Alchemist, 00:18, 16/01/2009 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    В моей схеме офисы друг друга видели, иначе я эту статью не написал бы ... весь текст скрыт [показать] [показать ветку]
     
  • 1.2, гость, 12:04, 25/12/2008 [ответить] [смотреть все]  
  • +/
    делал подобное, клиенты - win сервера с openvpn. а так всё в бою работает, сети связывает... бывает тока у винды слетают маршруты, repair интерфейса делать приходиться, пока не нашёл почему и как
     
  • 1.3, metallic, 13:42, 25/12/2008 [ответить] [смотреть все]  
  • +/
    Сделал сервер на линуксе, клиент винда (openvpn-gui)
    Скажите, можно ли несколько сертификатов нагенерить, чтобы у каждого клиента свои были? Типа как пароли. И может ли сервер держать несколько соединений одновременно?
     
     
  • 2.4, f00fc7c8, 13:50, 25/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ответ на все вопросы - Да ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.5, metallic, 13:54, 25/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Еще два попроса 1 А можно вместо сертификатов использовать пароли 2 А можно ... весь текст скрыт [показать]
     
     
  • 4.7, StreSS, 15:20, 25/12/2008 [^] [ответить] [смотреть все]  
  • +/
    1 точно да 2 не уверен, но кажется тоже да... весь текст скрыт [показать]
     
     
  • 5.8, Zl0, 16:41, 25/12/2008 [^] [ответить] [смотреть все]  
  • +/
    2 корневой сертификат клиенту все равно будет нужен, но если на сервер указать ... весь текст скрыт [показать]
     
  • 5.11, Max, 18:41, 25/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Как без сертификатов Тут сертификат подтверждает, что к серверу подключился тот... весь текст скрыт [показать]
     
     
  • 6.15, User294, 19:30, 25/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Shared secret ом наприимер можно Тогда сертификаты не нужны но у метода есть ряд... весь текст скрыт [показать]
     
  • 6.18, Zl0, 07:29, 26/12/2008 [^] [ответить] [смотреть все]  
  • +/
    У нас сертификат используется как раз для того чтобы проверить что сервер настоя... весь текст скрыт [показать]
     
  • 4.17, el torito, 23:15, 25/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Я вместо как бы пароля использовал passphrase на ключ сертификата Это, конечно,... весь текст скрыт [показать]
     
     
  • 5.24, User294, 18:20, 26/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Он не проверяется локально, он позволяет локальному юзеру сертификат поюзать Без... весь текст скрыт [показать]
     
     ....нить скрыта, показать (9)

  • 1.6, Аноним, 14:26, 25/12/2008 [ответить] [смотреть все]  
  • +/
    комментарии полезнее чем сама заметка тем более поржал над поднятием ФТП для пе... весь текст скрыт [показать]
     
     
  • 2.9, metallic, 17:23, 25/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ну мне статья помогла, я как раз второй день инет рыл в поисках нормального руко... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.19, f00fc7c8, 09:24, 26/12/2008 [^] [ответить] [смотреть все]  
  • +/
    Степ бай степ, пока от монитора не ослеп Извините не удержался ... весь текст скрыт [показать]
     
  • 2.28, Alchemist, 00:24, 16/01/2009 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Все и сразу знать не возможно Спасибо за идею ... весь текст скрыт [показать] [показать ветку]
     
  • 1.10, metallic, 17:34, 25/12/2008 [ответить] [смотреть все]  
  • +/
    Кстати, в чем разница демон на tcp порту или udp?
     
     
  • 2.12, Max, 18:46, 25/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    UDP будет быстрей TCP 0 5mbit UDP 2-4mbit Это реальный пример впн UDP содержет ... весь текст скрыт [показать] [показать ветку]
     
  • 2.14, User294, 19:21, 25/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >Кстати, в чем разница демон на tcp порту или udp?

    Тем что TCP - это на крайний случай, когда UDP не пролезает, например бывает так что в некоторых конфигурациях файрвол или нат совсем мочат весь UDP траффик.Но если есть возможность использовать UDP - следует пользоваться именно им.Поскольку TCP своими повторами передач изрядно испортит жизнь протоколам пропихнутым в туннеле, которые на такую услугу не рассчитывают.Поэтому как правило данная услуга TCP оказывается медвежъей - в случае таймаута начинается штопор из потуг перепослать пакеты как TCP стэком так и теми протоколами которые внутри конекции жили, поскольку они обычно на надежность канала не рассчитывают(например TCP в впн не знает о том что он уже работает по надежному каналу).Ничего хорошего из такого штопора обычно не получается, обычно в итоге сильно просаживается скорость.Так что TCP - это на крайний случай, когда UDP не пролезает.

     
  • 2.16, Stell, 22:10, 25/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Подробно минусы TCP внутри TCP описаны здесь:
    http://sites.inka.de/sites/bigred/devel/tcp-tcp.html

    TCP, как и было сказано выше - компромисс, когда например туннель надо пропустить через HTTP proxy, с разрешенным методом CONNECT.

     
  • 2.25, remi, 15:37, 27/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Может быть, я чего-то не понимаю, или не до конца разобрался, но в использовании... весь текст скрыт [показать] [показать ветку]
     
  • 1.13, Boris, 18:55, 25/12/2008 [ответить] [смотреть все]  
  • +/
    разнича в том что по udp не требуется подтверждение о доставке пакетов и вся логика лежит на проге, у меня например по tcp голос заикается, а по udp всё хорошо.

    не понял как в данном примере оффисы видят друг друга, у меня немного по другому

    в серверном конфиге нужно прописать маршруты, тут это сделано
    route 192.168.110.0 255.255.255.0

    на на стороне клиента или через папку ccd(параметры отсылаемые клиенту) на стороне сервера
    нужно установить
    iroute 192.168.110.0 255.255.255.0

     
  • 1.20, metallic, 10:13, 26/12/2008 [ответить] [смотреть все]  
  • +/
    Еще вопрос, на клиенте (Windows, Openvpn GUI)
    Я использую такие настройки ключей:

    ca "c:\\key\\ca.crt"
    cert "C:\\key\\client.crt"
    key "C:\\key\\client.key"

    Т.е. клиентом используется три ключа для подключения, это нормально? Насколько это все безопасно. На сервере побольше ключей лежит, скажите, где можно теорию почитать, какой ключ какую роль выполняет.

     
     
  • 2.21, Zl0, 12:08, 26/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Это нормально и безопасно, точнее безопасность зависит не от того сколько у тебя сертификатов, а как они сгенерированы.
    Почитай
    http://openvpn.org/index.php/documentation/miscellaneous/rsa-key-management.h
     
     
  • 3.22, metallic, 12:13, 26/12/2008 [^] [ответить] [смотреть все]  
  • +/
    по дефолту KEY_SIZE=1024
    Этого хватит? Есть смысл 2048 ставить и более?
     
  • 1.23, DP, 17:00, 26/12/2008 [ответить] [смотреть все]  
  • +/
    У меня так уже месяц работает, только вот начал думать о ФАЙЛ-Оваре.
    Типа на сервера написать
    Local IP1
    Local IP2
    REMOTE IP3


    BRANCH
    Local IP3
    REMOTE IP1
    REMOTE IP2
    будет работать?

     
     
  • 2.26, Анонм, 18:22, 30/12/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >Типа на сервера написать

    Маркером на крышке корпуса?
    >будет работать?

    Думаю на работе сервера это не как не скажется, хотя он (сервер) может и обидеться :D

     
  • 1.29, Xaionaro, 13:51, 30/12/2009 [ответить] [смотреть все]  
  • +/
    Найденные описки:
    < # cd /usr/share/doc/openvpn/examples/easy-rsa/2,0
    > # cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
    ># ./pkitool -initca
    ># ./pkitool -server server

    <# ./pkitool --initca
    <# ./pkitool --server server

     
     
  • 2.30, Xaionaro, 13:52, 30/12/2009 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Сам описался :). Найденные описки:
    < # cd /usr/share/doc/openvpn/examples/easy-rsa/2,0
    > # cd /usr/share/doc/openvpn/examples/easy-rsa/2.0

    <# ./pkitool -initca
    <# ./pkitool -server server
    ># ./pkitool --initca
    ># ./pkitool --server server

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



    АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Подробнее о проведении акции вы можете прочитать на странице сайта.


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList