Gdy IKEv2 zwraca TS_UNACCEPTABLE, porównaj rzeczywiste podsieci
Odmowa selektora to niezgodność co do pokrycia między dwiema stronami. Odwróć etykiety lokalne i zdalne, a następnie porównaj dokładne zakresy proponowane przez każdą stronę.
Czytaj TS_UNACCEPTABLE jako niezgodę co do pokrycia, a nie jako uszkodzony profil. Brama mówi, że dwie strony nie potrafiły uzgodnić, które adresy może przenosić ten tunel. IKE SA może już być podniesiona w tym momencie, dlatego klient może wyglądać na połączonego bez żadnej podrzędnej SA za sobą. Gdy tak to ujmiesz, praca staje się mechaniczna. Zapisz zamierzone prefiksy obu stron, porównaj je w jednym kierunku i zwężaj, aż się przetną.
Najpierw zapisz zamierzone pary
Przed dotknięciem konfiguracji wypisz cztery wartości: zakres źródłowy inicjatora, jego zakres docelowy oraz tę samą parę widzianą od strony respondera. Zapisz też rodzinę adresów każdej z nich. Zakres IPv4 i zakres IPv6 to różne typy selektorów i żadnego nie można złożyć w ładunek drugiego.
Dodaj wszelkie ograniczenie protokołu lub portu, które niesie polityka. Reguła zezwalająca tylko na TCP 445 do serwera plików opisuje węższy zbiór niż podsieć, w której się znajduje. Jeśli pominiesz to w notatkach, wynik negocjacji będzie wyglądał niespójnie z powodów, których nie widzisz.
Odwróć etykiety, zanim je porównasz
Lokalny i zdalny to etykiety względne. Lokalny prefiks klienta to zdalny zakres bramy, a lokalny zakres bramy to zdalny zakres klienta. Dlatego zrzuty ekranu z obu końców nigdy się nie zgadzają, a porównywanie ich dosłownie to zwykły sposób utraty popołudnia.
Responder może zwęzić ofertę do akceptowalnego podzbioru zamiast ją odrzucać. Ten wynik jest gorszy od czystej porażki, ponieważ działa połowicznie. Poproś o 10.0.0.0/16, gdy polityka dopuszcza 10.0.5.0/24, a możesz skończyć z podrzędną SA obejmującą tylko tę /24. Odpowiada jeden host, wszystko inne wypada poza, a nic w kliencie tego nie mówi. Zanim uznasz, że negocjacja się powiodła, czytaj selektory zaakceptowane, a nie żądane.
Profile road warrior żądające trasy domyślnej lądują tu stale. Brama zbudowana dla dostępu dzielonego zwęża ofertę pełnego zakresu do własnych podsieci, a klient musi zaakceptować zwężony wynik albo głośno zawieść.
Odczytaj odmowę z jednej próby
Zbierz oba logi z tej samej próby połączenia. Zapisany profil pokazuje, co skonfigurowałeś, a nie co zaproponowano, a na strongSwan swanctl --log wypisuje odebrane powiadomienie wraz z selektorami, które niosło.
Następnie sprawdź, co faktycznie zainstalowano. swanctl --list-sas pokazuje selektory podrzędnej SA, a ip xfrm policy pokazuje te same zakresy jako wpisy polityki jądra. Podrzędna SA na tej liście z selektorami, których nie zamierzałeś, to zdarzenie zwężenia; brak podrzędnej SA plus TS_UNACCEPTABLE w logu to odmowa.
Skoro już tam jesteś, odseparuj bliskich sąsiadów. INVALID_SELECTORS skarży się na selektor wewnątrz ustanowionej podrzędnej SA, natomiast INTERNAL_ADDRESS_FAILURE oznacza, że responder nie mógł przydzielić adresu wirtualnego, co jest problemem puli, a nie pokrycia.
Sprawdź, co po cichu zmniejsza zbiór
Trzy rzeczy zmniejszają zbiór selektorów, nic nie mówiąc. Polityka respondera jest pierwsza, poprzez listy podsieci, reguły grupowe lub autoryzację na użytkownika, które redukują ofertę do podzbioru. Rodzina adresów jest druga: klient z podwójnym stosem często proponuje IPv6 obok IPv4 i dostaje odmowę dla zakresów, których brama nigdy nie skonfigurowała.
Ograniczenia protokołu i portu są trzecie. Gdy polityka zezwala tylko na TCP 445, podrzędna SA może się podnieść, podczas gdy ICMP i UDP pozostają poza nią, a użytkownik zgłasza zepsuty tunel, choć dozwolony był tylko jeden protokół.
Dlatego samo poszerzanie adresów nie naprawi polityki ograniczonej portem, i właśnie ten przypadek najpewniej przetrwa trzy rundy rozwiązywania problemów bez zmian.
Udowodnij pokrycie pasującym ruchem
Po zainstalowaniu podrzędnej SA wyślij jedno żądanie, które z pewnością mieści się w akceptowanych zakresach. Patrz na liczniki, a nie na ikonę stanu: ip -s xfrm state i liczniki za ip xfrm policy rosną, gdy pakiet zostanie dopasowany i ochroniony. Liczba bajtów, która po prawdziwym ruchu pozostaje zerem, oznacza, że jądro nigdy nie wybrało tej polityki.
To zero to problem routingu lub kolejności polityk, a nie kryptografii. Wygląda też identycznie jak odmowa selektora z punku widzenia użytkownika, dlatego warto zebrać liczniki przed ponownym otwarciem profilu. Liczniki rosnące tylko w jednym kierunku wskazują raczej drogę powrotną.
Zakończ, wpisując zaakceptowaną parę do zgłoszenia, obok zakresu, o który pierwotnie proszono. Trzymaj wybór tak wąski, jak wymaga tego potrzeba, ponieważ usuwanie błędu przez zastąpienie prywatnego zakresu wszystkimi adresami daje znacznie więcej dostępu, niż zatwierdzono dla konta.