Selektory ruchu IPsec: co obejmują, a czego nie
Selektory to wynegocjowana polityka, a nie trasa ani uprawnienie. Czytaj je z obu stron, obserwuj, jak responder je zwęża, a potem śledź jeden cel.
Selektory ruchu nazywają ruch wewnętrzny, który chroni umowa IPsec, a para jest negocjowana, a nie zakładana. Dwa punkty końcowe mogą się doskonale uwierzytelnić i nadal nie zgadzać się co do tego, które pakiety należą do wnętrza tunelu. Ta niezgodność jest niewidoczna w stanie połączenia, który zwykle raportuje zdrowy tunel. Odczytanie selektorów z obu stron i śledzenie jednego celu znajduje ją szybciej niż jakiekolwiek edytowanie polityki.
Czytaj je z obu stron
Każdy punkt końcowy opisuje swoją stronę jako lokalną, a drugą stronę jako zdalną. Ta sama para prefiksów pojawia się więc w obu konfiguracjach zamieniona, i jest to poprawne, a nie sprzeczne. Odwrócenie perspektywy to pierwsza rzecz do zrobienia, gdy działająca umowa wygląda na papierze źle. Porównywanie dwóch plików obok siebie bez zamiany miejscami daje niezgodność, której nie ma.
Wartości nie zawsze są pojedynczymi podsieciami. Selektory IKEv2 mogą nieść zakresy adresów, numery protokołów i zakresy portów, i tak polityka chroni jedną usługę zamiast całej sieci. Selektor węższy niż zamierzony ruch daje tunel, który przenosi niektóre cele i po cichu wyklucza inne.
Zapisz obie strony w jednej tabeli, zanim cokolwiek zmienisz. To ćwiczenie zwykle rozstrzyga pytanie bez dotykania pliku konfiguracji.
Zwężanie to decyzja respondera
Inicjator proponuje, a responder może przyjąć tylko podzbiór. IKEv2 pozwala responderowi zwęzić oferowane selektory ruchu, i to zwężony wynik jest faktycznie instalowany. Czytanie konfiguracji inicjatora opisuje więc ofertę, a nie umowę.
Dlatego podsieć dodana do klienta może dać działający tunel, który mimo to odrzuca nowy cel. Serwer zwężył ofertę do tego, na co pozwala jego polityka, podczas gdy plik klienta nadal wymienia szerszy zakres. Tylko stan wynegocjowany pokazuje prawdę: w Linuksie ip xfrm policy i lista child SA w dokumentacji IKEv2 strongSwan raportują to, co zainstalowano, a nie to, o co proszono. Gdy te dwa się różnią, zmienić trzeba politykę respondera.
Odrzucona oferta to inny objaw niż zwężona. Odrzucenie pojawia się w dzienniku negocjacji i nie pozostawia żadnego skojarzenia child.
Śledź jeden cel od początku do końca
Wybierz rzeczywisty cel oraz adres źródłowy, którego klient by dla niego użył, a potem przeprowadź tę parę przez trzy niezależne decyzje. Trasa wybiera ścieżkę, selektor decyduje, czy ta ścieżka jest chroniona, a zapora decyduje, czy pakiet jest dozwolony. Każdy z nich może zawieść samodzielnie, a szeroki selektor nie naprawia żadnego z pozostałych.
ip route get 10.20.30.41
ip xfrm policy list
swanctl --list-sas
Zapytanie o trasę podaje interfejs i adres źródłowy, które niosłyby pakiet. Lista polityk pokazuje, czy dla tej pary istnieje pasująca polityka tunelu, wraz z jej kierunkiem i poziomem. Lista SA pokazuje wynegocjowane selektory child wraz z licznikami, więc skojarzenie child z zerem pakietów po próbie ruchu jest sygnaturą selektorów, które wykluczają to, co jest wysyłane. Trzy polecenia, trzy różne odpowiedzi, i tylko jedna z nich wyjaśnia ciche odrzucenie.
Jeśli liczniki child się poruszają, a aplikacja nadal zawodzi, problem leży poza tunelem. To przenosi dochodzenie do nasłuchu lub zapory zdalnego hosta, a nie do selektorów.
Trzymaj oba cele osobno
Chronienie podsieci biurowej i wysyłanie całego przeglądania przez zdalne wyjście to różne wymagania z różnymi selektorami. Profil zbudowany dla jednego rzadko pasuje do drugiego, a ich mieszanie daje albo wyciek, albo zepsuty podział. Rozszerzenie chronionego zakresu oznacza zmianę obu punktów końcowych i ich polityki przekazywania, bo jednostronna zmiana staje się odrzuconą ofertą. To najczęstszy sposób, w jaki działający tunel przestaje działać po małej zmianie.
Selektory opisują pokrycie kryptograficzne, trasy wybierają ścieżki, a aplikacje egzekwują własne uprawnienia. Tunel obejmujący wszystko nadal nie dotrze do usługi przypisanej do loopback, a trasa do tunelu nadal potrzebuje selektora obejmującego cel. Sprawdź wszystkie trzy na tym samym żądaniu testowym, a niezgodność sama się nazwie.