Повеќето грешки во AWS Site-to-Site VPN се грешки во адресите и се прават пред да се помести било кој пакет. Надворешните адреси на тунелот стигнуваат до IPsec партнерите, внатрешните адреси ја сочинуваат рутирачката врска меѓу нив, а заштитените префикси се она за што служи таа врска. Копирајте една улога во друга и тунелот се крева додека ништо не се рутира. Еве ја низата прочитај-провери-конфигурирај што ја користам на клиентска порта со BGP, со вредности земени од преземената конфигурација на уредот, а не од меморија.

Три улоги на адреси, еден тунел

Надворешните адреси се јавни и им припаѓаат на IPsec партнерите: една на тунел од страната на AWS, и достапниот идентитет на клиентската порта од вашата страна, прилагоден на каква и да е NAT поставеност што ја имате. Внатрешните адреси се приватни и ѝ припаѓаат на логичката врска, која AWS ја документира како /30 извлечена од 169.254.0.0/16. Заштитените префикси се VPC, локалните или транзитните мрежи што ги рутирате и рекламирате преку таа врска.

Доделувањето LAN префикс како адреса на интерфејсот на тунелот е класичната форма на оваа грешка. Интерфејсот изгледа конфигуриран, LAN не се рекламира, а спротивната страна нема рута за него. Тунелот може дури да го помине сопствениот внатрешен ping, додека секое име на апликација истекува. Референцата за опциите на тунелот ги наведува ограничувањата на внатрешниот CIDR, вклучително опсегот на адреси од кој мора да доаѓа.

Читајте ги вредностите од преземената конфигурација

Преземете ја конфигурацијата за вашиот конкретен модел уред од врската, потоа третирајте ја нејзината табела со адреси како извор на вистината. Конзолата ги прикажува истите вредности по тунел: надворешен IP, внатрешен CIDR и адресата на BGP партнерот од страната на AWS. Двата тунела се одделни објекти со одделни надворешни крајни точки и одделни внатрешни /30, иако двата носат исти заштитени мрежи.

aws ec2 describe-vpn-connections --vpn-connection-ids vpn-0123456789abcdef0 \
  --query 'VpnConnections[0].Options.TunnelOptions[].[OutsideIpAddress,TunnelInsideCidr]'
aws ec2 describe-customer-gateways --customer-gateway-ids cgw-0123456789abcdef0 \
  --query 'CustomerGateways[0].[IpAddress,BgpAsn]'

Ако преземената датотека и живата конзола не се совпаѓаат, датотеката е застарена. Преземете повторно наместо да ги уредувате адресите рачно, бидејќи несовпаѓањето меѓу внатрешниот пар и конфигурираниот сосед на партнерот е тивок BGP дефект.

Изградете ја врската со правилната адреса

На Linux порта тунелот е интерфејс VTI или XFRM, а внатрешниот /30 оди на тој интерфејс. Два тунели значат два интерфејса и два BGP соседа, по еден за секоја крајна точка на AWS. Конвенцијата што AWS ја печати во преземената конфигурација на уредот ја става виртуелната приватна порта на првата адреса од секој внатрешен /30, а вашата клиентска порта на втората, така што вие ја земате повисоката адреса и се соседувате со пониската. Ништо овде не бара LAN адреса.

ip tunnel add tun0 mode vti local 203.0.113.10 remote 18.230.1.1 key 42
ip addr add 169.254.10.2/30 dev tun0
ip link set tun0 up mtu 1400
ip tunnel add tun1 mode vti local 203.0.113.10 remote 18.230.2.1 key 43
ip addr add 169.254.10.6/30 dev tun1
ip link set tun1 up mtu 1400

Ако датотеката за вашиот модел уред печати обратен пар, користете ги неговите броеви и држете се до правилото: адресата на интерфејсот е ваша, адресата на партнерот и припаѓа на AWS. Обратното дава тунел што никогаш не стигнува до Established, бидејќи соседот што сте го конфигурирале е адресата што вашиот сопствен интерфејс веќе ја држи.

Држете ја ознаката и VTI клучот усогласени со она што IKE демонот го користи за врзување на дете SA за интерфејсот, инаку сообраќајот пристигнува на тунелот без интерфејс каде да слета. Проверете го MTU против патеката и против сопствените поставки на IKE демонот, наместо да копирате број од друга локација.

Проверете BGP пред да ги проверите рутите

Кренувањето на IPsec докажува дека партнерите се согласиле за безбедносна асоцијација и ништо друго. BGP сесијата е одделно преговарање преку внатрешната врска, затоа читајте ја состојбата на соседот и бројачите на префикси, па споредете ги со она што сте имале намера да го рекламирате.

ip -s addr show dev tun0
vtysh -c 'show bgp summary'
vtysh -c 'show bgp neighbors 169.254.10.1'
vtysh -c 'show ip bgp neighbors 169.254.10.1 advertised-routes'

Состојба Established со нула примени префикси е проблем со политика или рекламирање, не со тунелот. Повторете ја целата проверка на вториот тунел; првиот тунел што работи ви кажува дека адресите се веродостојни, не дека вториот тунел воопшто е конфигуриран.

Следете рутиран пакет и потоа застанете

Откако сесијата ќе ги носи префиксите, тестирајте ја рутата во двете насоки од портата: изворна адреса, следен хоп и безбедносната политика што го дозволува сообраќајот. BGP сесијата може да е крената додека конкретниот префикс што му е потребен на вашата апликација е филтриран, сумиран или насочен кон погрешен интерфејс.

Reachability Analyzer е алатката од страната на AWS што зема извор, одредиште и патека и известува која компонента во поддржана конфигурација го блокирала. Користете ја за тестирање на патеката од VPC до адресата на вашата клиентска порта, не од домаќин на апликација. Таа анализира конфигурација и не испраќа пакет низ локален firewall, затоа држете ја нејзината пресуда одделно од вашите сопствени бројачи на интерфејсот и снимки на пакети.

Запишете го надворешниот пар, внатрешниот /30 и рекламираните префикси за секој тунел во една табела. Токму таа табела ја прави следната промена прегледна.

Поврзани статии