Licznik TPROXY może rosnąć, gdy aplikacja nic nie odbiera. Reguła pasowała, ale lokalne dostarczenie nadal zależy od routingu polityki i zgodnego gniazda odbierającego.

Linux TPROXY potrafi przechwycić ruch bez przepisywania celu, jak robi to DNAT. Dlatego pakiety zaadresowane do celu niebędącego lokalnym muszą dotrzeć do odpowiedniego lokalnego gniazda.

Prześledź ścieżkę dostarczania

  1. Ruch dociera do hosta przechwytującego przez zamierzone interfejsy i rodzinę adresów.
  2. Reguła przechwytywania i znacznik pakietu określają politykę lokalnego dostarczania.
  3. Pasująca reguła polityki wybiera trasę, która dostarcza pakiety lokalnie.
  4. Proxy używa obsługiwanego przezroczystego nasłuchiwacza z wymaganą opcją gniazda.

Przykład IPv4 w jądrze wymaga obsługi ze strony aplikacji dla IP_TRANSPARENT. Zwykły nasłuchiwacz na tym samym porcie albo globalne ustawienie wiązania niebędącego lokalnym nie dowodzą tej obsługi.

ObserwacjaNastępne sprawdzenie
Brak istotnych pakietów przychodzącychŚcieżka ruchu i interfejs wejściowy
Pakiety docierają; licznik przechwytywania stoiRodzina adresów, łańcuch i warunki dopasowania
Reguła pasuje; lokalne dostarczenie zawodziZnacznik i wybór trasy polityki
Gniazdo nasłuchuje; aplikacja nic nie widziMożliwości przezroczystego gniazda i właściciel nasłuchiwacza
Żądanie się zaczyna; późniejsze odpowiedzi zawodząDopasowanie ustanowionego gniazda i trasy powrotne

Zapisuj wczytaną konfigurację i przestrzeń nazw sieci przy każdej obserwacji. Późniejsza reguła może nadpisać znacznik albo wybrać inną trasę. Jeśli przechwytywanie odbywa się na hoście, a nasłuchiwacz działa w kontenerze, prawidłowa lokalna trasa hosta nie dostarcza automatycznie do tego kontenera.

Uwzględnij późniejsze pakiety

Przykład jądra zawiera dopasowanie gniazda i ścieżkę DIVERT, która oznacza pakiety należące do przezroczystych gniazd. Pominięcie jej może pozostawić późniejszy ruch na innej ścieżce, nawet gdy pierwsze przechwycenie się powiedzie.

Używaj przezroczystego trybu obsługiwanego przez aplikację i odpowiedniej dokumentacji jądra dla każdej rodziny adresów. Polecenie trasy lokalnej IPv4 nie konfiguruje IPv6, a obsługa w jednej rodzinie nie dowodzi zachowania gniazda w drugiej.

TPROXY nie tworzy też negocjacji SOCKS. Komponent od przezroczystego do SOCKS nadal musi odkryć cel i wynegocjować ze swoim nadrzędnym serwerem.

Przejście z REDIRECT

Zanotuj, jak istniejąca aplikacja uzyskuje pierwotny cel. REDIRECT zmienia cel i opiera się na właściwym mechanizmie odzyskiwania; TPROXY potrzebuje własnego przezroczystego gniazda i układu routingu. Wybieraj według aplikacji i polityki adresu źródłowego.

Przed zmianą trybu przechwytywania powiąż liczniki z wybraną trasą, możliwościami gniazda i logiem aplikacji. W dystrybucji zapewniającej potrzebne środki brakujący krok dostarczania jest lepszym punktem wyjścia niż ponowna kompilacja jądra.

Powiązane artykuły