Записи с Меткой ‘ openvpn

openvpn distr win client

Distrib win

OpenVPN настройка сервера для филиалов + мои рабочие конфиги

Спасибо

http://www.ylsoftware.com/news/393

 

Соединение нескольких офисов в одну сеть с помощью OpenVPN

 

Итак. Допустим что у некоторой фирмы есть несколько офисов в различных точках города (возможно даже земного шара — не суть важно) и нам нужно обеспечить максимально простой способ взаимодействия локальных сетей различных офисов между собой. Неплохим решением этой задачи будет объединение этих сетей посредством OpenVPN.

Итак. Уточним начальные условия:


Центральный офис (office-0):

Сервер под управлением Debian Linux. Три сетевых интерфейса: eth0, eth1, eth2. Конфигурация следующая:

  • eth0: внешний интерфейс, имеющий реальный ip-адрес a.b.c.d.
  • eth1: первая локальная сеть: 192.168.1.1/24.
  • eth2: вторая локальная сеть: 192.168.2.1/24.

Офис 1 (office-1):

Под управлением Debian Linux. Два интерфейса:

  • eth0: внешний интерфейс, имеющий доступ к адресу a.b.c.d (каким либо образом).
  • eth1: локальная сеть: 192.168.3.1/24.

Офис 2 (office-2)

Сервер полностью аналогичен серверу в первом офисе, за исключением eth1: там адрес 192.168.4.1/24.


Объединять мы будем сервера в виртуальную сеть 192.168.10.0/24. Поэтому на всех серверах должен быть настроен NAT не только для «своих» сетей, но и для сети 192.168.10.0/24.

Будем считать что всё это уже сделано. Приступаем к установке и настройке OpenVPN-сервера:

apt-get install openvpn

Создаём файл конфигурации /etc/openvpn/server.conf следующего содержания:

mode server
tls-server
daemon

ifconfig 192.168.10.1 255.255.255.0

port 1194
proto tcp-server
dev tap
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/office-0.crt
key /etc/openvpn/keys/office-0.key
dh /etc/openvpn/keys/dh1024.pem
client-config-dir /etc/openvpn/ccd
push "route 192.168.10.0 255.255.255.0 192.168.10.1"
route 192.168.3.0/24 192.168.10.101 # Обратная видимость сети филиала
route 192.168.4.0/24 192.168.10.102 # Обратная видимость сети филиала
keepalive 10 120
client-to-client
comp-lzo
persist-key
persist-tun
verb 3
log-append /var/log/openvpn.log

Создаём каталог, в котором будут хранится индивидуальные настройки клиентов:

mkdir /etc/openvpn/ccd

Копируем скрипты для генерации ключей и создаём ключи:

cp -vR /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/
mkdir /etc/openvpn/2.0/keys
ln -s /etc/openvpn/2.0/keys /etc/openvpn/keys
cd /etc/openvpn/2.0/keys
source ./vars
./clean-all
./build-ca
./build-dh

# Ключ для центрального офиса
./build-key-server office-0

# Ключ для первого офиса
./build-key office-1

# Ключ для второго офиса
./build-key office-2

Входе выполнения этих команд будет задан ряд вопросов. Ответы на них вобщем-то очевидны, поэтому заострять на них внимание не будем.

Далее создаём файлы /etc/openvpn/ccd/office-1 и /etc/openvpn/ccd/office-2. Содержание первого:

# приcваиваем ip-адрес
ifconfig-push 192.168.10.101 255.255.255.0

# роутинг на сети центрального офиса
push "route 192.168.1.0 255.255.255.0 192.168.10.1"
push "route 192.168.2.0 255.255.255.0 192.168.10.1"

# роутинг на сеть второго офиса
push "route 192.168.4.0 255.255.255.0 192.168.10.102"

Содержание второго:

# присваиваем ip-адрес
ifconfig-push 192.168.10.102 255.255.255.0

# роутинг на сети центрального офиса
push "route 192.168.1.0 255.255.255.0 192.168.10.1"
push "route 192.168.2.0 255.255.255.0 192.168.10.1"

# роутинг на сеть первого офиса
push "route 192.168.3.0 255.255.255.0 192.168.10.101"

На этом настрока сервера завершена. Перезапускаем его:

/etc/init.d/openvpn restart

Убеждаемся что поднялся интерфейс tap0:

ifconfig tap0

Переходим к настройке офисов. Рассмотрим только один. Второй будет сделан аналогично, за исключением имён сертификатов.

Устанавливаем openvpn:

apt-get install openvpn
mkdir /etc/openvpn/keys

Создаём файл конфигурации /etc/openvpn/client.conf:

client
dev tap
proto tcp

# адрес сервера в центрально офисе
remote a.b.c.d 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca ca.crt
cert /etc/openvpn/keys/office-1.crt
key /etc/openvpn/keys/office-1.key
log-append /var/log/openvpn.log

Далее нам нужно поместить файлы office-1.* и ca.crt из каталога /etc/openvpn/keys сервера в каталог /etc/openvpn/keys клиента.

После этого запускаем сервис:

chkconfig openvpn on
service openvpn start

Убеждаемся что поднялся интерфейс:

ifconfig tap0

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

На этом всё. Более подробную информацию можно найти в документации по openvpn.

 

Решил собрать на Debian 7, а клиентами расставить 2 х Mikrotik 2011UAS 2HnD IN.

Все шикарно встало, сети просматривают друг друга полностью.

Конфиги:

mode server
tls-server
daemon

ifconfig 192.168.254.1 255.255.255.0

port 1194
proto tcp-server
dev tap
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/office-0.crt
key /etc/openvpn/keys/office-0.key
dh /etc/openvpn/keys/dh1024.pem
client-config-dir /etc/openvpn/ccd
push "route 192.168.254.0 255.255.255.0 192.168.254.1"
route 192.168.3.0 255.255.255.0 192.168.254.101
route 192.168.4.0 255.255.255.0 192.168.254.102
user nobody
group nogroup
keepalive 10 120
client-to-client
persist-key
persist-tun
verb 4

tun-mtu 1500
tun-mtu-extra 32
mssfix 1300
#keepalive 15 120
#fragment 1200

log-append /var/log/openvpn.log
status /var/log/openvpn/openvpn-status.log

 

1 Клиент на сервере: /etc/openvpn/ccd/office-1

# приcваиваем ip-адрес
ifconfig-push 192.168.254.101 255.255.255.0

iroute 192.168.3.0 255.255.255.0

# роутинг на сети центрального офиса
push "route 192.168.0.0 255.255.255.0 192.168.254.1"
push "route 192.168.1.0 255.255.255.0 192.168.254.1"

# роутинг на сеть второго офиса
push "route 192.168.4.0 255.255.255.0 192.168.254.102"

 

2 Клиент  на сервере: /etc/openvpn/ccd/office-2

#ip-адрес
ifconfig-push 192.168.254.102 255.255.255.0

# роутинг на сети центрального офиса
push "route 192.168.0.0 255.255.255.0 192.168.254.1"
push "route 192.168.1.0 255.255.255.0 192.168.254.1"

# роутинг на сеть первого офиса
push "route 192.168.3.0 255.255.255.0 192.168.254.101"

Клиент Mikrotik 1 филиал

name="ovpn-out1" mac-address=02:41:A8:A1:6C:A8 max-mtu=1500 connect-to=93.123.171.252 port=1194 mode=ethernet user="nobody" password="" profile=default certificate=cert1 auth=sha1 cipher=none add-default-route=no

Iptables на сервере:

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -I POSTROUTING -o tap0 -j MASQUERADE

iptables -F FORWARD
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tap0 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o tap0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j REJECT

iptables -F INPUT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --source-port 80 -j ACCEPT
iptables -A INPUT -p tcp --source-port 21 -j ACCEPT
iptables -A INPUT -p tcp --source-port 22 -j ACCEPT

+ не забываем про Fail2ban на серв.

Firewall на Mikrotik 1 филиала

Filter:

;;; OpenVPN
     chain=input action=accept protocol=tcp dst-port=1194 

 9   chain=input action=accept protocol=tcp in-interface=ovpn-out1 

10   chain=forward action=accept src-address=192.168.0.0/24 dst-address=192.168.3.0/24 

11   chain=forward action=accept src-address=192.168.3.0/24 dst-address=192.168.0.0/24 

12   chain=forward action=accept protocol=icmp 

13   ;;; drop ssh brute forcers
     chain=input action=drop protocol=tcp src-address-list=ssh_blacklist dst-port=22 

14   chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage3 address-list=ssh_blacklist 
     address-list-timeout=1w3d dst-port=22 

15   chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage2 address-list=ssh_stage3 
     address-list-timeout=1m dst-port=22 

16   chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage1 address-list=ssh_stage2 
     address-list-timeout=1m dst-port=22 

17   chain=input action=add-src-to-address-list connection-state=new protocol=tcp address-list=ssh_stage1 address-list-timeout=1m dst-port=22

Nat:

chain=srcnat action=masquerade src-address=192.168.3.0/24

Также подкладываем файлы сертификатов

[root@MikroTik_Mercedes] > certificate print
Flags: K - decrypted-private-key, Q - private-key, R - rsa, D - dsa 
 0 KR name="cert1" subject=C=RU,ST=MOSCOW,L=MOSCOW,O=XXX,CN=office-1,name=office-1,emailAddress=xxx@GMAIL.COM 
      issuer=C=RU,ST=MOSCOW,L=MOSCOW,O=XXX,CN=srv-vpn,name=srv-vpn,emailAddress=xxx@GMAIL.COM serial-number="02" email=xxx@GMAIL.COM 
      invalid-before=jul/07/2013 08:09:59 invalid-after=jul/05/2023 08:09:59 ca=yes 

 1    name="cert2" subject=C=RU,ST=MOSCOW,L=MOSCOW,O=XXX,CN=srv-vpn,name=srv-vpn,emailAddress=xxx@GMAIL.COM 
      issuer=C=RU,ST=MOSCOW,L=MOSCOW,O=XXX,CN=srv-vpn,name=srv-vpn,emailAddress=xxx@GMAIL.COM serial-number="D15C8FD9479AE615" 
      email=xxx@GMAIL.COM invalid-before=jul/07/2013 07:53:38 invalid-after=jul/05/2023 07:53:38 ca=yes

 

 

https://terrty.net/2014/softether-vpn-ubuntu/ — softether