Refactor multiwan_mikrotik_setup.md to improve clarity and consistency in configuration. Renamed PPPoE client interface to 'RTK-Internet', updated routing table entries for failover and health checks in the main routing table, and adjusted connection marking rules for better readability. Added commands for monitoring routes in the main table.
This commit is contained in:
@@ -0,0 +1,313 @@
|
||||
## Site-to-Site GRE между двумя MikroTik RouterOS 7.14+ (Shats ↔ Malinin)
|
||||
|
||||
Этот гайд пошагово настраивает маршрут между двумя площадками по GRE-туннелю так, чтобы клиенты за роутером Shats из сети `192.168.0.0/16` видели клиентов сети `192.168.1.0/24` за роутером Malinin.
|
||||
|
||||
- Платформа: MikroTik RouterOS 7.14+
|
||||
- Туннель: GRE (с опцией — GRE поверх IPsec для шифрования)
|
||||
- Очень подробно: с командами CLI, проверками и устранением неполадок
|
||||
|
||||
### Схема и адреса
|
||||
- Router Shats:
|
||||
- WAN (публичный): `178.49.24.65`
|
||||
- LAN: `192.168.0.0/16`
|
||||
- GRE IP на туннеле: `10.199.99.1/30`
|
||||
- Router Malinin:
|
||||
- WAN (публичный): `80.64.170.90`
|
||||
- LAN: `192.168.1.0/24`
|
||||
- GRE IP на туннеле: `10.199.99.2/30`
|
||||
|
||||
GRE-интерфейс поднимается между публичными адресами. На GRE назначаем /30 адреса из подсети `10.199.99.0/30`.
|
||||
|
||||
---
|
||||
|
||||
### Предпосылки и рекомендации
|
||||
1) Доступ в терминал RouterOS (WinBox/WebFig/SSH).
|
||||
2) На обоих маршрутизаторах уже есть рабочий доступ в интернет на WAN-интерфейсах.
|
||||
3) Если включён FastTrack — его нужно отключить или исключить межсайтовый трафик из fasttrack.
|
||||
4) Маскарадинг (srcnat/masquerade) — добавим правила обхода NAT для межсайтового трафика, чтобы не NAT’ить его.
|
||||
5) MTU/MSS — включим `clamp-tcp-mss` на GRE, чтобы избежать фрагментации.
|
||||
|
||||
Примечание: Если у вас на WAN есть строгий firewall, заранее разрешите протокол GRE (IP protocol 47) в `input` на адреса пиров.
|
||||
|
||||
---
|
||||
|
||||
### 0) Резервная копия (рекомендуется)
|
||||
```rsc
|
||||
/system backup save name=pre-gre-setup
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 1) Создание GRE-интерфейсов
|
||||
|
||||
Настраиваем GRE на каждом роутере. Важно указать правильные `local-address` (своё публичное) и `remote-address` (публичный адрес удалённого роутера).
|
||||
|
||||
#### На Shats
|
||||
```rsc
|
||||
/interface gre
|
||||
add name=gre-to-malinin local-address=178.49.24.65 remote-address=80.64.170.90 clamp-tcp-mss=yes keepalive=10s,10
|
||||
|
||||
/ip address
|
||||
add address=10.199.99.1/30 interface=gre-to-malinin comment="GRE to Malinin"
|
||||
```
|
||||
|
||||
#### На Malinin
|
||||
```rsc
|
||||
/interface gre
|
||||
add name=gre-to-shats local-address=80.64.170.90 remote-address=178.49.24.65 clamp-tcp-mss=yes keepalive=10s,10
|
||||
|
||||
/ip address
|
||||
add address=10.199.99.2/30 interface=gre-to-shats comment="GRE to Shats"
|
||||
```
|
||||
|
||||
Пояснения:
|
||||
- `clamp-tcp-mss=yes` — автоматически поджимает MSS внутри GRE, снижая риск фрагментации.
|
||||
- `keepalive=10s,10` — отправка keepalive каждые 10 секунд, 10 неудачных попыток → интерфейс считается down.
|
||||
|
||||
---
|
||||
|
||||
### 2) Маршрутизация между LAN-сетями
|
||||
|
||||
Добавляем на обоих роутерах статические маршруты в удалённые LAN через IP удалённого конца GRE.
|
||||
|
||||
#### На Shats (в сторону сети Malinin 192.168.1.0/24)
|
||||
```rsc
|
||||
/ip route
|
||||
add dst-address=192.168.1.0/24 gateway=10.199.99.2 comment="to Malinin via GRE"
|
||||
```
|
||||
|
||||
#### На Malinin (в сторону сети Shats 192.168.0.0/16)
|
||||
```rsc
|
||||
/ip route
|
||||
add dst-address=192.168.0.0/16 gateway=10.199.99.1 comment="to Shats via GRE"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3) Обход NAT (srcnat bypass)
|
||||
|
||||
Если у вас есть общие правила `masquerade` на WAN, необходимо добавить правила «accept» перед masquerade, чтобы НЕ NAT’ить межсайтовый трафик. Это критично для корректной маршрутизации между приватными сетями.
|
||||
|
||||
#### На Shats
|
||||
```rsc
|
||||
/ip firewall nat
|
||||
add chain=srcnat src-address=192.168.0.0/16 dst-address=192.168.1.0/24 action=accept comment="bypass NAT to Malinin LAN"
|
||||
```
|
||||
|
||||
#### На Malinin
|
||||
```rsc
|
||||
/ip firewall nat
|
||||
add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.0.0/16 action=accept comment="bypass NAT to Shats LAN"
|
||||
```
|
||||
|
||||
Убедитесь, что эти правила стоят ВЫШЕ ваших общих правил `masquerade`.
|
||||
|
||||
---
|
||||
|
||||
### 4) FastTrack: отключить или исключить межсайтовый трафик
|
||||
|
||||
Если включён FastTrack, он может «обходить» firewall/NAT-цепочки и ломать туннельный трафик. Проще всего — отключить FastTrack, или скорректировать условие fasttrack-правила так, чтобы исключить межсайтовые сети.
|
||||
|
||||
Вариант A — полностью отключить FastTrack (на обоих):
|
||||
```rsc
|
||||
/ip firewall filter
|
||||
set [find where chain=forward and action=fasttrack-connection] disabled=yes
|
||||
```
|
||||
|
||||
Вариант B — исключить межсайтовый трафик из FastTrack (пример для типового fasttrack-правила):
|
||||
```rsc
|
||||
/ip firewall filter
|
||||
# Пример: добавляем отрицательные условия к существующему fasttrack-правилу
|
||||
set [find where chain=forward and action=fasttrack-connection and connection-state~"established,related"] \
|
||||
src-address=!192.168.0.0/16 dst-address=!192.168.1.0/24
|
||||
```
|
||||
|
||||
Примечание: точный синтаксис «set ... src-address/dst-address» для вашего текущего fasttrack-правила может отличаться. Универсально — поставить ПЕРЕД fasttrack явное `accept` для межсайтовых сетей в обе стороны (такие пакеты не попадут под fasttrack):
|
||||
```rsc
|
||||
/ip firewall filter
|
||||
add chain=forward src-address=192.168.0.0/16 dst-address=192.168.1.0/24 action=accept comment="allow site-to-site"
|
||||
add chain=forward src-address=192.168.1.0/24 dst-address=192.168.0.0/16 action=accept comment="allow site-to-site"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5) Разрешения в firewall (input) для GRE
|
||||
|
||||
Если у вас жёсткие политики на `input`, нужно явно разрешить GRE-пакеты c удалённого публичного IP в адрес вашего WAN.
|
||||
|
||||
#### На Shats
|
||||
```rsc
|
||||
/ip firewall filter
|
||||
add chain=input protocol=gre src-address=80.64.170.90 dst-address=178.49.24.65 action=accept comment="allow GRE from Malinin"
|
||||
```
|
||||
|
||||
#### На Malinin
|
||||
```rsc
|
||||
/ip firewall filter
|
||||
add chain=input protocol=gre src-address=178.49.24.65 dst-address=80.64.170.90 action=accept comment="allow GRE from Shats"
|
||||
```
|
||||
|
||||
Разрешите также `icmp` (для диагностики) и доступ управления (ssh/winbox) по необходимости. Если политика по умолчанию — `drop`, удостоверьтесь, что выше есть правила `accept` для established/related.
|
||||
|
||||
---
|
||||
|
||||
### 6) Проверка работоспособности
|
||||
|
||||
1) Статус GRE-интерфейса:
|
||||
```rsc
|
||||
/interface gre print detail
|
||||
```
|
||||
|
||||
2) Ping точек GRE:
|
||||
```rsc
|
||||
/ping 10.199.99.2 interface=gre-to-malinin ;# выполнять на Shats
|
||||
/ping 10.199.99.1 interface=gre-to-shats ;# выполнять на Malinin
|
||||
```
|
||||
|
||||
3) Ping межсайтовых адресов (с указанием источника из LAN):
|
||||
```rsc
|
||||
# На Shats — пингуем хост в 192.168.1.0/24, например 192.168.1.10
|
||||
/ping 192.168.1.10 src-address=192.168.0.1
|
||||
|
||||
# На Malinin — пингуем хост в 192.168.0.0/16, например 192.168.0.10
|
||||
/ping 192.168.0.10 src-address=192.168.1.1
|
||||
```
|
||||
|
||||
4) Таблица маршрутов и ARP (диагностика):
|
||||
```rsc
|
||||
/ip route print where dst-address~"192.168.0.0/16|192.168.1.0/24"
|
||||
/ip neighbor print
|
||||
```
|
||||
|
||||
5) Connection tracking (убедиться, что нет NAT на межсайтовых потоках):
|
||||
```rsc
|
||||
/ip firewall connection print where dst-address~"192.168.1." or src-address~"192.168.1."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 7) Частые проблемы и решения
|
||||
- Туннель up, но пинги межсайт не идут: проверьте, что на обеих сторонах есть статические маршруты через адрес ДРУГОГО конца GRE (10.199.99.2 на Shats и 10.199.99.1 на Malinin).
|
||||
- Пакеты идут в одну сторону: убедитесь в обходе NAT (правила `srcnat action=accept` стоят выше masquerade) и в исключении FastTrack.
|
||||
- Туннель не поднимается: разрешите `protocol=gre` на `input` между публичными IP, проверьте, что `local-address`/`remote-address` указаны верно.
|
||||
- Большие пакеты/веб «подвисают»: включён `clamp-tcp-mss=yes` на GRE. При необходимости можно уменьшить MTU GRE-интерфейса (например, до 1430) и повторно проверить.
|
||||
|
||||
---
|
||||
|
||||
### 8) Полные блоки конфигурации для быстрого применения
|
||||
|
||||
Скопируйте на соответствующий роутер целиком. Корректируйте адреса управления (src-address в ping) под ваши реальные адреса шлюзов/LAN.
|
||||
|
||||
#### Применить на Shats
|
||||
```rsc
|
||||
/interface gre
|
||||
add name=gre-to-malinin local-address=178.49.24.65 remote-address=80.64.170.90 clamp-tcp-mss=yes keepalive=10s,10
|
||||
|
||||
/ip address
|
||||
add address=10.199.99.1/30 interface=gre-to-malinin comment="GRE to Malinin"
|
||||
|
||||
/ip route
|
||||
add dst-address=192.168.1.0/24 gateway=10.199.99.2 comment="to Malinin via GRE"
|
||||
|
||||
/ip firewall nat
|
||||
add chain=srcnat src-address=192.168.0.0/16 dst-address=192.168.1.0/24 action=accept comment="bypass NAT to Malinin LAN"
|
||||
|
||||
/ip firewall filter
|
||||
add chain=input protocol=gre src-address=80.64.170.90 dst-address=178.49.24.65 action=accept comment="allow GRE from Malinin"
|
||||
# (Опция) Явно разрешить межсайтовый трафик и обойти fasttrack
|
||||
add chain=forward src-address=192.168.0.0/16 dst-address=192.168.1.0/24 action=accept comment="allow site-to-site"
|
||||
add chain=forward src-address=192.168.1.0/24 dst-address=192.168.0.0/16 action=accept comment="allow site-to-site"
|
||||
# (Опция) отключить fasttrack целиком
|
||||
# set [find where chain=forward and action=fasttrack-connection] disabled=yes
|
||||
```
|
||||
|
||||
#### Применить на Malinin
|
||||
```rsc
|
||||
/interface gre
|
||||
add name=gre-to-shats local-address=80.64.170.90 remote-address=178.49.24.65 clamp-tcp-mss=yes keepalive=10s,10
|
||||
|
||||
/ip address
|
||||
add address=10.199.99.2/30 interface=gre-to-shats comment="GRE to Shats"
|
||||
|
||||
/ip route
|
||||
add dst-address=192.168.0.0/16 gateway=10.199.99.1 comment="to Shats via GRE"
|
||||
|
||||
/ip firewall nat
|
||||
add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.0.0/16 action=accept comment="bypass NAT to Shats LAN"
|
||||
|
||||
/ip firewall filter
|
||||
add chain=input protocol=gre src-address=178.49.24.65 dst-address=80.64.170.90 action=accept comment="allow GRE from Shats"
|
||||
# (Опция) Явно разрешить межсайтовый трафик и обойти fasttrack
|
||||
add chain=forward src-address=192.168.1.0/24 dst-address=192.168.0.0/16 action=accept comment="allow site-to-site"
|
||||
add chain=forward src-address=192.168.0.0/16 dst-address=192.168.1.0/24 action=accept comment="allow site-to-site"
|
||||
# (Опция) отключить fasttrack целиком
|
||||
# set [find where chain=forward and action=fasttrack-connection] disabled=yes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 9) (Опционально) Шифрование: GRE поверх IPsec
|
||||
|
||||
Если требуется шифровать GRE-трафик через интернет, включите IPsec в транспортном режиме для протокола GRE между публичными IP. Пример — IKEv2 с PSK и современными шифрами. Команды приводятся симметрично на обеих сторонах (подставьте соответствующие локальные/удалённые адреса и одинаковый секрет).
|
||||
|
||||
#### На Shats
|
||||
```rsc
|
||||
/ip ipsec profile
|
||||
add name=prof-gre ike-dh-group=modp2048 ike-encryption=aes-256 ike-integrity=sha256
|
||||
|
||||
/ip ipsec proposal
|
||||
add name=prop-gre auth-algorithms=sha256 enc-algorithms=aes-256-gcm pfs-group=none
|
||||
|
||||
/ip ipsec peer
|
||||
add name=peer-malinin address=80.64.170.90/32 exchange-mode=ike2 profile=prof-gre send-initial-contact=yes
|
||||
|
||||
/ip ipsec identity
|
||||
add peer=peer-malinin auth-method=pre-shared-key secret="SET_STRONG_SHARED_KEY"
|
||||
|
||||
/ip ipsec policy
|
||||
add src-address=178.49.24.65/32 dst-address=80.64.170.90/32 protocol=gre action=encrypt level=require \
|
||||
proposal=prop-gre tunnel=no sa-src-address=178.49.24.65 sa-dst-address=80.64.170.90
|
||||
```
|
||||
|
||||
#### На Malinin
|
||||
```rsc
|
||||
/ip ipsec profile
|
||||
add name=prof-gre ike-dh-group=modp2048 ike-encryption=aes-256 ike-integrity=sha256
|
||||
|
||||
/ip ipsec proposal
|
||||
add name=prop-gre auth-algorithms=sha256 enc-algorithms=aes-256-gcm pfs-group=none
|
||||
|
||||
/ip ipsec peer
|
||||
add name=peer-shats address=178.49.24.65/32 exchange-mode=ike2 profile=prof-gre send-initial-contact=yes
|
||||
|
||||
/ip ipsec identity
|
||||
add peer=peer-shats auth-method=pre-shared-key secret="SET_STRONG_SHARED_KEY"
|
||||
|
||||
/ip ipsec policy
|
||||
add src-address=80.64.170.90/32 dst-address=178.49.24.65/32 protocol=gre action=encrypt level=require \
|
||||
proposal=prop-gre tunnel=no sa-src-address=80.64.170.90 sa-dst-address=178.49.24.65
|
||||
```
|
||||
|
||||
Дополнительно:
|
||||
- Если политика `input` строгая, разрешите UDP/500 и UDP/4500 (IKE/NAT-T) и `ipsec-esp` между публичными IP.
|
||||
- На публичных адресах без NAT можно оставить `nat-traversal=no` (по умолчанию RouterOS 7 сам определяет необходимость). Для надёжности: `peer set peer-... passive=no`.
|
||||
|
||||
Проверка:
|
||||
```rsc
|
||||
/ip ipsec active-peers print detail
|
||||
/ip ipsec installed-sa print detail
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 10) Финальная проверка связности пользователей
|
||||
1) С ПК за Shats (например, `192.168.0.100`) — ping `192.168.1.10` (ПК за Malinin). Должны быть ответы.
|
||||
2) С ПК за Malinin (например, `192.168.1.50`) — ping `192.168.0.10` (ПК за Shats).
|
||||
3) Traceroute между сетями должен показывать переход через GRE (обычно один «хоп» до адреса удалённой LAN через 10.199.99.1↔10.199.99.2).
|
||||
4) При большой нагрузке на межсайтовый трафик убедитесь, что нет внезапных обрывов (если есть — проверьте MTU/MSS и FastTrack/NAT правила).
|
||||
|
||||
---
|
||||
|
||||
Готово. После выполнения шагов клиенты `192.168.0.0/16` за Shats будут видеть клиентов `192.168.1.0/24` за Malinin через GRE-туннель. Для безопасности можно включить опциональный раздел IPsec.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user