Ustawiam serwer proxy w ustawieniach APN mojej sieci komórkowej na poniższym zrzucie ekranu:
Działa dobrze. Zweryfikowałem przez whatismyip. Jednak kiedy włączam hotspot na urządzeniu i używam go na innym urządzeniu i sprawdzam z niego adres IP, pokazuje on mój pierwotny adres IP dostawcy usług mobilnych, a nie adres IP proxy.
Dlaczego takie zachowanie, jeśli punkt dostępu ma korzystać z sieci komórkowej, a serwer proxy jest ustawiony w APN? Jak mogę sprawić, by serwer proxy działał również na urządzeniu korzystającym z hotspotu?
Uwaga: nie chcę ustawiać proxy w zaawansowanych ustawieniach opcji Wi-Fi na innym urządzeniu podczas wybierania tego hotspotu. Aplikacja, której próbuję użyć, wykrywa proxy ustawione w Wi-Fi, więc jest to moja jedyna opcja.
Odpowiedź
Twoje pytanie brzmi związane ze zrozumieniem modelu OSI . Serwery proxy używają protokołu http
/ https
lub socks
. Zakładam, że mówisz o http
, który jest protokołem warstwy aplikacji (L7) w modelu OSI. Gdy aplikacja generuje wiadomość http
, jest ona przekazywana do niższej warstwy. W przypadku https
wiadomość jest szyfrowana przez SSL / TLS które są protokołami L6.W L4 wiadomość otrzymuje nagłówek TCP, a następnie w L3 jest konwertowana na pakiet IP. Ten pakiet przechodzi przez NAT i filtrowanie przez zapory ogniowe na poziomie L3, a na koniec przez RRM / PDCP / RLC (jeśli używasz danych mobilnych), MAC i rutowanie jądra na poziomie L2. Na L1 jest przesyłany przez Wi-Fi jako 802.11
ramki lub sygnały CDMA / TDMA / FDMA przez dane mobilne.
Z drugiej strony Hotspot jest oparty głównie na 2 narzędziach przestrzeni użytkownika; hostapd
– co tworzy punkt dostępu Wi-Fi na OSI L2 – i dnsmasq
(do Androida 9) – które działa jako serwer DHCP / DNS w OSI L7. Jeśli podłączony host używa telefonu jako serwera DNS (zgodnie z konfiguracją przez DHCP), telefon odbiera zapytania DNS i rekurencyjnie przekazuje je jako pakiety UDP / IP do serwera DNS nadrzędnego w Internecie (cokolwiek dnsmasq
jest skonfigurowany do używania). Reszta ruchu przychodzącego z sieci hotspot jest poddawana NAT i kierowana na L3 / L2.
Więc nie widzisz żadnego z (pakietów IP) ruch przychodzący z połączonych hostów przechodzi przez stos http
na telefonie z Androidem, dlatego nie jest przekazywany do serwera proxy. Aplikacje takie jak przeglądarki internetowe są odpowiedzialne za tworzenie http(s)
połączenia z serwerem proxy, nie bezpośrednie ly do zdalnego hosta, takiego jak serwer WWW. Nie jest możliwe utworzenie punktu dostępowego, który można skonfigurować do korzystania z serwera proxy http
na OSI L7. Ustawienia proxy (host / port), które ustawiliśmy dla Wi-Fi lub APN lub globalnie to właśnie przekazane do aplikacji, każda aplikacja musi samodzielnie utworzyć połączenie proxy lub po prostu zignorować informacje o serwerze proxy. Musisz podać te dane serwera proxy aplikacjom na każdym hoście połączonym przez hotspot. Więcej informacji znajdziesz w poniższym pytaniu.
Jednak możliwe jest wymuszone przekierowanie całego ruchu na serwer proxy przy użyciu NAT / REDIRECT / TPROXY jądra Linux / Android (na poziomie L3) i tablicy routingu (na poziomie L2). Tak działają proxy , ale istnieją ograniczenia . Klienci poczty e-mail używają protokołów IMAP / POP3 / SMTP (L6 / 7), które nie działają z metodą http GET
, zamiast tego wymagają serwerów proxy http CONNECT
. Ten ostatni może tylko przekazywać ruch TCP, dla UDP wymagany jest przynajmniej serwer proxy SOCKS5, który działa na L5. DNS, a większość gier i aplikacji do połączeń głosowych generuje ruch UDP, więc nie będą działać z http
w ogóle serwery proxy. Narzędzie ping
– na przykład – używa protokołu ICMP (na poziomie L3), którego nie można hermetyzować w protokole TCP lub UDP, więc nie będzie działać również z SOCKS5.
Dlatego „nie jest możliwe w prawdziwym sensie przekierowanie całego ruchu do zdalnego (proxy ) bez korzystania z rozwiązania L2 / 3, takiego jak VPN. Aby uzyskać więcej informacji, zobacz Jak ustawić serwer proxy Wi-Fi HTTPS, a nie HTTP, przez powłokę adb?
Dlaczego takie zachowanie, jeśli hotspot ma korzystać z sieci komórkowej, a proxy jest ustawione w APN?
Hotspot powinien używać sieci komórkowej, aplikacje powinny używać proxy. Serwer proxy skonfigurowany w APN nie jest wymuszany w całym systemie.
Nie chcę ustawiać proxy w zaawansowanych ustawieniach na innym urządzeniu w opcji Wi-Fi podczas wybierania tego hotspotu.
Niestety jest to najprostsze W przeciwnym razie inne metody wymagają rootowania i / lub korzystania z aplikacji innych firm (w celu utworzenia VPN). Zobacz powyższe powiązane pytanie, w jaki sposób przejrzyście wymusić proxy.
Odpowiedź
Powód, dla którego widzisz objawy, jest taki, że kiedy włączasz hotspot, myśl o tym jak o włączeniu telefonu do routera. Zatem żadne ustawienia sieciowe w hotspocie nie zmienią indywidualnego adresu IP urządzenia. Kiedy łączysz się ze swoim hotspotem, łączy się przez ten adres IP urządzenia, a nie kiedy jest zmieniany w ustawieniach sieciowych, ponieważ zmienione ustawienia sieciowe są ostatnie w hierarchii rzeczy. Wierzę, że jeśli wyszukasz go w Google, są to aplikacje, które podszywają się pod adres IP twojego urządzenia w zasadzie w ten sam sposób, co proxy, po prostu niewykrywalne.
Komentarze
- ale ostatecznie żądanie wysyłane przez moje połączenie mobilne musi przechodzić przez ten APN i musi być zgodne z tym proxy, prawda? robi to, gdy używam go na tym samym urządzeniu, nawet gdy hotspot jest włączony. Tak jak powiedziałeś, jest to ostatnia hierarchia rzeczy, więc po nawiązaniu połączenia przez hotspot powinno przejść przez to proxy w ustawieniach połączenia mobilnego po tym