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

 

06
Jun 2014
sergldom
автор
1
комментариев
Рейтинг статьи:
5
Average: 4.3 (4 votes)

Соединяем сети используя OpenVPN в Debian через TUN - подробное руководство

      В данном руководстве мы обьединим 3 офиса, каждый со своей подсетью в единую локальную сеть используя операционную систему Linux Debian Wheezy, програмное обеспечение OpenVPN и Arno-Iptables-Firewall.
      Сам сервер OpenVPN будем настраивать через интерфейс tun.
      В каждом из офисов устанавливаем на сервер с 2 сетевыми картами операционную систему Debian 7 Wheezy по инструкции установка Debian Wheezy с подробными скриншотами, подключаем провайдера интернета. Обязательно на одном из серверов офиса должен быть чесный(белый) статический айпи адрес, так как к нему будут подключатся остальные сервера офисов.

      НО!!! вполне возможна работа и через динамический DNS используя сервис no-ip.com. Динамический IP использовался мною c провайдером DSL на данном сервисе более 4 лет и отлично показал себя в работе 24/7.

      Если для организации необходимо предоставить подключение удаленных сотрудников к сетевым службам и сэкономить на рабочем месте, то  подключение по OpenVPN будет одним из лучших, простых и безопасных решений. Удаленные сотрудники смогут также работать в сети, как-будто их компьютеры находятся в сети офисов.

Сетевые карты на всех серверах:

  • eth0 - Локальная сеть
  • eth1 - Интернет провайдер

Настроить сеть и интернет на каждом сервере можно по инструкции: Настройка подключения к Интернет, а также настройка сетевых карт на сервере в Debian, Ubuntu и их производных

      Для внутренней VPN сети выделяем себе подсеть:

  • VPN: 192.168.255.0/24

      Сетевая адресация локальных сетей по офисам, каждый сервер имеет свой привязанный IP в подсети VPN:
Офис1:

  • Внешний IP: 95.243.2.27
  • Локальная сеть: 192.168.10.0/24
  • IP VPN: 192.168.255.1

Офис 2:

  • Локальная сеть: 192.168.20.0/24
  • IP VPN: 192.168.255.5

Офис 3:

  • Локальная сеть: 192.168.30.0/24
  • IP VPN: 192.168.255.9

      Для серверов можно выбрать себе другой айпи из таблицы ниже, если Вы будете подключать удаленных сотрудников, из этой же таблицы выбираем им IP:

1,25,69,1013,1417,1821,2225,2629,3033,3437,3841,42
45,4649,5053,5457,5861,6265,6669,7073,7477,7881,8285,86
89,9093,9497,98101,102105,106109,110113,114117,118121,122125,126129,130
133,134137,138141,142145,146149,150153,154157,158161,162165,166169,170173,174
177,178181,182185,186189,190193,194197,198201,202205,206209,210213,214217,218
221,222225,226229,230233,234237,238241,242245,246249,250253,254 

      Приступаем к установке и настройке сервера OpenVPN.

      На каждом сервере устанавливаем OpenVPN сервер выполнив команду:

aptitude install openvpn

      Копируем скрипты для формирования ключей и сертификатов выполнив команду:

cp -Rp /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/vpn-tun

Отредактируем основные параметры в файле vars, чтобы не прописывать каждый раз как будем создавать пользователей:

vi /etc/openvpn/vpn-tun/vars
export KEY_COUNTRY="UA"
export KEY_PROVINCE="11"
export KEY_CITY="Kiev"
export KEY_ORG="Firmname"
export KEY_EMAIL="[email protected]"

      Переходим в скопированную папку:

cd /etc/openvpn/vpn-tun/

      Инициализируем PKI (Public Key Infrastructure) выполнив команды:

. ./vars
./clean-all

      Генерируем Certificate Authority (CA) сертификат и ключ выполнив команду:

./build-ca

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

Organizational Unit Name (eg, section) []:Firmname
Name []:vpn

Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 1

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

./build-dh

Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 2

      Генерируем сертификат и секретный ключ сервера выполнив команду:

./build-key-server server

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

Name []: server

Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 3

      Добавим сразу и ключи для наших двух офисов, которые будут подключатся к серверу OpenVPN:

./build-key office2
./build-key office3

      Все параметры принимаем по умолчанию. На запрос Name вводим соответственно названия офиса: office1, office2:

Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 4   Настройка OpenVPN TUN для соединения локальных сетей - настройка OpenVPN в Debian Wheezy - 5

 

      Если через некоторое время Вам понадобится добавить еще один офис либо несколько удаленных сотрудников, необходимо выполнить команду:

. ./vars

      После этого командой ./build-key user1 добавляем необходимое количество клиентов OpenVPN сервера, не забудьте только создать ccd файл для нового клиента VPN сети.
      Создадим папку ccd выполнив команду:

mkdir -p /etc/openvpn/vpn-tun/ccd/

      Создадим ccd файл для каждого офиса, в котором пропишем постоянный IP (IP выбираем из таблицы IP в статье выше) и маршруты:

      Создаем ccd файл для офиса 2 выполнив команду:

echo '
#disable
ifconfig-push 192.168.255.5 192.168.255.6
iroute 192.168.20.0 255.255.255.0
push "route 192.168.10.0 255.255.255.0"
push "route 192.168.30.0 255.255.255.0"
' > /etc/openvpn/vpn-tun/ccd/office2

      Создаем ccd файл для офиса 3 выполнив команду:

echo '
#disable
ifconfig-push 192.168.255.9 192.168.255.10
iroute 192.168.30.0 255.255.255.0
push "route 192.168.10.0 255.255.255.0"
push "route 192.168.20.0 255.255.255.0"
' > /etc/openvpn/vpn-tun/ccd/office3

      !!! Если какой-либо из клиентов необходимо будет отключить, просто раскоментируем параметр disable убрав символ #

Создаем конфигурационный файл OpenVPN сервера выполнив команду:

echo '
dev tun
port 1194
proto udp
tls-server

server 192.168.255.0 255.255.255.0
ifconfig 192.168.255.1 192.168.255.2

route 192.168.20.0 255.255.255.0 # Подсеть Office2
route 192.168.30.0 255.255.255.0 # Подсеть Office3

ca /etc/openvpn/vpn-tun/keys/ca.crt
cert /etc/openvpn/vpn-tun/keys/server.crt
key /etc/openvpn/vpn-tun/keys/server.key
dh /etc/openvpn/vpn-tun/keys/dh1024.pem

client-to-client
client-config-dir /etc/openvpn/vpn-tun/ccd
comp-lzo
persist-tun
persist-key
verb 3
keepalive 10 60
ifconfig-pool-persist ipp.txt # Тут будут храниться ip адреса клиентов

log-append /var/log/openvpn_tun.log
status /var/log/openvpn_status_tun.log
' > /etc/openvpn/server-tun.conf

Создадим папку куда скопируем ключи и конфиг для клиентов выполнив команды:

mkdir -p /etc/openvpn/users/office2
mkdir -p /etc/openvpn/users/office3

      Создадим конфигурационный файл для офиса2 предварительно изменив ip_openvpn_server на внешний IP сервера office1 либо доменное имя:

echo '
remote ip_openvpn_server 1194
client
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert office2.crt
key office2.key
comp-lzo
verb 4
mute 20
verb 3
#redirect-gateway
log-append /var/log/openvpn_office2_to_office1.log
' > /etc/openvpn/users/office2/office2_to_office1.conf

      Создадим конфигурационный файл для офиса2 предварительно изменив ip_openvpn_server на внешний IP сервера office1 либо доменное имя:

echo '
remote ip_openvpn_server 1194
client
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert office3.crt
key office3.key
comp-lzo
verb 4
mute 20
verb 3
#redirect-gateway
log-append /var/log/openvpn_office3_to_office1.log
' > /etc/openvpn/users/office3/office3_to_office1.conf

      !!!! Если необходимо чтобы вся сеть офиса 2 либо офиса 3, либо в дальнейшем подключаемого удаленного сотрудника проходила через VPN главного сервера (офис 1), например для сокрытия своего внешнего IP необходимо раскоментировать параметр redirect-gateway, убрав #.  После раскоментирования необходимо будет разрешить NAT, для IP VPN нужного клиента на офисном сервере, именно параметр NAT_INTERNAL_NET=""   в файле /etc/arno-iptables-firewall/conf.d/00debconf.conf. Если необходимо добавить несколько IP, они разделяются запятой.

.

      Скопируем сертификаты и ключ для офиса 1 и офиса 2:

cp /etc/openvpn/vpn-tun/keys/office2.key /etc/openvpn/users/office2/
cp /etc/openvpn/vpn-tun/keys/office2.crt /etc/openvpn/users/office2/
cp /etc/openvpn/vpn-tun/keys/ca.crt /etc/openvpn/users/office2/

cp /etc/openvpn/vpn-tun/keys/office3.key /etc/openvpn/users/office3/
cp /etc/openvpn/vpn-tun/keys/office3.crt /etc/openvpn/users/office3/
cp /etc/openvpn/vpn-tun/keys/ca.crt /etc/openvpn/users/office3/

Архивируем папку с ключами для каждого офиса:

cd /etc/openvpn/users/
tar cf - office2/ | gzip -c -9 > office2.tgz
tar cf - office3/ | gzip -c -9 > office3.tgz

      Забрасываем архив с ключами на сервера офисов:
      Копируем на сервера офиса2 и офиса3 при наличии внешнего айпи командой:

scp -P22 /etc/openvpn/users/office2.tgz root@ip_office2:/etc/openvpn/
scp -P22 /etc/openvpn/users/office3.tgz root@ip_office3:/etc/openvpn/

Если нет внешнего айпи, тогда копируем с сервера офиса2 и офиса3 командой:

scp -P22 root@ip_office1:/etc/openvpn/users/office2.tgz /etc/openvpn/
scp -P22 root@ip_office1:/etc/openvpn/users/office3.tgz /etc/openvpn/

      На сервере офиса 2 распаковываем архив выполнив команды:

cd /etc/openvpn/
tar xvf office2.tgz
mv office2/* .
rmdir office2/

      На сервере офиса 2 распаковываем архив выполнив команды:

cd /etc/openvpn/
tar xvf office3.tgz
mv office3/* .
rmdir office3/

      После этого перегружаем сервер OpenVPN на каждом сервере и через минутку пробуем пинговать ip 192.168.255.1, 192.168.255.5 и 192.168.255.9  - IP серверов. Команда перезагрузки OpenVPN сервера:

/etc/init.d/openvpn restart

 

      Устанавливаем и настраиваем Arno-Iptables-Firewall

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

      Устанавливаем файрволл Arno-Iptables-Firewall выполнив команду:

aptitude install arno-iptables-firewall

      Отвечаем на вопросы инсталятора и настраиваем Arno-Iptables-Firewall согласно инструкции по установке и настройке Arno-Iptables-Firewall:

      Настраиваем файрволл Office1:
В нашем случае открываем порты на tcp 22 порт  и на udp 1194 порт:

vi /etc/arno-iptables-firewall/conf.d/00debconf.conf
EXT_IF="eth1"
EXT_IF_DHCP_IP=1
OPEN_TCP="22"
OPEN_UDP="1194"
INT_IF="eth0 tun+"
NAT=1
INTERNAL_NET="192.168.10.0/24 192.168.20.0/24 192.168.30.0/24 192.168.255.0/24"
NAT_INTERNAL_NET=""
OPEN_ICMP=1

В файл /etc/arno-iptables-firewall/custom-rules вносим код:
# openvpn Server
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 121 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 53 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 53 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 69 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 139 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 445 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 137 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 138 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 901 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 9100 -j ACCEPT
iptables -I INPUT -i tun0 -p ICMP --icmp-type 8 -j ACCEPT
iptables -I INPUT -i tun0 -p ICMP --icmp-type 11 -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o tun0 -j MASQUERADE

      Настраиваем файрволл Office2:
В нашем случае открываем порты на tcp 22 порт  и на udp 1194 порт:

vi /etc/arno-iptables-firewall/conf.d/00debconf.conf
EXT_IF="eth1"
EXT_IF_DHCP_IP=1
OPEN_TCP="22"
OPEN_UDP=""
INT_IF="eth0 tun+"
NAT=1
INTERNAL_NET="192.168.10.0/24 192.168.20.0/24 192.168.30.0/24 192.168.255.0/24"
NAT_INTERNAL_NET=""
OPEN_ICMP=1

В файл /etc/arno-iptables-firewall/custom-rules вносим код:
# openvpn Server
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 121 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 53 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 53 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 69 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 139 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 445 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 137 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 138 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 901 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 9100 -j ACCEPT
iptables -I INPUT -i tun0 -p ICMP --icmp-type 8 -j ACCEPT
iptables -I INPUT -i tun0 -p ICMP --icmp-type 11 -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o tun0 -j MASQUERADE

      Настраиваем файрволл Office3:
В нашем случае открываем порты на tcp 22 порт:

vi /etc/arno-iptables-firewall/conf.d/00debconf.conf
EXT_IF="eth1"
EXT_IF_DHCP_IP=1
OPEN_TCP="22"
OPEN_UDP=""
INT_IF="eth0 tun+"
NAT=1
INTERNAL_NET="192.168.10.0/24 192.168.20.0/24 192.168.30.0/24 192.168.255.0/24"
NAT_INTERNAL_NET=""
OPEN_ICMP=1

В файл /etc/arno-iptables-firewall/custom-rules вносим код:
# openvpn Server
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 121 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 53 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 53 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 69 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 139 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 445 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 137 -j ACCEPT
iptables -I INPUT -i tun0 -p udp --dport 138 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 901 -j ACCEPT
iptables -I INPUT -i tun0 -p tcp --dport 9100 -j ACCEPT
iptables -I INPUT -i tun0 -p ICMP --icmp-type 8 -j ACCEPT
iptables -I INPUT -i tun0 -p ICMP --icmp-type 11 -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o tun0 -j MASQUERADE

      !!! Для того, чтобы все компьютеры за серверами с OpenVPN пинговали компьютеры другого офиса, они должны иметь шлюзом свой сервер.

       После всей проделанной работы, можете пинговать компьютеры другого офиса.
       Данное руководство по соединению локальных сетей разных офисов завершено.

С Вами был Сергей Лазаренко.

      Сделаем небольшой перерывчик в работе и просмотрим видео о том как расжечь костер Нодья, такое знание не носить за плечами, может быть когда и пригодится:

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

5
Average: 4.3 (4 votes)

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

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

 

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

 

 
 

 

1 комментария:
aprog
16/01/2016 - 18:54
Спасибо за пост. Еще интересует настройка мобильных клиентов, типа как здесь - http://sysadm.pp.ua/linux/shifrovanie/openvpn-client-server.html . Посоветуйте, пожалуйста, хорошый и удобный мобильный OpenVPN клиент ?

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.