====== Mikrotik: Настраиваем тоннель GRE между Mikrotik и Ubuntu ====== Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект. [[https://курсы-по-ит.рф/lp-mikrotik-mtcna?utm_source=wiki-rtza&utm_medium=cpc&utm_campaign=2| Узнать подробности]] Почему именно GRE: легко, просто, удобно. А в сочетании с IPSEC довольно безопасно. Исходные данные: * XXX.XXX.XXX.XXX - белый IP Mikrotik * YYY.YYY.YYY.YYY - белый IP сервера с Ubuntu * 172.16.1.1 - внутренний адрес тоннеля на сервере с Ubuntu * 172.16.1.2 - внутренний адрес тоннеля на Mikrotik ===== Настраиваем тоннель GRE ===== ==== Настраиваем Mikrotik ==== Создаем новый тоннель: Interfaces -> GRE Tunnel, заполняем настройки: * Name: GRE1 * Local Address: XXX.XXX.XXX.XXX * Remote Address: YYY.YYY.YYY.YYY * DSCP: inherit * Don't fragment: no * Clamp TCP MSS: yes Назначаем интерфейсу адрес: IP -> Addresses: * Address: 172.16.1.2/24 * Interface: GRE1 Разрешаем ходить пакетам: IP -> Firewall -> Filter Rules, добавляем новое правило: * Chain: input * Src Address: YYY.YYY.YYY.YYY * Protocol: 47(gre) * Action: accept ==== Настройки сервера с Ubuntu ==== В файле /etc/network/interfaces добавляем интерфейс tun1 в самый конец файла: iface tun1 inet static address 172.16.1.1 netmask 255.255.255.0 pre-up iptunnel add tun1 mode gre local YYY.YYY.YYY.YYY remote XXX.XXX.XXX.XXX ttl 255 up ifconfig tun1 multicast pointopoint 172.16.1.2 post-down iptunnel del tun1 Даем команду на поднятие тоннеля: sudo ifup tun1 Проверяем - тоннель должен подняться. Для проверки можно попинговать внутренние IP 172.16.1.1 и 172.16.1.2 соответственно. ===== Настройка IPSEC ===== В тоннеле GRE по умолчанию нет никакой шифрации, т.е. данные ходят в открытом виде и все можно прекрасно посмотреть любым сниффером (tcpdump, wireshark). Для обеспечения безопасности необходимо настроить IPSEC. Исходные данные: * Ключ шифрования: VerySecretChipherKey ==== IPSEC на Mikrotik ==== IP -> IPsec -> Proposals Изменяем default: * Auth Algorithms: sha256 * Encr Algorithms: aes-128 cbc, aes-192 cbc, aes-256 cbc * Lifetime: 00:30:00 * PFS Group: modp1024 А в свойствах GRE-тоннеля настраиваем: * IPsec Secret: VerySecretChipherKey ==== Настройки IPSEC на сервере с Ubuntu ==== Для Ubuntu и прочих линуксов есть несколько пакетов: racoon и несколько форков *swan (StrongSwan, LibreSwan, OpenSwan). Я остановился на StrongSwan - т.к. он мне больше понравился и в сети много готовых примеров. Установка проста: sudo apt install strongswan Редактируем файл конфигурации /etc/ipsec.conf # ipsec.conf - strongSwan IPsec configuration file config setup charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2" conn %default # keyexchange=ikev2 conn mikrotik # Try connect on daemon start auto=start # Authentication by PSK (see ipsec.secret) authby=secret # Disable compression compress=no # Re-dial setings closeaction=clear dpddelay=30s dpdtimeout=150s dpdaction=restart # ESP Authentication settings (Phase 2) esp=aes128-sha256-modp1024,aes192-sha256-modp1024,aes256-sha256-modp1024 # UDP redirects forceencaps=no # IKE Authentication and keyring settings (Phase 1) ike=aes128-sha256-modp1024,aes192-sha256-modp1024,aes256-sha256-modp1024 ikelifetime=86400s keyingtries=%forever lifetime=1800s # Internet Key Exchange (IKE) version # Default: Charon - ikev2, Pluto: ikev1 keyexchange=ikev1 # connection type type=transport # Peers left=XXX.XXX.XXX.XXX right=YYY.YYY.YYY.YYY # Protocol type. May not work in numeric then need set 'gre' leftprotoport=47 rightprotoport=47 Добавляем ключ шифрования в файл /etc/ipsec.secrets YYY.YYY.YYY.YYY XXX.XXX.XXX.XXX : PSK VerySecretChipherKey Перезапускаем IPSEC: sudo ipsec restart Проверяем /var/log/syslog на Ubuntu и командой ipsec status На Mikrotik смотрим Log и IP -> IPsec -> Peers ==== Настройка MTU ==== Если есть проблемы при работе с тоннелем - желательно уменьшить MTU до 1435 на обоих концах туннеля. Mikrotik: Изменить в свойствах GRE-тоннеля MTU на 1435 Ubuntu: В файле /etc/network/interfaces добавить строку в настройку интерфейса tun1 mtu 1435 ==== Настройка firewall ==== Так же может понадобиться настройка firewall на Микротике и Ubuntu, но тут уж сам настраивает под себя. Чтобы с Микротика все благополучно проходило через тоннель необходимо сделать маскарадинг: IP -> Firewall -> NAT со следующими настройками: * Chain: srcnat * Out Interface: GRE1 * Action: Accept {{tag>mikrotik ubuntu gre tunnel}}