Назад | Перейти на главную страницу

Mikrotik направляет пакеты VPN на неправильный интерфейс

Я пытаюсь подключить свою сеть к AWS VPC с помощью статического IP AWS VPN. Я выполнил инструкции AWS, правильно настроил свой маршрутизатор MikroTik и могу проверить связь с экземпляром Ubuntu, который я подключил к этому VPC. Поскольку в моем MikroTik есть 2 провайдера, я настроил еще один VPN в AWS и решил использовать два интерфейса в разных подсетях в моем экземпляре Ubuntu AWS:

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 0A:72:28:AF:C7:CE  
          inet addr:192.168.254.4  Bcast:192.168.254.15  Mask:255.255.255.240
          inet6 addr: fe80::872:28ff:feaf:c7ce/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:24297 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21627 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7074474 (6.7 MiB)  TX bytes:2362441 (2.2 MiB)

eth1      Link encap:Ethernet  HWaddr 0A:A2:0F:7C:75:FC  
          inet addr:192.168.254.20  Bcast:192.168.254.31  Mask:255.255.255.240
          inet6 addr: fe80::8a2:fff:fe7c:75fc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:24996 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25227 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2307467 (2.2 MiB)  TX bytes:5382812 (5.1 MiB)

Теперь, даже если у меня есть два правильно настроенных VPN на стороне загрузки, одновременно работает только один VPN. Например: представьте себе VPN с именем aws-main настроен для работы с подсетью 192.168.254.0/28 и VPN aws-резервное копирование настроен для работы с подсетью 192.168.254.16/28, если я хочу пинговать ip 192.168.254.4, мне нужно отключить маршрут № 2, и если я хочу пинговать IP 192.168.254.20, мне нужно отключить маршрут № 1

#      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
1 A S  ;;; ISP 1
    0.0.0.0/0                          yyy.yyy.yyy.yyy           1
2   S  ;;; ISP 2
    0.0.0.0/0                          zzz.zzz.zzz.zzz           1
4 ADC  yyy.yyy.yyy.0/24    y.y.y.y        ether3                 0
6 ADC  zzz.zzz.zzz.0/30    z.z.z.z        ether2                 0
9 ADC  192.168.15.0/24    192.168.15.254  ether5                 0

Если я попробую пинговать 192.168.254.20, когда включены оба маршрута №1 и №2, я увижу это сообщение в журнале:

backup-out srcnat in:(unknown 0) out:ether3, src-mac xxx, proto ICMP(type 8,code 0), 192.168.15.31 ->192.168.254.20, len 84

Mikrotik направляет пакет на ether3 вместо ether2 (правильный шлюз для VPN. aws-резервное копирование), Я думаю, что это проблема, но я не знаю, как заставить ее исправить интерфейс.

/ip firewall nat> print
0    chain=srcnat action=accept src-address=192.168.15.0/24 
  dst-address=192.168.254.0/28 log=yes log-prefix="main-out" 

1    chain=srcnat action=accept src-address=192.168.15.0/24 
  dst-address=192.168.254.16/28 log=yes log-prefix="backup-out" 

2    chain=srcnat action=accept src-address=192.168.254.0/28 
  dst-address=192.168.15.0/24 log=yes log-prefix="main-in" 

3    chain=srcnat action=accept src-address=192.168.254.16/28 
  dst-address=192.168.15.0/24 log=yes log-prefix="backup-in" 

4    chain=srcnat action=masquerade log=no log-prefix="masquerade"

это политики:

0  A  ;;; AWS Tunnel 2 - BACKUP
   src-address=0.0.0.0/0 src-port=any dst-address=192.168.254.16/28 
   dst-port=any protocol=all action=encrypt level=require 
   ipsec-protocols=esp tunnel=yes sa-src-address=zzz.zzz.zzz.zzz 
   sa-dst-address=x.x.x.x proposal=AWS ph2-count=9 

2  A  ;;; AWS Tunnel 1 - MAIN
   src-address=0.0.0.0/0 src-port=any dst-address=192.168.254.0/28 
   dst-port=any protocol=all action=encrypt level=require 
   ipsec-protocols=esp tunnel=yes sa-src-address=yyy.yyy.yyy.yyy 
   sa-dst-address=K.K.K.K proposal=AWS ph2-count=8

По крайней мере, для меня mikrotik не маршрутизирует пакеты VPN с использованием правильной подсети для правильного шлюза. Это проблема? Как я могу это решить?

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

Что вам нужно, так это маршрутизация от источника (также известная как маршрутизация на основе политик) в Mikrotik:

https://wiki.mikrotik.com/wiki/Policy_Base_Routing

В принципе, вам необходимо:

  • Создайте правило переключения в цепочке PREROUTING, которое соответствует пакетам, идущим в одну из подсетей.
  • Пометьте все пакеты, идущие в эту подсеть, уникальным маркер маршрута
  • Добавьте маршрут для всех пакетов, соответствующих этой метке маршрутизации, чтобы использовать соответствующую VPN в качестве шлюза.

Повторите процесс для второй подсети + VPN.