В данном руководстве мы обьединим 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,2 | 5,6 | 9,10 | 13,14 | 17,18 | 21,22 | 25,26 | 29,30 | 33,34 | 37,38 | 41,42 |
45,46 | 49,50 | 53,54 | 57,58 | 61,62 | 65,66 | 69,70 | 73,74 | 77,78 | 81,82 | 85,86 |
89,90 | 93,94 | 97,98 | 101,102 | 105,106 | 109,110 | 113,114 | 117,118 | 121,122 | 125,126 | 129,130 |
133,134 | 137,138 | 141,142 | 145,146 | 149,150 | 153,154 | 157,158 | 161,162 | 165,166 | 169,170 | 173,174 |
177,178 | 181,182 | 185,186 | 189,190 | 193,194 | 197,198 | 201,202 | 205,206 | 209,210 | 213,214 | 217,218 |
221,222 | 225,226 | 229,230 | 233,234 | 237,238 | 241,242 | 245,246 | 249,250 | 253,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
Генерируем параметры Диффи - Хеллмана выполнив команду:
./build-dh
Генерируем сертификат и секретный ключ сервера выполнив команду:
./build-key-server server
Все параметры принимаем по умолчанию. Большинство параметров подхватятся из файла vars. Только параметр Name необходимо указать явно:
Name []: server
Добавим сразу и ключи для наших двух офисов, которые будут подключатся к серверу OpenVPN:
./build-key office2 ./build-key office3
Все параметры принимаем по умолчанию. На запрос Name вводим соответственно названия офиса: office1, office2:
Если через некоторое время Вам понадобится добавить еще один офис либо несколько удаленных сотрудников, необходимо выполнить команду:
. ./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 пинговали компьютеры другого офиса, они должны иметь шлюзом свой сервер.
После всей проделанной работы, можете пинговать компьютеры другого офиса.
Данное руководство по соединению локальных сетей разных офисов завершено.
С Вами был Сергей Лазаренко.
Сделаем небольшой перерывчик в работе и просмотрим видео о том как расжечь костер Нодья, такое знание не носить за плечами, может быть когда и пригодится:
Add new comment