Создаём виртуальную локальную сеть

    Эту статью написал не я, а мой друг, который пока не присутствует на хабре. Если хотите, можете отправить инвайт на mail@feduza.ru

    Когда-то давно мне попалась на глаза программа Hamachi, с помощью которой можно создать виртуальную локальную сеть, не имея «реальных» IP-адресов. Но в какой-то момент мне захотелось получить подобный сервис собственной реализации.
    Тут на помощь мне пришел OpenVPN.

    Итак, задача:
    Имея VPS под Debian Lenny, создать виртуальную локальную сеть с клиентами под Linux и Windows XP.


    Настройка сервера:

    Конечно подразумевается, что на нашем VPS IP-адрес белый и разрешено использование tun.

    Подключаемся к серверу и устанавливаем openvpn и openssl:
    apt-get install openvpn
    apt-get install openssl


    Копируем содержимое папки easy-rsa в директорию openvpn:
    cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/


    Заходим в директорию /etc/openvpn/easy-rsa/2.0
    Открываем текстовым редактором файл vars и в его конце видим:
    export KEY_COUNTRY=«US»
    export KEY_PROVINCE=«CA»
    export KEY_CITY=«SanFrancisco»
    export KEY_ORG=«Fort-Funston»
    export KEY_EMAIL=«me@myhost.mydomain»

    Редактируем параметры в кавычках так, как нам хочется.

    Выполняем следующие команды:
    . ./vars
    ./clean-all
    ./build-ca


    Последняя команда создает сертификат для нашего сервера, используя параметры, которые мы прописали в файле vars, за исключением Common Name, его пишем сами.

    Генерим ключик для сервера:
    ./build-key-server server

    В пункте Common Name пишем server.

    Теперь для клиента:
    ./build-key client1

    В пункте Common Name пишем client1.

    Создаем ключ Диффи — Хеллмана:
    ./build-dh


    Копируем файлы ca.crt ca.key dh1024.pem server.crt server.key в папку openvpn:
    cd /etc/openvpn/easy-rsa/2.0/keys
    cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn


    Переходим в /etc/openvpn/ и открываем/создаем файл openvpn.conf следующего содержания:
    port 1194
    proto tcp
    dev tun
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 172.16.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    comp-lzo
    user nobody
    group users
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3
    client-to-client


    Запускаем сервер:
    /etc/init.d/openvpn start


    в ifconfig должен появиться сетевой адаптер tun0 c IP 172.16.0.1.

    Настройка клиента под Linux:

    Для начала опять же ставим openvpn.
    Теперь надо передать на клиентскую машину файлы ca.crt client1.crt client1.key
    (лежат в директории /etc/openvpn/easy-rsa/2.0/keys/ сервера)
    и положить их папку /etc/openvpn/
    после чего открыть/создать файл /etc/openvpn/openvpn.conf:
    client
    dev tun
    proto tcp
    remote реальный_IP-адрес_нашего_сервера 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert client1.crt
    key client1.key
    comp-lzo
    verb 3


    (в нашем случае имя клиента — client1)

    Теперь запускаем openvpn:
    /etc/init.d/openvpn start


    Настройка клиента под Windows XP:

    Качаем и устанавливаем Openvpn GUI.
    Кидаем нужные файлы (см.предыдущий пункт) в папку C:\Program Files\OpenVPN\config\,
    после чего в трее находим значок openvpn gui, жмём правой кнопкой и выбираем «Connect».

    Подключение остальных клиентов:
    Заходим на сервере в папку /etc/openvpn/easy-rsa/2.0
    Выполняем команды:
    source ./vars
    ./build-key имя_клиента


    Кидаем клиенту файлы ca.crt имя_клиента.crt имя_клиента.key
    Далее клиент делает все по мануалам выше.

    Конец.
    Поделиться публикацией
    Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: adv@tmtm.ru с темой «Полундра»

    Зачем оно вам?
    Реклама
    Комментарии 12
    • +2
      Любопытно! Раз уж было сравнение с Хамачи — то все ли по OpenVPN работает также хорошо? Т.е. нормально ли работают игрушки, которые ищут себе «партнеров» только броадкастами? Что с IPX/SPX, можно ли использовать?
      • +3
        Так многообещающе началось про хамачи, а на самом деле рассказано про банальную настройку с
        remote реальный_IP-адрес_нашего_сервера 1194
        Кроме того, если надо создать сетку без наворотов между двумя компами, то весь этот огород городить совершенно незачем. Достаточно shared_secret_file, как описано хотя бы тут.
      • +1
        Больше VPN, хороших и разных :-). Я уже как-то тут писал про N2N — весьма приятная вещь.
        • +1
          Такое реализовано, к примеру, в игровых программах PlayOnLan.
          • 0
            таких манов в интернете — миллион. в чём фишка-то?
            • 0
              в том что миллион первый будет на хабре
              • 0
                Фишка в том, что я миллион их прочитал, а «волшебной таблеткой», оказался только этот.

                Т.к. Debian и знаний маловато. Другие авторы, сказали лишнего, нужного недосказали, в итоге не настроил. Это решение, если почти слепо следовать копипасте — вполне рабочее.
              • 0
                Хамачи ценна тем, что позволяет создать сеть между людьми за файрволлами, без прямых айпи. А сделать vpn сервер полно способов.
                • 0
                  в случае с OVPN нужен только один человек имеет реальный адрес или посредник типа меня :)

                  p.s.
                  очередная статья «я не осилил дефотные экзамплы» или «учимся читать примеры вместе»
                  p.p.s.
                  нафига dh1024? так ли важно шифрование? Почему вы все tun используете? tap кашернее! verb3 — зачем О_О

                  remote реальный_IP-адрес_нашего_сервера 1194
                  resolv-retry infinite — индус?

                  proto tcp — udp кашернее!
                • 0
                  Есть еще программка Garena, правда, несколько по другому принципу работает, но для игры по отзывам удобнее. www.garena.com/
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Что то мне эта статья напоминает library.linode.com/networking/openvpn/ubuntu-10.04-lucid

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.