Страница 1 из 1

Подключение филиалов по VPN

Добавлено: 2016-09-02 9:08:43
Selin
Добрый день

Возникла задача: подключить несколько филиалов и мобильных пользователей к сети центрального офиса.
То есть нужно настроить несколько LAN to LAN подключений + VPN DialIn сервер.
На филиалах стоят маршрутизаторы, которые умеют VPN LAN to LAN (Draytek Vigor 2910).
В офисе стоит FreeBSD сервер, посредством которого стараюсь решить задачу.
Ньюанс: многие филиалы и мобильные пользователи имеют серый/динамический внешний IP.

Сперва попробовал настроить всё на mpd. Прописал в конфиге lan2lan интерфейсы для каждого филиала + pptp сервер для мобильных пользователей.
Но столкнулся с проблемой:
Если вручную поднимать VPN из филиалов в порядке согласно загрузке lan2lan интерфейсов в mpd - всё работает.
То есть:
- в конфиге имеем:
load vpn_f1
load vpn_f2
load vpn_f3
- подключаемся вручную
филиал 1 -> vpn_f1
филиал 2 -> vpn_f2
филиал 3 -> vpn_f3
- видим на консоли mpd красивую картинку - каждый филиал подключен к своему интерфейсу и всё работает как нужно.
Но если порядок подключения нарушен (а так и получается в 99.999% при авто-подключении) - то филиалы подключаются к первому свободному lan2lan интерфейсу mpd и, как следствие, связь с этим филиалом не работает (ибо разные подсети у каждого филиала и, соотв., маршрутизация для каждого своя).
То есть при автоматическом подключении получаем что-то такое:
филиал 1 -> vpn_f3
филиал 2 -> vpn_f1
филиал 3 -> vpn_f2
и ничего не работает :(

Может, есть способ привязать lan2lan интерфейс в конфиге mpd к конкретному логину?

Или вовсе искать другие решения (не mpd)?
Но тот же GIF, как я понял, требует статичиские белые IP на каждой стороне...
OpenVPN не подходит, ибо маршрутизаторы в филиалах его не поддерживают...

Помогите, пожалуйста, с решением.

Файл конфига mpd прилагаю (на всякий случай):

Код: Выделить всё

startup:
        log +auth* +ecp* +iface* +phys* +link*
        set user admin password admin
        set console self 127.0.0.1 5005
        set console open
        set web self 0.0.0.0 5006
        set web open

default:
        load vpn_f1
        load vpn_f2
        load vpn_f3
        load vpn_dialin

vn_f1:
#
        create bundle static B_vpn_f1
        set ipcp ranges 172.17.0.1/32 172.17.1.1/32
        set iface route 172.17.1.0/24
        set bundle enable compression
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set bundle enable crypt-reqd
        set mppc yes stateless
#
        create link static L_vpn_f1 pptp
        set link action bundle B_vpn_f1
        set link no pap
        set link yes chap
        set link mtu 1460
        set link keep-alive 10 75
        set link max-redial -1
        set link enable incoming

vn_f2:
#
        create bundle static B_vpn_f2
        set ipcp ranges 172.17.0.1/32 172.17.2.1/32
        set iface route 172.17.2.0/24
        set bundle enable compression
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set bundle enable crypt-reqd
        set mppc yes stateless
#
        create link static L_vpn_f2 pptp
        set link action bundle B_vpn_f2
        set link no pap
        set link yes chap
        set link mtu 1460
        set link keep-alive 10 75
        set link max-redial -1
        set link enable incoming

vn_f3:
#
        create bundle static B_vpn_f3
        set ipcp ranges 172.17.0.1/32 172.17.3.1/32
        set iface route 172.17.3.0/24
        set bundle enable compression
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set bundle enable crypt-reqd
        set mppc yes stateless
#
        create link static L_vpn_f3 pptp
        set link action bundle B_vpn_f3
        set link no pap
        set link yes chap
        set link mtu 1460
        set link keep-alive 10 75
        set link max-redial -1
        set link enable incoming

vpn_dialin:
        set ippool add pool_dialin 172.17.0.200 172.17.0.250
        create bundle template B_dialin
        set iface enable proxy-arp
        set iface idle 1800
        set iface enable tcpmssfix
        set ipcp yes vjcomp
        set ipcp ranges 172.17.0.1/32 ippool pool_dialin
        set bundle enable compression
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set mppc yes stateless
#
        create link template L_dialin pptp
        set link action bundle B_dialin
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap eap
        set link enable chap
        set link keep-alive 10 60
        set link mtu 1460
        set link enable incoming

Подключение филиалов по VPN

Добавлено: 2016-09-02 9:37:05
snorlov
Mpd позволяет выполнять скрипты на up/down подключений, попробуйте задействовать их, т.е. ими менять маршрутизацию, там воз и переменыые из подключений можно использовать

Подключение филиалов по VPN

Добавлено: 2016-09-02 12:00:44
Гост
На сервере принимающем соединения вынесите создание линков в отдельную секцию. Соединение по конкретному логину прикрепить к конкретному bundle можно командой set link action примерно так:

Код: Выделить всё

pptp_server:
        set ippool add pool1 192.168.2.86 192.168.2.99
        create bundle template B
        load pptp_standart
        set ipcp ranges 192.168.1.5/32 ippool pool1
        create link template L pptp
        load pptp_link_standart
        set link action bundle vpn_1 vpn_login1
        set link action bundle vpn_2 vpn_login2
        set link action bundle B
        set link enable incoming

Подключение филиалов по VPN

Добавлено: 2016-09-02 12:05:47
Selin
Спасибо большое - вечером попробую :)

Подключение филиалов по VPN

Добавлено: 2016-09-02 17:18:40
Selin
Обратил внимание, что при вставке конфига в первом сообщении названия интерфейсов побились: вместо vn_f# должно быть vpn_f#

Подключение филиалов по VPN

Добавлено: 2016-09-02 21:29:46
Selin
Спасибо большое - всё получилось :)