Создание OpenVPN сети в связке Vyos-Mikrotik
Понедельник, января 30, 2017 | Автор:

Для соединения филиалов и оперативного внесения изменений в ПО оборудования потребовалось соединить все филиалы по области в единую сеть. Упрощенная схема сети выглядит примерно так.

В качестве сервера у нас выступает Vyos 1.1.7, клиенты — Mikrotik RB941

Сначала настраиваем сервер на Vyos — развитие софтового роутера Vyatta на базе Linux. Загрузжаемся с образа, вводим стандартную пару логин\пароль vyos:vyos  и устанавливаем систему

$install image

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

$ configure
# set system ssh port 22 (доступ по ssh)

Настройка ethernet и «шлюза последней надежды»

# set interfaces ethernet eth0 description «LAN»
# set interfaces ethernet eth0 addr 192.168.0.0/23
# set interfaces ethernet eth1 description «WAN»
# set interfaces ethernet eth1 addr 88.88.88.2/30
# set protocols static route 0.0.0.0/0 next-hop 88.88.88.1
# set interfaces loopback lo addres 172.16.0.250/32

Подключаемся через SSH-клиента и продолжаем

# set system name-server 192.168.1.10
# set system host-name vyos-vpn

Для того, чтобы наши клиенты могли авторизоваться по имени пользователя вводим его в систему с ограниченными правами

# set system login user VPNUSER authentication plaintext-password PASSWORD
# set system login user VPNUSER level oper
# mkdir /var/log/openvpn/

В папке /usr/share/doc/openvpn/examples/easy-rsa/2.0 находится пакет easy-rsa для создания сертификатов клиентов и сервера. Подробнее можно почитать на сайте OpenVPN. Кладем их в папку /config/auth . Там должны быть следующие файлы

$ ls
$ ca.crt,  dh1024.pem,  server.crt  server.key

Настройка openvpn

$ configure
# edit interfaces openvpn vtun0# set device-type tap  {# Для того чтобы видеть клиентскую сеть за роутером}
# set mode server
# set protocol tcp-passive
# set openvpn-option «—plugin /usr/lib/openvpn/openvpn-auth-pam.so login login VPNUSER password PASSWORD —log /var/log/openvpn/vtun0.log» {для авторизации по пользователю в Mikrotik и логов}
# set server name-server 192.168.1.10
# set server push-route 192.168.0.0/23
# set server subnet 10.0.10.0/24
# set tls   ca-cert-file /config/auth/ca.crt
# set cert-file /config/auth/server.crt
# set dh-file /config/auth/dh1024.pem
# set key-file /config/auth/server.key

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

#edit protocol  ospf
# set area 0 authentication md5
# set area 0 network 192.168.0.0/23
# set area 10 authentication md5
# set area 10 network 10.0.10.0/24
# set parameters abr-type cisco
# set parameters router-id 172.16.0.250
# set passive-interface default
#set passive-interface-exclude eth0
# set passive-interface-exclude vtun0
# top
# edit interfaces openvpn vtun0
# set ip ospf authentication md5 key-id 1 md5-key netpass
# set dead-interval 40
# set hello-interval 10
# set priority 1
# set retransmit-interval 5
# transmit-delay 1
# top
# edit interfaces ethernet eth0
#set ip ospf authentication md5 key-id 1 md5-key netpass
# set dead-interval 40
# set hello-interval 10
# set priority 1
# set retransmit-interval 5
# set transmit-delay 1
# commit
# save

На этом настройка сервера закончена. Приступаем к настройке клиента Mikrotik.  Подразумевается, что уже настроена локальная сеть. Подключемся по Winbox, импортируем сертификаты удостоверяющего центра CA.crt и клиента, вначале файл client1.crt, затем client1.key. System -> Certificates — > Import

Запускаем  терминал

Создаем loopback интерфейс и OpenVPN подключение

/ip address add address=172.16.1.250 netmask=255.255.255.255 interface=bridge-local
/interface add name=»server» mac-address=11:11:11:11:11:11 max-mtu=1500 connect-to=88.88.88.1 port=1194 mode=ethernet user=»VPNUSER» password=»PASSWORD» profile=default certificate=client1.crt auth=sha1 cipher=blowfish128 add-default-route=no
/ip firewall filter add chain=input out-interface=server action=accept
/ip firewall filter add chain=forward out-interface=server action=accept
/ip firewall filter add chain=forward in-interface=server action=accept

В идеале, у нас должно подняться подключение и трафик от клиента должен пойти в сеть предприятия.  Теперь настраиваем OSPF

/routing filter add chain=ospf-in action=accept
/routing filter add chain=ospf-out action=accept
/routing ospf instance add name=client1 router-id=172.16.1.250
/routing ospf area add name=vpn1 area-id=0.0.0.10 instance=vpn1 type=default

Заметьте, что area-id у Mikrotik пишется как 0.0.0.10, а у Vyos 10. Далее

/routing ospf network add network=10.0.10.0/24 area=vpn1
/routing ospf network add network=192.168.5.0/24 area=vpn1 {объявление локальной сети клиента}
/routing ospf interface add interface=server authentication=md5 authentication-key-id=1 authentication-key=netpass instance-id=0 network-type=point-to-point

Проверяем

/routing ospf neighbor print
instance=vpn1 router-id=172.16.0.250 address=10.0.10.1 interface=server priority=1 dr-address=0.0.0.0 backup-dr-address=0.0.0.0 state=»Full» state-changes=4 ls-retransmits=0 ls-requests=0 db-summaries=0 adjacency=1h58m36s

Как видите, поднялось соседство, и на нашем сервере Vyos тоже обновились маршруты

$ show ip ospf nei
Neighbor ID Pri
172.16.1.250    5 Full/DR      33.626s 10.0.10.2       vtun0:10.0.10.1

$show ip ospf route
============ OSPF network routing table ============
N    10.0.10.0/24          [10] area: 0.0.0.10  directly attached to vtun0
N    192.168.0.0/23        [10] area: 0.0.0.0  directly attached to eth0
N    192.168.21.64/28      [20] area: 0.0.0.10    via 10.0.10.2, vtun0
============ OSPF router routing table =============
============ OSPF external routing table ===========

Проверяем с локальной сети офиса доступ к сети филиала

ping 192.168.5.15
Обмен пакетами с 192.168.5.15 по с 32 байтами данных:
Статистика Ping для 192.168.5.15:
Пакетов: отправлено = 4, получено = 4, потеряно = 0    (0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 54мсек, Максимальное = 56 мсек, Среднее = 55 мсек

и с филиала в офис

ping 192.168.1.10
Обмен пакетами с 192.168.1.10 по с 32 байтами данных:
Статистика Ping для 192.168.1.10:
Пакетов: отправлено = 4, получено = 4, потеряно = 0    (0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 54мсек, Максимальное = 56 мсек, Среднее = 55 мсек

На этом нашу настройку можно считать завершенной. На других филиалах повторяем по аналогии.