Jak skonfigurować mapowanie hosta na IP na nierootowanym Androidzie?

10

Mam witrynę internetową uruchomioną na komputerze i chcę ją przetestować na moim tablecie Nexus 7. Tj. Przez lokalną sieć WiFi LAN. Jeśli wpisam adres IP, łączy się, ale pokazuje niewłaściwą stronę internetową, ponieważ używam nazwanego wirtualnego hostingu.

Chcę więc wpisać mysite.localNexusa w Chrome / Firefox, przekonwertować go na 10.1.2.3(lub inny lokalny adres IP), a następnie zadzwonić do 10.1.2.3serwera podając go mysite.localjako hosta.

Moje pytanie: Czy tablet z Androidem 4.x ma /etc/hostspliki lub ich odpowiedniki, które mogę edytować? (Bez konieczności rootowania tabletu itp.)

Na moich komputerach z Linuksem robię to, dodając wpis w /etc/hosts:

10.1.2.3  mysite.local

(Lub Windows\System32\drivers\etc\hostsna komputerze z systemem Windows robi to samo.)

BTW, jest to pół-duplikat opcji Ręcznie ustaw nazwę hosta dla adresu IP (tj. / Etc / hosts equiv.?) , Ale to pytanie dotyczyło Androida 2.2, gdzie najwyraźniej nie było to możliwe. (Jeden z alternatywnych pomysłów sugerował, że skonfigurowano DNS na lokalnym routerze, ale o ile wiem, mój router nie robi DNS lokalnie, więc nie mam tej opcji. Mógłbym skonfigurować własny serwer DNS, aby to zrobić, ale wydaje się, że jest to rozwiązanie Big Job).

Darren Cook
źródło
To raczej pytanie o awarię serwera lub superużytkownika . I powinieneś skonfigurować te nazwy hosta na serwerze lokalnym (który jest prezentowany przez serwer DHCP jako węzeł DNS).
Izzy
1
@Izzy Dzięki Izzy, ale wiem jak skonfigurować / etc / hosts na serwerach. Nie wiem, jak to zrobić, aby znaleźć / edytować ekwiwalent na tablecie z Androidem 4.x (lub nawet jeśli istnieje ekwiwalent bez rootowania go). (Mój serwer DHCP, tj. Router Wi-Fi, wydaje się nie oferować żadnych opcji dodawania niestandardowych nazw: mam opcję określenia niestandardowego serwera DNS, ale jest to błotnista pula, w którą tak naprawdę nie chciałem angażować swoich rąk. )
Darren Cook
Źle mnie zrozumiałeś, Darren: nie sugerowałem edycji /etc/hosts, ale skonfigurowałem twój „serwer nazw” (np. DNSMasq lub cokolwiek, czego używasz). Router może ci to dać. /etc/hostsw przeciwnym razie należy edytować na każdym komputerze - a odpowiedni plik na Androidzie można edytować tylko za pomocą „uprawnień roota” (nie znam jego dokładnej lokalizacji, ale jest gdzieś w /data/systemAFAIR). Zobacz: Jak edytować plik etc / hosts
Izzy

Odpowiedzi:

6

Nie można po prostu edytować pliku hosts na Androidzie, ponieważ znajduje się on w systemie plików tylko do odczytu: /system/etc/hostspatrz:

Alternatywami są:

  • użyj serwera DNS takiego jak DNSMasq w swojej sieci lokalnej, aby zająć się tym „centralnie”
  • użyj „uprawnień roota”, aby wymusić edycję pliku systemowego, jak opisano powyżej
  • zainstaluj „lokalny serwer DNS” na urządzeniu z Androidem, aby z niego korzystać, np. serwer DNS
Izzy
źródło
hej Izzy, próbowałem obsłużyć to za pomocą serwera DNS, ponieważ nie mam dostępu root do mojego telefonu; Dodałem prostą regułę, która przekierowuje nazwę hosta na adres IP, o którym mowa ... ale to nie działa .. co robię źle?
George Katsanos
Serwer DNS powinien obsługiwać inne urządzenia w twojej sieci (jak mówi opis, w tym celu musisz dodatkowo użyć przekierowania portów). To zawsze wymaga, aby te urządzenia (w tym urządzenie z Androidem) były skonfigurowane do korzystania z niego. Nie korzystałem z takiego serwera DNS na moich urządzeniach z Androidem, więc nie sprawdziłem, co dokładnie należy tutaj zrobić; ale najprawdopodobniej musisz dostosować wpisy DNS w ustawieniach sieci (naciśnij długo wpis sieci Wi-Fi, wybierz „Zaawansowane” i dostosuj pierwszy wpis DNS - pozostaw drugi jak na „zapasowym”).
Izzy
@GeorgeKatsanos Może Cię to zainteresować: stackoverflow.com/a/14211550/1768141
Vinayak
2

Jak wspomniano przez lzzy, do osiągnięcia tego można użyć serwera DNSMasq . Ale Chrome korzysta z własnego procesu rozpoznawania DNS i ta metoda może nie działać.

Aby uruchomić serwer, użyj następującego polecenia:

sudo /usr/local/sbin/dnsmasq -d \
                             --no-hosts \
                             --no-resolv \
                             --conf-file=/dev/null \
                             --server=8.8.8.8 --server=8.8.4.4 \
                             --address=/example.com/192.168.0.101
  • sudo wymagane do połączenia z portem 53
  • -d uruchom serwer na pierwszym planie
  • --no-hosts nie używaj lokalnego pliku hosts
  • --conf-file=/dev/null nie używaj żadnego pliku konfiguracyjnego
  • --server=8.8.8.8 --server=8.8.4.4 adresy serwerów nadrzędnych (Google DNS w tym przykładzie)
  • --address=/example.com/192.168.0.101hosty do zastąpienia. Musisz dodać swoich gospodarzy do tej linii. Możesz także dodać wiele hostów.

Następnie zmień serwer DNS na urządzeniu. Można to łatwo zrobić za pomocą aplikacji DNS Changer .

Po wykonaniu tych kroków żądania do tych hostów należy wysłać na adresy.

ZeroDivisi0n
źródło
0

Najprostszym sposobem zdefiniowania odwzorowania hosta na IP jest hostsplik, ponieważ większość serwerów rozpoznających DNS honoruje ten plik . Ale jak wspomniano w innych odpowiedziach, nie można edytować /etc/hostsbez rootowania urządzenia z Androidem. Dostęp do serwera internetowego za pomocą adresu IP również nie będzie działać z powodu wirtualnego hostingu. Oto kilka opcji, z którymi możesz korzystać na nie uruchomionym urządzeniu:

  • Użyj aplikacji VPN, która przechwytuje ruch DNS i wyszukuje niestandardowy hostsplik przed wysłaniem zapytania do skonfigurowanego serwera DNS.
  • Uruchom serwer DNS; można je skonfigurować tak, aby zwracały predefiniowany adres IP dla określonej nazwy. Na przykład, jeśli używasz dnsmasq, dodaj address=/mysite.local/10.1.2.3do „dnsmasq.conf” . Lub dnscrypt-proxydodaj mysite.local 10.1.2.3do „cloaking-rules.txt” .
  • Skonfiguruj telefon, aby korzystał z proxy lub VPN, a następnie dodaj wpis 10.1.2.3 mysite.localdo hostspliku na serwerze proxy lub uruchom lokalny serwer DNS na serwerze VPN.
  • Jeśli bootloader można odblokować, edytuj hostsplik z odzyskiwania niestandardowego.

Aby uzyskać więcej informacji, zobacz: Jak zawsze rozwiązać nazwę domeny na stały adres IP bez rootowania?


ZWIĄZANE Z:

Irfan Latif
źródło