AWS Site-to-Site VPN ilə bağlı səhvlərin çoxu ünvan səhvləridir və hər hansı paket hərəkət etməmişdən əvvəl edilir. Tunelin xarici ünvanları IPsec həmyaşıdlarına çatır, daxili ünvanlar onların arasındakı marşrutlaşdırma əlaqəsini təşkil edir, qorunan prefikslər isə həmin əlaqənin məqsədidir. Bir rolu digərinə köçürsəniz, tunel qalxır, amma heç nə marşrutlaşmır. BGP müştəri şlüzunda istifadə etdiyim oxu-yoxla-konfiqurasiya et ardıcıllığı budur və dəyərlər yaddaşdan deyil, endirilmiş cihaz konfiqurasiyasından götürülür.

Üç ünvan rolu, bir tunel

Xarici ünvanlar publikdir və IPsec həmyaşıdlarına aiddir: AWS tərəfində hər tunel üçün bir, sizin tərəfdə isə müştəri şlüzunun əlçatan kimliyi, faktiki NAT quruluşunuza uyğunlaşdırılmış şəkildə. Daxili ünvanlar özəldir və məntiqi əlaqəyə aiddir; AWS bunu 169.254.0.0/16-dan götürülmüş /30 kimi sənədləşdirir. Qorunan prefikslər həmin əlaqə üzərindən marşrutlaşdırdığınız və elan etdiyiniz VPC, yerli və ya tranzit şəbəkələridir.

LAN prefiksini tunel interfeysinin ünvanı kimi təyin etmək bu səhvin klassik formasıdır. İnterfeys konfiqurasiya olunmuş görünür, LAN elan edilmir və qarşı tərəfin onun üçün marşrutu olmur. Tunel hətta öz daxili pingini keçə bilər, halbuki hər tətbiq adı vaxt aşımına düşür. Tunel seçimləri sənədi daxili CIDR məhdudiyyətlərini, o cümlədən hansı ünvan aralığından gəlməli olduğunu sadalayır.

Dəyərləri endirilmiş konfiqurasiyadan oxuyun

Konfiqurasiyanı bağlantıdan konkret cihaz modeliniz üçün endirin, sonra onun ünvan cədvəlini həqiqət mənbəyi kimi qəbul edin. Konsol hər tunel üçün eyni dəyərləri göstərir: xarici IP, daxili CIDR və AWS tərəfində BGP həmyaşıd ünvanı. İki tunel ayrı obyektlərdir, ayrı xarici son nöqtələri və ayrı daxili /30-ları var, hər ikisi eyni qorunan şəbəkələri daşısa da.

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]'

Endirilmiş fayl ilə canlı konsol uyğun gəlmirsə, fayl köhnəlmişdir. Ünvanları əl ilə redaktə etmək əvəzinə yenidən endirin, çünki daxili cüt ilə həmyaşıdın konfiqurasiya edilmiş qonşusu arasındakı uyğunsuzluq səssiz BGP nasazlığıdır.

Əlaqəni üzərinə düzgün ünvan qoyaraq qurun

Linux şlüzunda tunel VTI və ya XFRM interfeysidir və daxili /30 həmin interfeysə gedir. İki tunel iki interfeys və iki BGP qonşusu deməkdir, hər AWS son nöqtəsi üçün bir. AWS-in endirilmiş cihaz konfiqurasiyasında çap etdiyi konvensiya virtual özəl şlüzunu hər daxili /30-un birinci ünvanına, müştəri şlüzunuzu isə ikinciyə qoyur, yəni yuxarı ünvanı siz götürürsünüz və aşağı ünvanla həmyaşıd olursunuz. Burada heç nə LAN ünvanı tələb etmir.

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

Cihaz modelinizin faylı əks cütləmə çap edirsə, onun rəqəmlərindən istifadə edin və qaydaya əməl edin: interfeysdəki ünvan sizindir, həmyaşıd ünvanı AWS-ə aiddir. Bunu tərs etmək heç vaxt Established vəziyyətinə çatmayan tunel yaradır, çünki konfiqurasiya etdiyiniz qonşu öz interfeysinizin artıq saxladığı ünvandır.

Mark və VTI açarını IKE demonunun alt SA-nı interfeysə bağlamaq üçün istifadə etdiyi dəyərlərlə uyğun saxlayın, əks halda trafik tunelə gəlir, amma enəcək interfeys olmur. MTU-nu yola və IKE demonunun öz parametrlərinə görə yoxlayın, başqa saytdan rəqəm köçürməyin.

Marşrutları yoxlamazdan əvvəl BGP-ni yoxlayın

IPsec-in qalxması həmyaşıdların təhlükəsizlik assosiasiyası barədə razılaşdığını sübut edir, başqa heç nəyi yox. BGP sessiyası daxili əlaqə üzərində ayrı danışıqdır, ona görə qonşu vəziyyətini və prefiks sayğaclarını oxuyun, sonra elan etmək istədiyinizlə müqayisə edin.

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 vəziyyəti və sıfır alınmış prefiks siyasət və ya elan problemidir, tunel problemi deyil. Bütün yoxlamanı ikinci tuneldə təkrarlayın; işləyən birinci tunel ünvanların ağlabatan olduğunu deyir, ikinci tunelin ümumiyyətlə konfiqurasiya edildiyini yox.

Marşrutlaşdırılmış paketi izləyin və sonra dayanın

Sessiya prefiksləri daşıdıqdan sonra marşrutu şlüzdən hər iki istiqamətdə yoxlayın: mənbə ünvanı, növbəti hop və trafikə icazə verən təhlükəsizlik siyasəti. BGP sessiyası qalxmış ola bilər, halbuki tətbiqinizin ehtiyac duyduğu konkret prefiks filtrlənib, yığcamlaşdırılıb və ya səhv interfeysə yönəldilib.

Reachability Analyzer AWS tərəfindəki alətdir: mənbə, təyinat və yol alır və dəstəklənən konfiqurasiyada hansı komponentin onu blokladığını bildirir. Onu VPC-dən müştəri şlüzunuzun ünvanına qədər yolu yoxlamaq üçün istifadə edin, tətbiq hostundan yox. O, konfiqurasiyanı təhlil edir və yerli firevalldan paket keçirmir, ona görə onun hökmünü öz interfeys sayğaclarınızdan və paket tutmalarınızdan ayrı saxlayın.

Hər tunel üçün xarici cütü, daxili /30-u və elan edilmiş prefiksləri bir cədvəldə qeyd edin. Növbəti dəyişikliyi nəzərdən keçirilə bilən edən məhz bu cədvəldir.

Əlaqəli məqalələr