Mikrotik: Настраиваем тоннель GRE между Mikrotik и Ubuntu
Курс «Настройка оборудования MikroTik»
Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор – официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.Почему именно 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