Openvpn, Подключение Домашних Сетей

Данная статья посвящена объединению нескольких домашних локальных сетей с прозрачным общим доступом к сетевым ресурсам с помощью VPN. Награжден за внедрение VPN openvpn .

Клиенты и сервер Openvpn устанавливаются на роутеры домашней сети, в данном случае роутеры семейства asus wl500, но данная инструкция вполне применима и к другим роутерам, где есть доступ к ОС и можно установить openvpn. Хотя подобных руководств в Интернете пруд пруди, они написаны больше для администраторов, имеющих большой опыт общения с *nix-системами, а пользователями домашних роутеров в основном являются не хакеры, а обычные пользователи, возможно, видевшие команду Linux линия впервые на этом самом роутере.

Постараюсь написать так, чтобы всем было понятно.

Для тех, кто не любит много букв, чтобы было понятно, о чем речь, под катом вот картинка

OpenVPN, подключение домашних сетей

Итак, позвольте мне еще раз формализовать задачу.

У нас есть несколько сетей, которые имеют доступ к Интернету через маршрутизатор; нам необходимо обеспечить доступ к ресурсам сетей друг друга через зашифрованный интернет-туннель.



Что вам там понадобится?

  1. Роутеры семейства asus wl500
  2. Очень желательно оснастить роутеры флешками, так как у роутера очень мало флешки и оперативной памяти, подойдет абсолютно любая, ну кроме очень редкого барахла, то есть меньше 9Мб.

    Чем не отличный повод побаловать себя новой флешкой? :)

  3. Хотя бы один из роутеров должен выходить в интернет с реальным IP-адресом, либо все роутеры должны находиться в одном сегменте локальной сети провайдера.

  4. Сети за маршрутизаторами должны иметь разные диапазоны адресов.

  5. Немного времени и мозга
Маршрутизаторы необходимо будет настроить вместе, поэтому желательно иметь к ним доступ одновременно.

Бегать из одной квартиры в другую не особо удобно, поэтому можно либо обеспечить доступ из интернета к компьютерам за роутерами (как это сделал я), либо просто собрать роутеры в одной квартире и присоединить клиентские роутеры (упс, я опередил от себя) к серверу-роутеру, то в месте их постоянной работы нужно будет только изменить адрес сервера openvpn.

Теория

Давайте кратко рассмотрим, как будет работать система.

Сеть состоит из сервера (на картинке это марсианский роутер) и клиентов Земля и Меркурий.

Сервер обеспечивает работу виртуальной сети, шифрование трафика и маршрутизацию пакетов из одной сети в другую.

Более подробно работа сервера показана на следующем рисунке (рисунок весьма условный, он предназначен только для общего понимания и не отражает компоненты программы).

В клиентском режиме openvpn работает точно так же, но не осуществляет маршрутизацию.



OpenVPN, подключение домашних сетей

Итак, у нас есть сеть с диапазоном адресов 192.168.1.1-192.168.1.255 за первым маршрутизатором (Марс) и с диапазоном 192.168.2.1-192.168.2.255 за маршрутизатором Земли.

OpenVPN создает специальную виртуальную сетевую карту tun0, и попавшие туда пакеты расшифровываются и отправляются на сервер (на серверном компьютере локально, на клиентском компьютере через Интернет), где они расшифровываются и отправляются через необходимые туннели на сервер.

место назначения.

Например, рассмотрим передачу пакета от компьютера Фобоса к компьютеру Луны.

Пакет с Фобоса отправляется на его шлюз по умолчанию — Марс, где в таблице маршрутизации написано, что его следует отправить в туннель tun0, откуда он попадает в openvpn, который уже знает, что пакеты для сети, включающей Луну, следует отправлять на туннель на Землю.

Прибыв на Землю, посылка будет благополучно отправлена на Луну, соединенную с Лоаком.



Упражняться

Прошиваем роутеры прошивкой от Олега и устанавливаем ikpg. Думаю многие пользователи wl500 знают эту процедуру.

Здесь очень подробно написано: http://wl500g.info/showthread.phpЭt=3171 .

Нужны шаги 1-4, собственно прошивка и 7, установка дополнительных пакетов.

После того, как все будет готово, устанавливаем туда необходимые пакеты командой ipkg install

  • openvpn — ну нетрудно догадаться :)
  • vim — текстовый редактор (тот, который встроен в оболочку, совершенно ни для чего не нужен)
  • wget-ssl — понадобится для обновления записей в DNS, если у сервера динамический внешний IP.
Пока пакеты устанавливаются, немного отдохнем от Linux и сгенерируем ключи для VPN-подключения.

Как это сделать под Windows (Linux, кажется, уже в теме :)) уже подробно обсуждалось на хабе , здесь нет смысла повторяться, стоит лишь добавить, что ca.key надо убрать куда-нибудь подальше, например записать на ненужную флешку, а флешку положить в сундук с 33 замками, так как зная ca.crt и ca.key вы можете легко подключить к домашней сети, что явно не входит в наши планы.

Имея под рукой сертификаты, необходимо поместить их на роутер, который будет сервером, так как это обычные текстовые файлы, их можно просто скопировать и вставить в текстовый редактор на роутере.

Подключаемся по телнету к роутеру, например C:\> telnet 192.168.1.1 Дальше: $vim /opt/etc/openvpn/keys/ca.crt Затем нажмите кнопку i и вставьте содержимое файла ca.crt. То же самое делаем с файлами dh2048.pem, mars.crt и mars.key. После этого нужно создать файл конфигурации openvpn, который идет в комплекте, его можно выкинуть и вставить вот этот: $rm /opt/etc/openvpn/openvpn.conf $vim /opt/etc/openvpn/openvpn.conf

разработка мелодии tls-сервер сервер 192.168.255.0 255.255.255.0 есликонфигурация 192.168.255.1 192.168.255.2 клиент-конфигурация-каталог ccd маршрут 192.168.255.0 255.255.255.0 #Диапазон IP VPN маршрут 192.168.2.0 255.255.255.0 #IP Диапазон Земли нажмите «маршрут 192.168.1.0 255.255.255.0» #Скажите клиентам, что у Марса есть LAN 192.168.1.0/24 #ключи дх /opt/etc/openvpn/keys/dh1024.pem ок /opt/etc/openvpn/keys/ca.crt сертификат /opt/etc/openvpn/keys/home2.crt ключ /opt/etc/openvpn/keys/home2.key #Не меняйте, если не знаете, что делаете клиент-клиент порт 1194 прото UDP пользователь никто группа никто комп-лзо упорствовать постоянный ключ глагол 3 log-append /opt/var/log/openvpn/openvpn.log статус /opt/var/log/openvpn/status.log поддерживать активность 10 60
Создадим директорию, в которой будет находиться конфигурация для клиентов $mkdir /opt/etc/openvpn/ccd/ В этом каталоге нужно создать файлы для тех клиентов, за которыми будут располагаться объединенные сети.

В нашем случае это клиент Earth, создайте файл Earth. $vim /opt/etc/openvpn/ccd/Earth Он будет состоять всего из одной строки

маршрут 192.168.2.0 255.255.255.0
Эта строка сообщает openvpn, куда отправлять пакеты для сети 192.168.2.0/24. Итак, перед запуском openvpn остаётся только подправить скрипт запуска /opt/etc/init.d/S20openvpn и убрать оттуда строку return 0. Всё, запускаем openvpn /opt/etc/init.d/S20openvpn Если все в порядке, то вывод будет netstat -ul | grep 1194 должен вывести скрипт

udp 0 0 *:1194 *:*

и в файле /opt/var/log/openvpn/openvpn.log появится запись об успешном запуске сервера.

Итак, сервер запущен, нам нужно разрешить прохождение пакетов через фаервол.

Для этого:

$iptables -I INPUT -p udp --dport 1194 -j ACCEPT $iptables -I FORWARD -i br0 -o tun0 -j ACCEPT $iptables -I FORWARD -i tun0 -o br0 -j ACCEPT $iptables -I INPUT -i tun0 -p tcp --dport 80 -j ACCEPT

Чтобы правила применялись каждый раз, их необходимо добавить в файл /usr/local/sbin/post-firewall, а в файл post-mount добавить строку /opt/etc/init.d/S20openvpn чтобы сервер запускался при каждом запуске маршрутизатора ($ обозначает приглашение командной строки, вам не нужно добавлять его в файлы!).

(Вы не забыли записать изменения во flashfs?) На этом настройка сервера практически завершена.

Единственное, если у сервера динамический IP, то нужно убедиться, что клиенты знают, какой IP у сервера в данный момент. Для этого существует такое понятие, как DDNS, то есть динамический DNS. У Asus есть встроенная поддержка некоторых провайдеров DDNS, но не всех, например.

мой Нет. Поэтому я написал простой скрипт, который обновляет IP на DNS, если изменился IP роутера:



#!/bin/sh IFACE="ppp0" TMPFILE="/tmp/oldip.txt" /sbin/ifconfig $IFACE > /dev/null 2>&1 if [ "$?" -ne "0" ] then logger "update_ip.sh: Interface $IFACE is down, exiting." exit 1 fi new=`/sbin/ifconfig $IFACE|grep inet\ addr|sed -e 's/.

*\ addr:\([0-9\.

]*\).

*/\1/'` if [ -f $TMPFILE ] then old=`cat $TMPFILE` else touch $TMPFILE old=" " fi if [ "$new" != "$old" ] then /opt/bin/wget --no-check-certificate " https://dynamicdns.park-your-domain.com/updateЭhost=mars&domain=yourdomain&password=PASSWORD " > /dev/null 2>&1 logger "update_ip.sh: New ip $new detected" echo $new > $TMPFILE fi

Как установить и настроить cron очень подробно написано здесь: wl500g.info/showpost.phpЭp=52524&postcount=1 И так, теперь перейдем к клиенту.

Установка клиента абсолютно такая же, как и сервера, единственное, нужно перегнать клиентские ключи (нам понадобятся ca.crt, Earth.crt, Earth.key) и немного другой конфиг.

Не забудьте отредактировать скрипт запуска.

Конфигурация клиента, в удаленном поле нужно вставить адрес сервера



client dev tun proto udp remote mars.yourdomain 1194 resolv-retry infinite nobind persist-key persist-tun ca /opt/etc/openvpn/keys/ca.crt cert /opt/etc/openvpn/keys/Earth.crt key /opt/etc/openvpn/keys/Eartth.key ns-cert-type server comp-lzo verb 3 log-append /opt/var/log/openvpn/openvpn.log status /opt/var/log/openvpn/status.log

Точно так же применяем правила iptables:

$iptables -I FORWARD -i br0 -o tun0 -j ACCEPT $iptables -I FORWARD -i tun0 -o br0 -j ACCEPT $iptables -I INPUT -i tun0 -p tcp --dport 80 -j ACCEPT

Запускаем на клиенте openvpn, он подключается к серверу и радуемся жизни.

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

Единственное, чего я не смог сделать, так это синхронизировать внутренние DNS-серверы, поэтому доступ к компьютерам между сетями приходится осуществлять по их IP. Ну, надеюсь, кому-то это будет полезно, я как-то устал писать этот эпический мануал.

Для выполнения домашнего задания подключите компьютер Mercury, чтобы он мог получить доступ к локальным ресурсам из любого места, например, через GPS или общедоступный Wi-Fi. В качестве расширенного домашнего задания удалите возможность Меркьюри подключаться к сети, изменив только конфигурацию Марса.

(с) Иван Лисенков 2009 г.

Теги: #открытый исходный код #vpn #openvpn #настройка Linux #WL-500gP #сетевое соединение #tun

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.