Śledzenie pakietu TPROXY aż do gniazda
Sprawdź gniazdo odbierające, znacznik pakietu i lokalną trasę polityki jako jedną ścieżkę dostarczania przezroczystego proxy.
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
- Ruch dociera do hosta przechwytującego przez zamierzone interfejsy i rodzinę adresów.
- Reguła przechwytywania i znacznik pakietu określają politykę lokalnego dostarczania.
- Pasująca reguła polityki wybiera trasę, która dostarcza pakiety lokalnie.
- 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.
| Obserwacja | Następne sprawdzenie |
|---|---|
| Brak istotnych pakietów przychodzących | Ścieżka ruchu i interfejs wejściowy |
| Pakiety docierają; licznik przechwytywania stoi | Rodzina adresów, łańcuch i warunki dopasowania |
| Reguła pasuje; lokalne dostarczenie zawodzi | Znacznik i wybór trasy polityki |
| Gniazdo nasłuchuje; aplikacja nic nie widzi | Moż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.