Предположим, что у нас есть 2 офиса в разных точках города, или же в разных городах или странах и каждый из них подключен к интернету по достаточно хорошему каналу. Нам нужно связать их в единую локальную сеть. В таком случае никто из пользователей не будет догадыватся где находится тот или иной компьютер или принтер в локальной сети, пользоватся принтерами, расшаренными папками и всеми преимуществами физической сети. Удаленные сотрудники подключившись по OpenVPN смогут также работать в сети, как-будто их компьютеры находятся в физической сети одного из офисов.
Настраивать будем в операционной системе Debian Squeeze, но инструкция полностью пременима к любому дистрибутиву основанному на Debian, и с небольшими изменениями в командах установки и настройки моста и OpenVPN будет применима к любому дистрибутиву Linux или FreeBSD.
Предположим, что дистрибутив Debian или Ubuntu установлены по одной из инструкций: Инструкция по установке Debian, Инструкция по установке Ubuntu
Установим и настроим VPN сеть на основе OpenVPN используя мост tap0
Создаем сетевой мост между физической сетевой eth1 и виртуальным интерфейсом tap0
Устанавливаем нужные программы согласившись на запрос менеджера пакетов:
aptitude install bridge-utils openvpn
Настраиваем сеть сервера исходя из того, что у нас 2 сетевые карты: сетевая eth0 - получает интернет от провайдера и через неё офис 1 выходит в интернет, а также сетевая eth1 - включена в свич локальной сети офиса 1, она будет включена в мост с интерфейсом br0
Редактируем конфигурационный файл /etc/network/interfaces:
vi /etc/network/interfaces
было:
auto lo iface lo inet loopback # internet provider auto eth0 iface eth0 inet static address 192.168.50.2 netmask 255.255.255.0 gateway 192.168.50.1 # local network auto eth0 iface eth0 inet static address 10.10.10.1 netmask 255.255.255.0
стало:
auto lo iface lo inet loopback # Прописываем мост, в него включаем VPN интерфейс tap0 и сетевую карту eth1 auto br0 iface br0 inet static # Добавляем в мост tap0 интерфейс openvpn bridge_ports eth1 tap0 address 10.10.10.1 netmask 255.255.255.0 # Internet auto eth0 iface eth0 inet static address 192.168.50.2 netmask 255.255.255.0 gateway 192.168.50.1
Сохраняем изменения и перезагружаем сеть командой:
/etc/init.d/networking restart
После этого при выполнении команды ifconfig должен появится мост br0 с IP 10.10.10.1, интерфейс eth0 c IP адресом 192.168.50.2 и интерфейс eth1 без IP адреса, так как он в мосте br0
Настраиваем OPENVPN:
Копируем скрипты для конфигурирования нашего openvpn сервера командой:
cp -Rp /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa
Вносим изменения в файл /etc/openvpn/easy-rsa/vars, чтобы определить глобальные переменные и при создании ключей поменьше вводить данных:
vi /etc/openvpn/easy-rsa/vars
было:
... export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="[email protected]"
стало:
... export KEY_COUNTRY="UA" export KEY_PROVINCE="11" export KEY_CITY="Kiev" export KEY_ORG="NameFirm" export KEY_EMAIL="[email protected]"
Переходим в папку с скриптами для создания сертификатов и ключей командой:
cd /etc/openvpn/easy-rsa/
Инициализируем PKI (Public Key Infrastructure) командами:
. ./vars ./clean-all
!!!Внимание. При выполнении команды ./clean-all удалятся все существующие сертификаты и ключи как сервера так и клиентов, потому не выполняйте на боевом сервере, или же выполняйте предварительно сохранив папку /etc/openvpn/ в архив командой:
tar cf - /etc/openvpn/ | gzip -c -9 > /home/openvpn_backup.tgz
Генерируем Certificate Authority (CA) сертификат и ключ командой:
./build-ca
Большинство параметров подхватятся из файла vars. Только параметр Name надо указать явно:
Name []:vpn
Вообще можете все поля заполнять каждый раз так, как Вам нужно.
Генерируем параметры Диффи - Хеллмана командой:
./build-dh
Генерируем сертификат и секретный ключ сервера, на запрос ввода пароля ничего не вводим, и при запросе Sign the certificate? [y/n]: вводим y и нажимаем Enter выполнив команду:
./build-key-server server
Все параметры принимаем по умолчанию. На запрос Common Name вводим server
Common Name (eg, your name or your server's hostname) [ ]:server
На вопросы Sign the certificate? и 1 out of 1 certificate requests certified, commit? отвечаем положительно:
Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y
Осталось создать сертификаты и ключи для клиентов. Сначала инициализируем параметры:
cd /etc/openvpn/easy-rsa/ . ./vars
Создаем ключи для пользователя server1. По примеру, пользователей добавляем столько, сколько нужно:
./build-key server1 ./build-key client1 ./build-key client2
Исходя из того, что сеть у нас 10.10.10.0/24 мы сразу выделяем пул адресов для компьютеров офиса 1 - 10.10.10.40-149, для офиса 2 выделяем пул адресов 10.10.10.150-254 и выделяем пул адресов для удаленных сотрудников 10.10.10.21-39.
Создаем папку /etc/openvpn/ccd/ где указываем какому клиенту какой айпи командой:
mkdir -p /etc/openvpn/ccd/
Прописываем каждому клиенту свой IP в сети командами::
echo "ifconfig-push 10.10.10.150 255.255.255.0" > /etc/openvpn/ccd/server1 echo "ifconfig-push 10.10.10.21 255.255.255.0" > /etc/openvpn/ccd/client1 echo "ifconfig-push 10.10.10.22 255.255.255.0" > /etc/openvpn/ccd/client2
Cоздаем конфигурационный файл сервера:
vi /etc/openvpn/server.conf ################################## port 1195 proto udp dev tap0 ca easy-rsa/keys/ca.crt cert easy-rsa/keys/server.crt key easy-rsa/keys/server.key # This file should be kept secret dh easy-rsa/keys/dh1024.pem mode server tls-server daemon ifconfig 10.10.10.1 255.255.255.0 client-config-dir /etc/openvpn/ccd keepalive 10 20 client-to-client comp-lzo persist-key persist-tun verb 3 log-append /var/log/openvpn.log #script-security 2 # раскоментировать при работе на OpenVPN версии от 2.4 up /etc/openvpn/up.sh #################################
Разрешаем OpenVPN запускать скрипты:
vi /etc/default/openvpn
было:
OPTARGS=""
стало:
OPTARGS="--script-security 2"
Создаем скрипт /etc/openvpn/up.sh запускающийся при запуске OpenVPN сервера:
vi /etc/openvpn/up.sh #!/bin/sh brctl addif br0 tap0 brctl addif br0 eth1 ifconfig tap0 0.0.0.0
Даем права на выполнение скрипта /etc/openvpn/up.sh командой:
chmod +x /etc/openvpn/up.sh
После этого перезагружаем OpenVPN сервер командой:
/etc/init.d/openvpn restart
Выполняем команду ifconfig, должен появится интерфейс tap0 без IP адреса.
Собираем архив с ключами для раздачи удаленным сотрудникам и отправки на офис 2
Создаем папки с именами пользователей командами:
mkdir -p /etc/openvpn/users/server1 mkdir -p /etc/openvpn/users/client1 mkdir -p /etc/openvpn/users/client2
Создаем папку с архивированными ключами командой:
mkdir -p /etc/openvpn/users_tgz
Собираем ключи и сертификаты по папкам пользователей командами:
cp /etc/openvpn/server/easy-rsa/keys/server1.key /etc/openvpn/users/server1/ cp /etc/openvpn/server/easy-rsa/keys/server1.crt /etc/openvpn/users/server1/ cp /etc/openvpn/server/easy-rsa/keys/ca.crt /etc/openvpn/users/server1/ cp /etc/openvpn/server/easy-rsa/keys/client1.key /etc/openvpn/users/client1/ cp /etc/openvpn/server/easy-rsa/keys/client1.crt /etc/openvpn/users/client1/ cp /etc/openvpn/server/easy-rsa/keys/ca.crt /etc/openvpn/users/client1/ cp /etc/openvpn/server/easy-rsa/keys/client2.key /etc/openvpn/users/client2/ cp /etc/openvpn/server/easy-rsa/keys/client2.crt /etc/openvpn/users/client2/ cp /etc/openvpn/server/easy-rsa/keys/ca.crt /etc/openvpn/users/client2/
Создаем конфигурационные файлы из расчета, что server1 - это сервер удаленного офиса 2, а client1 и client2 это удаленные сотрудники подключающиеся к VPN сети снаружи из Windows.
!!! Вместо IP-SERVER-VPN ставим внешний айпи адрес OpenVPN сервера.
Создаем конфигурационный файл OpenVPN для server1:
echo " remote IP-SERVER-VPN 1195 client dev tap0 proto udp resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert server1.crt key server1.key comp-lzo verb 4 mute 20 verb 3 log-append /var/log/openvpn.log up /etc/openvpn/up.sh " > /etc/openvpn/users/server1/server1.conf
Архивируем ключи для server1 командой:
tar cf - /etc/openvpn/users/server1 | gzip -c -9 > /etc/openvpn/users_tgz/server1.tgz
Создаем конфигурационый файл для client1:
echo " remote IP-SERVER-VPN 1195 client dev tap0 proto udp resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 4 mute 20 verb 3 " > /etc/openvpn/users/client1/client1.ovpn
Архивируем ключи для client1 командой:
tar cf - /etc/openvpn/users/client1 | gzip -c -9 > /etc/openvpn/users_tgz/client1.tgz
Создаем конфигурационый файл для client2 командой:
echo " remote IP-SERVER-VPN 1195 client dev tap0 proto udp resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client2.crt key client2.key comp-lzo verb 4 mute 20 verb 3 " > /etc/openvpn/users/client1/client2.ovpn
Архивируем ключи для client2 командой:
tar cf - /etc/openvpn/users/client2 | gzip -c -9 > /etc/openvpn/users_tgz/client2.tgz
Настраиваем VPN сервер офиса 2
В инструкции выше мы установили и настроили VPN сервер на Debian GNU/Linux используя OpenVPN, создали ключи с сертификатами для удаленного сервера офиса 2 и удаленных сотрудников. Теперь нам необходио соеденить офис 1 с офисом 2 в единую локальную сеть через VPN.
Предположим, что в офисе 2 у нас установлен и настроен Linux сервер (шлюз), который занимается распределением интернет канала для сотрудников офиса2. На этом сервере есть 2 сетевые карты: eth0 - интернет провайдер и eth1 - локальная сеть, она будет включена в мост, и будет иметь пул адресов 10.10.10.100-254
Нам необходимо установить програмное обеспечение командой:
aptitude install bridge-utils openvpn
Настраиваем сеть сервера
Настраиваем сеть исходя из того, что у нас 2 сетевые карты сетевая eth0 - получает интернет от провайдера и через неё офис 1 выходит в интернет, а также сетевая eth1 - включена в свич локальной сети офиса 1, она будет включена в мост с интерфейсом br0
Редактируем конфигурационный файл /etc/network/interfaces:
vi /etc/network/interfaces
было:
auto lo iface lo inet loopback # internet provider auto eth0 iface eth0 inet static address 192.168.60.2 netmask 255.255.255.0 gateway 192.168.60.1 # local network auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0
стало:
auto lo iface lo inet loopback # Прописываем мост, в него включаем VPN интерфейс tap0 и сетевую карту eth1 auto br0 iface br0 inet static # Добавляем в мост tap0 интерфейс openvpn bridge_ports eth1 tap0 address 10.10.10.150 netmask 255.255.255.0 # Internet auto eth0 iface eth0 inet static address 192.168.60.2 netmask 255.255.255.0 gateway 192.168.60.1
Сохраняем изменения и перезагружаем сеть командой:
/etc/init.d/networking restart
После этого при выполнении команды ifconfig должен появится мост br0 с IP 10.10.10.150, интерфейс eth0 c IP адресом 192.168.60.2 и интерфейс eth1 без IP адреса, так как он находится в мосте br0
Для компьютеров офиса 2 выдаем компьютерам IP адреса не выходя за рамки 10.10.10.150-254, где 10.10.10.150 - это IP адрес сервера офиса 2.
Заливаем с VPN сервера офиса 1 собранный архив ключей OpenVPN на сервер офиса 2 командой:
ssh -P22 /etc/openvpn/users_tgz/server1.tgz root@IP-SERVER:/root/
Или же, если server1 офиса 2 не имеет постоянного, либо динамического айпи будем сливать ключи с VPN сервера офиса 2 командой:
ssh -P22 root@IP-SERVER:/etc/openvpn/users_tgz/server1.tgz /root/
На запрос пароля - вводим пароль пользователя root, после ввода правильного пароля скачивается архив с ключами в папку /root/server1.tgz
Распаковываем содержимое архива (только файлы ключей без папок) /root/server1.tgz в папку /etc/openvpn/
Разрешаем OpenVPN запускать скрипты:
vi /etc/default/openvpn
было:
... OPTARGS=""
стало:
... OPTARGS="--script-security 2"
Создаем скрипт /etc/openvpn/up.sh запускающийся при подключении VPN клиента к VPN серверу:
vi /etc/openvpn/up.sh #!/bin/sh brctl addif br0 tap0 brctl addif br0 eth1 ifconfig tap0 0.0.0.0
chmod +x /etc/openvpn/up.sh
Перезагружаем OpenVPN сервер командой:
/etc/init.d/openvpn restart
При выполнении команды ifconfig должен появится интерфейс tap0 без IP адреса.
Теперь можно пинговать с обоих офисов компьютеры другого офиса, пользоватся расшаренными папками, принтерами, ресурсами другого офиса, а также устраивать игровые баталии офис 1 на офис 2 :)
Для проверки интерфейсов подключенных в мост, выполняем команду:
brctl show
Ответ системы:
bridge name bridge id STP enabled interfaces br0 7000.003ds4sDsf6 no eth1 tap0
Видим нашу локальную сетевую карту eth1 и виртуальный интерфейс OpenVPN tap0
Задача выполнена, два удаленных офиса соединены в одну локальную сеть.
Если Вам статья принесла пользу, поделитесь с друзьями кликнув по иконке Вашей социальной сети внизу данной статьи. Прокоментируйте пожалуйста данную инструкцию, понравилась ли она Вам, принесла пользу? Вы также можете подписатся на получение уведомлений о выходе новых статей на свою почту на странице Подписка на сайт SoftNastroy.COM
А теперь сделаем маленький перерывчик и половину минутки отдохнем подняв себе настроение для более продуктивной работы, просмотрим ролик и улыбнемся:
Add new comment