Так, пришла пора подводить итоги. Усилиями коллективного разума проблема решена. Отдельное спасибо за грамотное ведение консультаций
kt72ru, без его помощи было бы значительно сложнее.
Напомню предысторию, есть несколько независимых локальных сетей под маршрутизаторами Микротик. Каждый Микротик обеспечивает выход в интернет для своей локалки, ни один из них не имеет белого адреса. Имеется так же сервер под управлением Debian 9, находящийся вообще чёрти где, мой в Амстердаме, например. Задача, соединить все Микротики с сервером посредством туннеля OVPN и обеспечить свободный доступ к сетевым ресурсам из локалки в локалку.
Приблизительная схема того, что мы собрали общими усилиями:
Был поднят OVPN сервер на Debian (процесс описан тысячу и один раз, не будем множить сущности), он получил следующую конфигурацию:
Код: Выделить всё
port 1194
# Mikrotik не умеет работать с UDP
proto tcp
dev tun
ca /etc/openvpn/.keys/ca.crt
cert /etc/openvpn/.keys/DigOceanServer.crt
key /etc/openvpn/.keys/DigOceanServer.key # This file should be kept secret
dh /etc/openvpn/.keys/dh2048.pem
# Описываем сеть для туннеля
server 10.8.0.0 255.255.255.0
# Прописываем маршруты для каждой из сетей.
route 192.168.88.0 255.255.255.0
route 192.168.100.0 255.255.255.0
route 192.168.101.0 255.255.255.0
push "route 192.168.88.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"
push "route 192.168.101.0 255.255.255.0"
# Директория для хранения клиентских конфигов
client-config-dir .ccd
# Разрешаем общение между клиентами
client-to-client
keepalive 10 120
cipher AES-256-CBC # AES
auth sha1
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
Замечу, надо обратить внимание на то, что не должно быть локалок с одинаковыми подсетями. В этом случае будет роутится запрос будет на первую из локалок по адресу в туннеле. Далее, оказывается, что прописывание маршрутов в Debian вручную не даст никакого эффекта, так как туннель проигнорирует "искусственный" маршрут. Всё, что ему надо, туннель берет строго в конфиге.
Дальше нужно создать в директории .ccd файлы, имеющие имена такие же, как и имена ovpn-ключей для клиентов. То есть, если на клиента сделали сертификат и ключ с именем client-1.crt и client-1.key, то и имя файла будет client-1.
Содержание
Код: Выделить всё
# Указывает, какая сетка находится за туннелем
iroute 192.168.88.0 255.255.255.0
# Назначает адреса клиенту и туннелю
ifconfig-push 10.8.0.10 10.8.0.9
То есть каждый туннель жрет как минимум два адреса, насколько я понял.
По аналогии создаем и остальные файлы.
Код: Выделить всё
iroute 192.168.100.0 255.255.255.0
ifconfig-push 10.8.0.5 10.8.0.4
Код: Выделить всё
iroute 192.168.101.0 255.255.255.0
ifconfig-push 10.8.0.6 10.8.0.7
Ну теперь идем на Микротики. Создаем профиль с нужным нам именем в ppp -> profiles, у меня ovpn.Остальное по-дефолту. В ppp -> Secrets создаем пользователя vasya без пароля , указываем профиль ovpn и сервис ovpn. Не думаю, что это обязательно, но мне так более понятно, куда и что идет. Дальше импортируем сертификаты и ключ, то есть тащим три файла ca.crt, client-1.crt и client-1.key на микротик и импортируем в System ->Certificates -> Import именно в том порядке, в котором я их привел.
Создаем ovpn-client:
Код: Выделить всё
/interface ovpn-client
add add-default-route=no auth=sha1 certificate=client-1.crt_0 cipher=aes256 connect-to=111.222.111.222 mode=ip name=ovpn-out1 password="" port=1194 profile=ovpn user=vasya
указывая в connect-to белый адрес нашего сервера. Туннель должен подняться. По аналогии проделываем всё то же на остальных компах, лишь сертификат и ключ клиента будут разными.
Кстати, маскарад локалки в том виде, как я приводил выше, никакого влияния на доступ не оказывает.
На этом вроде как можно проверять работоспособность нашего детища. Если всё прошло, как надо, можно пинговать устройства в любой из подключенных локалок. Расшаренные папки становятся доступны, наступает всеобщее ликование.
На Микротике появляется несколько новых маршрутов:
Код: Выделить всё
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 ADS 0.0.0.0/0 10.201.7.254 1
1 ADS 10.8.0.0/24 10.8.0.9 1
2 ADC 10.8.0.9/32 10.8.0.10 ovpn-out1 0
3 ADC 10.201.7.0/24 10.201.7.18 ether1 0
4 ADC 192.168.88.0/24 192.168.88.1 bridge 0
5 ADS 192.168.100.0/24 10.8.0.9 1
6 ADS 192.168.101.0/24 10.8.0.9 1
В следствие того, что сервак для экспериментов у меня начального уровня и он действительно в Амстердаме, наблюдается некоторая заторможенность в работе туннелей, но сам факт решения задачи на данном этапе мне по душе.
Еще раз всем спасибо за живое участие в теме.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...