Пользователь
0,0
рейтинг
8 января 2010 в 02:03

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

Эту статью написал не я, а мой друг, который пока не присутствует на хабре. Если хотите, можете отправить инвайт на 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
Далее клиент делает все по мануалам выше.

Конец.
@lgyanf
карма
18,3
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (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

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