Podczas podłączania komputera do hotspotu Wi-Fi w Androidzie, przypisano mu 192.168.42.x
adres do mojego komputera. Naprawdę muszę to zmienić, ponieważ powoduje to konflikt z jedną z naszych podsieci roboczych - czy to możliwe?
27
Podczas podłączania komputera do hotspotu Wi-Fi w Androidzie, przypisano mu 192.168.42.x
adres do mojego komputera. Naprawdę muszę to zmienić, ponieważ powoduje to konflikt z jedną z naszych podsieci roboczych - czy to możliwe?
Odpowiedzi:
Niestety nie ma możliwości zmiany zakresu adresów IP dla wbudowanej obsługi modemu, nawet w CyanogenMod. Adres IP hotspotu Wi-Fi jest zakodowany na stałe w android.net.wifi.WifiStateMachine.startTethering () ; adres IP tetheringu przez USB jest zakodowany na stałe w com.android.server.connectivity.Tethering .
Jeśli jednak telefon jest zrootowany, możesz spróbować użyć aplikacji innych firm do tetheringu, które mają opcję zmiany zakresu adresów IP. Na przykład, kiedy wbudowane tethering USB został zerwany w CyanogenMod alfa dla Samsunga Galaxy W, użyłem Wired Tether dla użytkowników root , który ma taką opcję. W przypadku modemu Wi-Fi możesz wypróbować aplikację Wireless Tether for Root Users od tych samych autorów, która ma również opcję zmiany zakresu adresów IP.
Ponieważ kod Google został zamknięty, powyższe linki już nie działają. Niektóre osoby wyeksportowały kod źródłowy z tych repozytoriów do GitHub:
Jednak nie było dalszych działań programistycznych, a aplikacje prawdopodobnie nie działają już w najnowszych wersjach Androida.
Na wypadek, gdyby ktoś chciał wypróbować te przestarzałe aplikacje, udało mi się znaleźć niektóre pliki APK w Archiwum Google Code :
źródło
Wbudowane tethering Wi-Fi w Androidzie został zaprojektowany tak, aby używać 192.168.43.1/24 jako serwera, z
netd
obsługą tetheringudnsmasq
. Pierwszy zakres DNS to192.168.42.1-254
i drugi zakres DNS to192.168.43.1-254
.Netd nie jest łatwy do zmiany. Wymaga gniazda, aby się z nim komunikować, i to gniazdo jest pobierane, gdy Android zaczyna tethering. Ale przeglądając pliki źródłowe dla
Tethering.java
(użyłem Froyo) widzimy:Później widzimy używane zakresy, JAKO BACKUP .
Głównym źródłem zakresów dhcp nie są zapisane na stałe 42 i 43, ale odczytane z array.config_tether_dhcp_range, wewnętrznej tablicy ciągów. Ale obecnie jest pusty.
Możesz edytować system Android. Tak jest na moim telefonie
/system/framework/framework-res.apk
. Istnieje mnóstwo samouczków online do edycji framework-res.apk, od prostych ciągów po pełne motywy. Znajdź jedną dla swojego telefonu i wersji na Androida.Najważniejsze, co chcesz zmienić, to
/res/values/arrays.xml
Szukać
<array name="config_tether_dhcp_range" />
Zmień na:
w razie potrzeby skompiluj / zip / sign (postępuj zgodnie z samouczkiem), a następnie zainstaluj ponownie.
Jeśli chcesz mieć więcej niż jeden zakres, po prostu skopiuj dwa elementy w kółko. Zawsze musisz zapewnić start i stop dla każdego zakresu. Postaraj się zachować to w tym samym / 24, tj.
192.168.50.
5 i tym podobne192.168.50.99
. Możesz potwierdzić, że działabusybox ps | grep dnsmasq
lub jeśli nie masz busyboksa,ps dnsmasq
użyj pid wcat /proc/pid/cmdline
. Powinieneś otrzymać (lub podobny):FWIW, moje tethering WIFI używa domyślnych
dnsmasq
zakresów, ale mój komputer został przypisany192.168.43.147/24
i brama192.168.43.1/24
. Nie jestem pewien, dlaczego domyślnie ustawiony jest42.x
adres.źródło
Wiem, że to stary post, ale pomyślałem, że dostarczy aktualizację. Wygląda na to, że niektórzy producenci i wersje Androida teraz pozwalają na zmianę zakresu podsieci IP dla serwera DHCP przez interfejs użytkownika podczas korzystania z funkcji hotspotu WiFi. Oto, jak go znaleźć na telefonie HTC One M8 z systemem Android 6.0. YMMV.
Na ekranie mobilnego punktu aktywnego kliknij ikonę 3 kropek (więcej), przejdź do Zaawansowane, a następnie Ustawienia sieci LAN. W obszarze „Lokalny adres IP” zmień adres IP na żądany adres IP. W obszarze „Lokalny DHCP” zmień początkowy adres IP, tak aby pasował do podsieci twojego adresu IP.
Trent
źródło
UWAGA: root jest wymagany.
Domyślny zakres adresów IP DHCP jest zakodowany na stałe ( 1 ) , nie można go zmienić bez odbudowy pamięci ROM ze zmodyfikowanym kodem źródłowym. Lub użyj małego hacka.
Gdy włączysz tethering, co się stanie (przynajmniej):
hostapd
- uruchamiany jest demon zarządzający punktami dostępu.dnsmasq
- serwer DHCP / DNS (do Pie) - uruchamiany jest z zakodowanymi argumentami wiersza poleceń ( 7 ) (które można ustawić za pomocą/etc/dnsmasq.conf
( 8 ) w przeciwnym razie).Możemy więc zastąpić
/system/bin/dnsmasq
niestandardowym skryptem powłoki, przejmując kontrolę nad procesem pomiędzy nimi. Zmień nazwę oryginalnego pliku binarnego na coś innego:Utwórz skrypt
/system/bin/dnsmasq
:Potwierdź nazwę interfejsu Wi-Fi (
wlan0
zwykle). Sprawdź za pomocąip link
lubls /sys/class/net/
.Również potwierdzić swoją sieć lokalna tabela routingu jest
97
:grep local_network /data/misc/net/rt_tables
. Rutowanie w Androidzie to bałagan, który staje się coraz bardziej skomplikowany z każdą nową wersją. Więc nie jestem pewien, czy to było trwałe, czy nie. Przed wprowadzeniem jakichkolwiek zmian sprawdź zasady i tabele routingu, aby dowiedzieć się, co powinieneś umieścić w skrypcie:Reguły SELinuksa również muszą zostać zdefiniowane, jeśli (wszystkie lub niektóre) nie są jeszcze zdefiniowane i jeśli status ma wartość
enforcing
. Użyj narzędzia Magisksuploicy
lub innego podobnego narzędzia, takiego jaksepolicy-inject
:* Nie trwała podczas ponownego uruchamiania, należy użyć jakiś
init.d
skrypt lub wymienić/sepolicy
wramdisk
Ustaw uprawnienia do plików:
Cieszyć się!
Lub możesz skonfigurować pełne tethering z wiersza poleceń, uruchamiając własne procesy. Ta odpowiedź zawiera instrukcje, choć pytanie jest inne.
ZWIĄZANE Z:
źródło