Установка и настройка серверов Linux,создание сайтов, установка и настройка Asterisk PBX, Linux для начинающих и не только.
Получать статьи этого сайта на почту:

 

27
Dec 2012
sergldom
автор
6
комментариев
Рейтинг статьи:
5
Average: 4.5 (2 votes)

Объединение двух удаленных офисов и любого количества удаленных сотрудников в единую локальную сеть через VPN используя OpenVPN в Debian & Ubuntu & Linux

Настраиваем локальную сеть через VPN для удаленных офисов через OpenVPN      Предположим, что у нас есть 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

Соединяем 2 удаленных офиса в одну локальную сеть с помощью OpenVPN, инициализируем PKI и генерируем Certificate Authority (CA)

Большинство параметров подхватятся из файла vars. Только параметр Name надо указать явно:

Name []:vpn

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

Генерируем параметры Диффи - Хеллмана командой:

./build-dh

Соединяем 2 удаленных офиса в одну локальную сеть с помощью OpenVPN, генерируем параметры Диффи - Хеллмана

Генерируем сертификат и секретный ключ сервера, на запрос ввода пароля ничего не вводим, и при запросе Sign the certificate? [y/n]: вводим y и нажимаем Enter  выполнив команду:

./build-key-server server

Соединяем 2 удаленных офиса в одну локальную сеть с помощью OpenVPN, генерируем сертификат и секретный ключ сервера

Все параметры принимаем по умолчанию. На запрос 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. По примеру, пользователей добавляем столько, сколько нужно:

Соединяем 2 удаленных офиса в одну локальную сеть с помощью OpenVPN, генерируем сертификат и ключ клиента

 

./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

 

А теперь сделаем маленький перерывчик и  половину минутки отдохнем подняв себе настроение для более продуктивной работы, просмотрим ролик и улыбнемся:

 

 

Рейтинг статьи: 

5
Average: 4.5 (2 votes)

Вам понравилась статья? Хотите получать уведомления о выходе новых статей с этого сайта на свой почтовый адрес? Подписывайтесь пожалуйста. Введите свой почтовый адрес и нажмите кнопку Хочу получать статьи!

<![CDATA[]]><![CDATA[]]>

 

*Адреса электронной почты не разглашаются и не предоставляются третьим лицам для коммерческого или некоммерческого использования.

 

 
 

 

6 комментария:
Александр Viter
12/01/2017 - 10:52
Здравствуйте. Наткнулся на вашу статью. Очень интересная и подробная. Спасибо за ваши труды! Нужен совет. Была у меня локалка, в ней по вашей схеме развернут OPENVPN сервер. в придж объединен интерфес eth1 (локалка) и tun0 (тунель). Сейчас вынужден разбить локалку на подсети. Заступорился я на моменте, когда нужно юзеров из тунеля запихнуть в отдельный vlan. Если я правильно понимаю, то достаточно поднять интерфейс tun0 туда направить DHCP сервер и будет все работать. Особо экспериментировать не могу, т.к. сервер боевой. Можете помочь советом и пнуть в нужном направлении) За ранее спасибо
12/01/2017 - 19:32
Не tun0 а tap
Александр Viter
16/01/2017 - 13:00
В моей схеме нужен tap0, т.к. один из удаленных клиентов будет роутер микротик. Микротики умеют работать с OPENVPN только через интерфейс tap и протокол tcp
16/01/2017 - 14:09
И в чем проблема поднять tap
Динар
18/10/2017 - 23:27
Добрый день. Настроил по Вашей статье сеть в офисе на Ubuntu 14.04 Сейчас пытаюсь сделать на Debian 9 ничего не получается. net-tools установил, не помогло, какая-то ошибка при создании моста. Что можете посоветовать? Спасибо.
18/10/2017 - 23:40
Здравствуйте, если у вас не запускается впн сервер добавьте в конфигурации сервера параметр: script-security 2 Или у вас мост не создаётся?

Add new comment

Filtered HTML

  • Search Engines will index and follow ONLY links to allowed domains.

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Search Engines will index and follow ONLY links to allowed domains.

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.