Статья устарела!

Настройка MikroTik — https://Настройка-Микротик.РФ/

Используйте новые статьи по настройке:

VPN GRE over IPsec

VPN PPTP/L2TP IPsec

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Во избежании полемики в комментариях в сторону не надежности PPTP — предупреждаю:
я осведомлен о уязвимостях PPTP, что есть более надежные L2TP/IPSec и даже практически идеальные OpenVPN с 4096 — OverМного битным ключом.
О них я расскажу в следующих двух статьях.

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

Возможно статья не претендует на уникальность, она написана ради себя и таких же, как я.

Не у всех есть белый IP адрес, не говоря уж о белом статическом IP. В основном оборудование MikroTik находится за NAT’ом, а то и за целой цепочки из NAT’ов. Особенно это касается интернета через 3/4G/LTE модемы и пионерские сети.

Подразумевается, что объединяемые сети имеют разные диапазоны IP адресов.

Конкретно в моем случае, офис M имеет 192.168.0.0/24, а офис T — 10.0.0.0/24
Офис B как концепт — 10.10.0.0/24

Для начала нам нужно выбрать и подготовить VDS

Установка PPTP сервера

За что я люблю линукс? Консоль и репозитории.
(ц) Я

Все операции проводятся под root пользователем.

Установим PPTP сервер командой apt-get install pptpd

После установки отредактируем файл конфигурации командой nano /etc/pptpd.conf

И добавим в конце диапазон выдаваемых IP адресов. Я использую 10.255.0.150-200

Указываем:

localip 10.255.0.1
remoteip 10.255.0.100-200

Сохраняем командой Ctrl+O, закрываем Ctrl+X

Заносим клиентов командой nano /etc/ppp/chap-secrets

M pptpd Lyuhnsdf7i 10.255.0.10
T pptpd Kghndsfy7iyhnlkH 10.255.0.20
B pptpd K<hjghndsgghi 10.255.0.30
Moron pptpd khjJyghbfdhyuI 10.255.0.51

Максимальная длина пароля 63 символа, желательно без спец символов.

Сохраняем командой Ctrl+O, закрываем Ctrl+X

Перезапускаем pptp сервер командой service pptpd restart

Настраиваем форвардинг (пересылка между интерфейсами)

nano /etc/sysctl.conf

Ищем и раскомментируем строчку net.ipv4.ip_forward = 1, если ее нет, то добавляем.

Применяем изменения командой sysctl -p

Подключаем клиент MikroTik

Не важно какой интернет, сгодится любой. Не важно какой микротик, главное — свежая прошивка.
Я использую пользователя из первой строчки /etc/ppp/chap-secrets

Открываем в настройках микротика Interface -> + PPTP Client
Вводим название соединения (Name)
Указываем адрес соединения (Connected To)
Вводим User и Password
Жмем Apply
Через несколько секунд поднимется соединение с IP адресом 10.255.0.10
По этому адресу мы сможем сделать маршрут к данной сети.

Подключение клиента Windows ничем не отличается от создания обычного VPN соединения.

Второй микротик подключаем аналогично по второму логину и паролю и он соединяется с IP адресом 10.255.0.20

iptables

И так мы подключили микротик и сами подключились в Windows по VPN, но все равно не можем попасть на микротик по выдаваемому ему IP по VPN

Для исправления этой ситуации добавим правила:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT
iptables -I INPUT -s 10.255.0.0/24 -i ppp0 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp1 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp1 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp2 -j MASQUERADE

Обратите внимание на интерфейс, мы разрешили маскарад и входящие для ppp0 и ppp1 интерфейсов. Но если у нас много клиентов — надо разрешить много интерфейсов!

Добавим еще 18 штук:
iptables -I INPUT -s 10.255.0.0/24 -i ppp2 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp3 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp3 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp4 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp4 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp5 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp5 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp6 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp6 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp7 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp7 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp8 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp8 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp9 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp09 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp10 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp10 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp11 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp11 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp12 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp12 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp13 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp13 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp14 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp14 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp15 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp15 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp16 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp16 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp17 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp17 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp18 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp18 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp19 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp19 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface ppp20 -j MASQUERADE
iptables -I INPUT -s 10.255.0.0/24 -i ppp20 -j ACCEPT

И

iptables --append FORWARD --in-interface eth0 -j ACCEPT

Перезапустим service pptpd restart

Чтобы правила не слетали, сохраним их командой:
iptables-save > /etc/iptables_rules
Добавим их в автозагрузку:
nano /etc/rc.local
Перед exit добавим строчку:
/sbin/iptables-restore < /etc/iptables_rules
Так как наш pptpd сервер не запускается сам, перед exit добавляем:
service pptpd start

Проверяем все ли работает.
Перезагружаем сервер командой reboot и пробуем подключить VPN и подключиться к нашему микротику по адресу 10.255.0.10 и второму микротику по адресу 10.255.0.20, у меня все получилось.

Подправим mtu. Опытным путем я высчитал, что mtu равен 1372
Его и пропишем:
nano /etc/ppp/pptpd-options
Добавляем строки:
mtu 1400
mru 1400
И перезагружаем сервер.
Это позволит избежать «зависания» при использовании https и работе по RDP

Чтобы видеть внутренние ресурсы сетей, нужно указать серверу где какая сеть находится.
Напомню:
M внутренняя сеть 192.168.0.0/24, VPN IP 10.255.0.10
T внутренняя сеть 10.0.0.0/24, VPN IP 10.255.0.20
B внутренняя 10.10.0.0/24, VPN IP 10.255.0.30

Для этого надо прописать маршруты:
ip route add 192.168.0.0/24 via 10.255.0.10
ip route add 10.0.0.0/24 via 10.255.0.20
ip route add 10.10.0.0/24 via 10.255.0.30

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

Редактируем:
nano /etc/ppp/ip-up

Дописываем:

#!/bin/bash
case "$5" in
           10.255.0.10)
              /sbin/route add -net 192.168.0.0/24 gw 10.255.0.10
           ;;
           10.255.0.20)
              /sbin/route add -net 10.0.0.0/24 gw 10.255.0.20
           ;;
           10.255.0.30)
              /sbin/route add -net 10.10.0.0/24 gw 10.255.0.30
          ;;
      *)
esac

Перезагружаемся. Теперь при каждом соединении — под конкретного клиента будет добавляться свой маршрут.

Но Windows иногда не знает куда идти, если нужно попасть на 192.168.0.200
Мы укажем это маршрутом через 10.255.0.1
Через CMD добавляем маршрут:
route add -p 192.168.0.0 mask 255.255.255.0 10.255.0.1 METRIC 1
route add -p 10.0.0.0 mask 255.255.255.0 10.255.0.1 METRIC 1

При этом желательно указывать маршруты до конкретных IP, а не всей подсети, чтобы не давать лишнего доступа. Так же часто бывает 192.168.0.0/24 используется в домашней сети. Но лучше это предвидеть заранее, и сделать в сетях 10.*.*.*/24

VDS с белым IP

Давайте выжмем максимум из нашего VDS!

В сети M MikroTik живет на IP адресе 192.168.0.10
В сети T MikroTik живет на IP адресе 10.0.0.1

И мы можем на них попасть по IP адресу нашего VPS сервера. Просто добавим правила:
iptables -t nat -A PREROUTING -p tcp -d IP_АДРЕС_VDS --dport 81 -j DNAT --to-destination 192.168.0.10:80
Указываем IP нашего VDS, указываем какой порт перенаправляем, в нашем случае 81, указываем на какой IP адрес и порт внутренней сети направляем трафик — 192.168.0.10:80
iptables -t nat -A PREROUTING -p tcp -d IP_АДРЕС_VDS --dport 82 -j DNAT --to-destination 10.0.0.1:80

Теперь если открыть IP_АДРЕС_VDS:81 — мы попадаем на микротик сети M, а IP_АДРЕС_VDS:82 — микротик сети T

Таким образом можно завернуть трафик любого порта в любую сеть на любой IP адрес на любой порт.

Можно пускать весь трафик через VDS, просто добавив PPTP соединение в маскарад и указав дистанцию меньшую, чем основной интернет, не забыв указать DNS в /etc/ppp/pptpd-options
ms-dns 8.8.8.8
ms-dns 8.8.4.4

После перезагрузки правило слетает, как сего сохранять — я описал в разделе iptables

MikroTik Routes

Осталось сети филиалов сделать видимыми друг другу.

Открываем настройки микротика IP -> Routes
Жмем + и указываем через что идти на конкретный IP адрес.
Я рекомендую указывать только нужные IP адреса, но в этом примере укажу всю подсеть:

На микротике в сети T (напомню у него VPN IP 10.255.0.20, внутренняя сеть 10.0.0.0/24)
Указываем:
Dst. Adress: 192.168.0.0/24
Gateway: Наше PPTP соединение
Distance: я указал 30, единица меня смущает.

На микротике в сети M (напомню у него VPN IP 10.255.0.10, внутренняя сеть 192.168.0.0/24)
Указываем:
Dst. Adress: 10.0.0.0/24
Gateway: Наше PPTP соединение
Distance: 30

Теперь два офиса связаны. Можно провести тест скорости соединения. В моем случае с плохим интернетом (3G билайна в деревне Тульской области) на одном конце и (3G мегафона в деревне Московской области) на другом конце — максимальная скорость была 2.2Мбит.

IP адреса двух сетей доступны друг другу без проблем.

Результаты пингов:

Подмосковный мегафон 3G <-> VDS: 56мсек
Тульский билайн 3G <-> VDS: 80мсек
Тульский билайн <-> Подмосковный мегафон: 140мсек
Хороший интернет <-> VDS: 5мсек.
Хороший интернет <-> Тульский билайн 3G: 104мсек
Хороший интернет <-> Подмосковный мегафон 3G: 71мсек

Можно комфортно работать по RDP

В заключении

Это не самый безопасный способ объединения сетей, по этому лучше смотреть в сторону OpenVPN

 

Если вам нужна помощь в настройке микротика — оставьте комментарий на странице