루팅되지 않은 Android에서 호스트 대 IP 매핑을 설정하는 방법은 무엇입니까?


10

컴퓨터에서 웹 사이트를 운영하고 있는데 Nexus 7 태블릿에서 웹 사이트를 테스트하고 싶습니다. 즉, 로컬 WiFi LAN을 통해. IP 주소를 입력하면 연결되지만 이름이 지정된 가상 호스팅을 사용하고 있기 때문에 잘못된 웹 사이트가 표시됩니다.

그래서 내가하고 싶은 mysite.local것은 Nexus에서 Chrome / Firefox에 입력하고 해당 10.1.2.3주소 로 변환 하거나 로컬 IP 주소 로 변환 한 다음 10.1.2.3서버를 mysite.local호스트로 요청하여 요청하는 것입니다.

내 질문 : Android 4.x 태블릿에 /etc/hosts편집 할 수 있는 파일이나 동등한 파일이 있습니까? (태블릿 등을 뿌리지 않아도됩니다.)

내 Linux 컴퓨터에서 /etc/hosts다음에 항목을 추가하여이 작업을 수행합니다 .

10.1.2.3  mysite.local

(또는 Windows\System32\drivers\etc\hostsWindows 시스템에서도 동일하게 수행됩니다.)

BTW, 이것은 IP 주소 (예 : / etc / hosts equiv.?)에 대한 호스트 이름을 수동으로 설정하는 것과 중복 되지만 그 질문은 안드로이드 2.2에 대한 것이 었습니다. (대체 아이디어 중 하나는 로컬 라우터에 DNS를 구성하는 것이 제안되었지만 라우터가 로컬에서 DNS를 수행하지 않으므로 해당 옵션이 없다는 것을 알 수있는 한 내 DNS 서버를 설정하여이를 수행 할 수 있지만 그것은 큰 직업 해결책처럼 느껴집니다.)


오히려 Server Fault 또는 Super User에 대한 질문입니다 . 그리고 호스트 이름을 로컬 서버 (DHCP 서버에서 DNS 노드로 표시)로 설정해야합니다.
Izzy

1
@Izzy 감사합니다 Izzy, 그러나 서버에서 / etc / hosts를 구성하는 방법을 알고 있습니다. 내가하는 방법을 모르는 것은 Android 4.x 태블릿에서 동등한 것을 찾거나 편집하는 것입니다 (또는 루팅하지 않은 동등한 것이라도). (WiFi 라우터와 같은 DHCP 서버는 사용자 지정 이름을 추가 할 수있는 옵션을 제공하지 않는 것 같습니다. 사용자 지정 DNS 서버를 지정할 수있는 옵션이 있지만 실제로는 손을 넣기를 원하지 않는 진흙탕입니다. )
대런 쿡

당신은 저를 틀 렸습니다. 대런 : 편집을 제안하지는 않았지만 /etc/hosts"이름 서버"(예 : DNSMasq, 또는 당신이 사용하는 것)를 설정하도록 제안하지 않았습니다 . 라우터가 그 장소를 제공 할 수 있습니다. 그렇지 않으면 컴퓨터 /etc/hosts에서 편집해야합니다. 그리고 Android의 해당 파일은 "루트 파워"로만 편집 할 수 있습니다 (정확한 위치는 알 수 없지만 AFAIR 내부에 있습니다). 참고 : etc / hosts 파일을 편집하는 방법/data/system
Izzy

답변:


6

읽기 전용 파일 시스템에있는 호스트 파일은 Android에서 간단히 편집 할 수 없습니다 /system/etc/hosts.

대안은 다음과 같습니다.

  • 로컬 네트워크에서 DNSMasq와 같은 DNS 서버를 사용하여 "중앙"관리
  • 위에서 설명한대로 "root powers"를 사용하여 시스템 파일을 강제 편집하십시오.
  • 이를 사용하기 위해 Android 기기에 "로컬 DNS 서버"를 설치하십시오 (예 : DNS 서버)

이지, 전화기에 루트 액세스 권한이 없으므로 DNS 서버를 사용하여이 문제를 처리하려고했습니다. 호스트 이름을 해당 IP로 리디렉션하는 간단한 규칙을 추가했지만 작동하지 않습니다. 내가 뭘 잘못하고 있습니까?
George Katsanos

DNS 서버 는 네트워크의 다른 장치에 서비스를 제공해야합니다 (설명에 나와있는 것처럼 포트 전달을 추가로 사용해야합니다). 이를 위해서는 항상 해당 장치 (Android 장치 포함)가 사용하도록 구성되어 있어야합니다. Android 기기에서 이러한 DNS 서버를 사용하지 않았으므로 여기서 정확히 수행해야 할 작업을 확인하지 않았습니다. 그러나 대부분 네트워크 설정에서 DNS 항목을 조정해야합니다 (WiFi 네트워크 항목을 길게 누르고 "고급"을 선택한 다음 첫 번째 DNS 항목을 조정하십시오. 두 번째는 "백업"으로 그대로 두십시오).
Izzy

@GeorgeKatsanos 당신이에 관심이있을 수 있습니다 stackoverflow.com/a/14211550/1768141
Vinayak

2

lzzy에서 언급했듯이 DNSMasq 서버를 사용 하여이를 달성 할 수 있습니다 . 그러나 Chrome은 자체 DNS 확인 프로세스를 사용하므로이 방법이 작동하지 않을 수 있습니다.

서버를 시작하려면 다음 명령을 사용하십시오.

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 포트 53에서 바인딩하는 데 필요
  • -d 포 그라운드에서 서버 시작
  • --no-hosts 로컬 호스트 파일을 사용하지 마십시오
  • --conf-file=/dev/null 구성 파일을 사용하지 마십시오
  • --server=8.8.8.8 --server=8.8.4.4 업스트림 서버 주소 (이 예에서는 Google DNS)
  • --address=/example.com/192.168.0.101무시할 호스트. 이 줄에 호스트를 추가해야합니다. 여러 호스트를 추가 할 수도 있습니다.

그런 다음 장치에서 DNS 서버를 변경하십시오. 이것은 DNS Changer 앱을 사용하여 쉽게 수행 할 수 있습니다 .

이 단계 후에이 호스트에 대한 요청이 사용자의 주소로 전송되어야합니다.


0

호스트에서 IP 로의 매핑 을 정의하는 가장 간단한 방법 은 hosts파일입니다. 대부분 DNS 확인자가 해당 파일을 사용합니다 . 그러나 다른 답변에서 언급했듯이 /etc/hostsAndroid 기기를 루팅하지 않으면 편집 할 수 없습니다. 가상 호스팅으로 인해 IP 주소로 웹 서버에 액세스해도 작동하지 않습니다. 루팅되지 않은 기기에서 사용할 수있는 몇 가지 옵션은 다음과 같습니다.

  • hosts구성된 업스트림 DNS 서버에 쿼리하기 전에 DNS 트래픽을 가로 채고 사용자 지정 파일을 찾는 VPN 앱을 사용하십시오 .
  • DNS 서버를 실행하십시오. 특정 이름에 대해 사전 정의 된 IP 주소를 반환하도록 구성 할 수 있습니다. 예를 들어 사용하는 경우 dnsmasq, 추가 address=/mysite.local/10.1.2.3"dnsmasq.conf" . 또는에 dnscrypt-proxy추가 mysite.local 10.1.2.3"클로킹 - 규칙 .txt" .
  • 프록시 또는 VPN을 사용하도록 전화기를 구성한 다음 프록시 서버의 파일에 항목 10.1.2.3 mysite.local을 추가하거나 VPN hosts서버에서 로컬 DNS 서버를 실행하십시오.
  • 부트 로더를 잠금 해제 할 수 hosts있으면 사용자 지정 복구에서 파일을 편집 하십시오.

자세한 내용은 루팅하지 않고 항상 도메인 이름을 고정 IP로 확인하는 방법을 참조하십시오.


관련 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.