Я пытаюсь подключить свою сеть к 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
В принципе, вам необходимо:
Повторите процесс для второй подсети + VPN.