Android KitKat에서 모바일 연결의 DNS를 변경하는 방법은 무엇입니까?


24

로컬 모바일 ISP의 검열을 피하고 싶습니다 (예 : 알 수없는 이유로 이미지를 차단합니다).

스크린 샷
스크린 샷 (더 큰 변형을 보려면 이미지를 클릭하십시오)

DNS를 Google DNS 또는 OpenDNS로 변경하여이 문제를 피할 수 있다고 확신하지만 KitKat에서이 작업을 수행하는 방법을 잘 모르겠습니다.

Info:
Device: Nexus 5
Android version: 4.4.2
Device status: rooted

답변:


18

좋아, 전체 공개 우선 : 나는 현재 Google Play 스토어에 있으며 Android 4.4의 모든 모바일 연결에 대해 DNS를 변경할 수있는 앱의 저자입니다. 이 앱 에는 루트가 필요 하고 비용이 몇 달러이며 DNS 무시 라고 합니다 . 이제 삭제 된 답변에서 명확하게 노출되는 한 내 앱에 연결하는 것이 공정하다고 들었습니다.

이 릴리스의 Android (4.4)에서 발견 한 문제는 캐싱을 위해 모든 DNS 쿼리를 시스템 데몬으로 리디렉션하도록 시스템 동작이 변경되었다는 것입니다 netd(여기서는 4.4 이전의 Android 네트워킹 관련 프리젠 테이션 링크 그러나 이러한 주제 중 일부를 다룹니다.

getprop/의 setprop방법은 더 이상 작동하지 않습니다. 이러한 값은 변경 될 때 netd데몬에 의해 무시됩니다 .

/dev/socket/netd소켓을 통해 데몬과 직접 통신해야 합니다. Android에서는 이제 ndc정확히이 작업을 수행 하는 도구를 제공합니다 .

DNS 관련 내용의 구문은 다음과 같습니다.

# ndc resolver flushif <iface>
# ndc resolver flushdefaultif
# ndc resolver setifdns <iface> <domains> <dns1> <dns2>
# ndc resolver setdefaultif <iface>

응용 프로그램은 자동으로 네트워크 장치 이름을 추측 이러한 모바일 네트워크가 활성화됩니다 때마다 명령이 적용됩니다.


setifdns의 올바른 구문은 다음과 같습니다 ndc resolver setifdns <iface> <domains> <dns1> <dns2> .... 예 :ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4
Christian d' Heureuse

@ Christiand'Heureuse 당신이 맞아요, 나는 대답을 업데이트했습니다, 감사합니다.
MaxChinni

13

iptables 규칙을 사용하여 모든 포트 53 연결을 원하는 DNS 서버로 전달함으로써이 문제를 "해결했습니다". 3G에 연결된 상태에서 DNS 설정을 수정하려는 Android 4.4.2에서의 나의 경험은 Leo가 설명한 것과 정확히 같습니다. getprop | grep dns [0-9] \] : 및 dhcpd.conf의 값을 무시합니다.

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 8.8.8.8:53

그 이유는 다음과 같습니다. http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 모든 앱은 / dev / socket / dnsproxyd unix 소켓을 통해 netd를 통해 DNS 조회를 수행합니다. 이 스레드는 시스템 속성이 무시되는 이유도 설명합니다.

이 작업을 취소하려면

iptables -t nat -L OUTPUT -n -v --line-numbers

, udp dpt : 53 ~ : xxx.xxx.xxx.xxx : 53에 해당하는 줄 번호를 찾아서

iptables -t nat -D OUTPUT *linenumber*

2
감사! 또한 이유에 대한 요약 : Google은 광고 차단기와 무기 경쟁을하고 있습니다. 그들은 현재 광고 차단기를 사용하고 광고 차단기를 다른 곳으로 옮겼다는 의미를 비활성화하려고 시도했지만 모든 사용자는 (광고 차단기를 사용하든 사용하지 않든) 해당 Google 움직임으로 인해 항상 화가납니다. ... 지금까지 모든 사람들이 광고 차단기와의 싸움이 멍청한 행동이라고 생각했습니다. 바보 구글. (또한 오픈 소스 앱 AFWALL은이 커스텀 규칙을 쉽게 추가 할 수있는 편리한 방법입니다)
gcb

이와 같은 커스텀 iptables 규칙을 적용하는 방법에 대한 AfWall + 위키
betatester07

1

안타깝게도 지금 당장은 불가능할 수도 있지만 DNS Changer 를 사용해 볼 수도 있습니다 . 당신이 뿌리를 내렸을 때 효과가있을 수 있지만 보장은 없습니다.

사용하기에 좋은 DNS 서비스는 Google의 퍼블릭 DNS 서비스입니다. 이 유형의 문제에 대해서는 여기에서 매우 잘 작동하는 경향이 있습니다.

이 방법으로도 효과가 없으면 계속 답을 찾으십시오. 이와 같은 사이트는 XDA 개발자 입니다. 그들은 안드로이드에 대한 많은 답변을하는 경향이 있습니다.


1

KitKat Cyanogenmod 11을 사용하고 있습니다. 기본적으로 루팅되었습니다. 그럼에도 불구하고 나는 실패를보고 할 수 있습니다.

첫 번째 방법 :

내가 adb shell함께 시도하면

setprop net.rmnet0.dns1 208.67.222.222
setprop net.rmnet0.dns2 208.67.222.222
setprop net.rmnet1.dns1 208.67.222.222
setprop net.rmnet1.dns2 208.67.222.222
setprop net.rmnet2.dns1 208.67.222.222
setprop net.rmnet2.dns2 208.67.222.222
setprop net.dns1 208.67.222.222
setprop net.dns1 208.67.222.222

그런 다음 어떤 IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk resolve 's ...를 테스트하십시오 .NXDOMAIN 응답을 얻었습니다. 이것은 내가 설정 한 OpenDNS 네임 서버에서 온 것이 아님을 의미합니다 (대체 IP로 응답을 반환하고 추가를 제공하기 위해).

할 때

getprop | grep dns

내가 구성한 것만 볼 수 있습니다. 그러나 WiFi에서 모바일 (3G 또는 4G / LTE)로 전환 할 때 이동 통신사에 할당 된 것으로 인식하는 IP가 보입니다. "DNSwitch"또는 "DNS 체인저"와 같은 앱은 네트워크 변경시 해당 리졸버를 자동으로 재설정 할 수 있습니다. 그러나 getprop나를보고하는 것은 여전히 ​​진정으로 해결하는 것이 아닙니다.

두 번째 방법 [a] :

내가 시도한 또 다른 방법은 /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf고정 된 설정을 수정하는 것입니다 (그러나 네트워크 이름과 확인 자의 수는 다를 수 있음을 알고 있어야 함). 성공없이.

두 번째 방법 [b] :

그리고 /system/etc/dhcpcd/dhcpcd.confDHCP 협상에서 리졸버를 허용하는 매개 변수를 제거했습니다. 성공도 없습니다.

세번째 방법 :

지금까지 조금만 작동하는 유일한 것은 "가난한 사람 VPN"을 사용하고, "SSH 터널"앱을 사용하고, SOCKS4를 사용하는 것이지만, 그 결과를 사용하면 좋은 결과를 얻지 못했습니다.

이력서:

다른 곳에서 설정 한 DNS처럼 보이거나 네트워크가 이동하자마자 모두 전달 (도용)됩니다.

어떻게 오세요? 네트워크 중립을 철거하는 도구를 통신 사업자에게 제공하는 또 다른 더러운 방법입니까?

귀하의 경우 귀하의 질문은 그 때문이었습니다. SSHTunnel이 이동 통신사 검열을 둘러 볼 수있는 대체 솔루션인지 SSH를 사용해 보시겠습니까?


블록을 우회하는 방법을 찾았지만 번거롭고 상황에 따라 다릅니다. 루팅되어있어 호스트 파일에 액세스 할 수 있습니다. 다음으로 imgur의 직접 IP 주소를 찾은 다음 해당 값을 hosts 파일에 수동으로 입력했습니다. 지금은 문제가 해결되었습니다.
user51893

1

나는 오늘 같은 문제에 직면했으며 수혈 덕분에. 나는 그것을 해결하기 위해 응용 프로그램 " DNS 전달자 "를 개발하려고 했습니다. 시스템에서 DNS 서버를 변경하지는 않지만 DNS 쿼리를 다른 서버로 전달합니다. 이 해결 방법은 Kitkat (Nexus 5 / 4.4.3 및 Moto Razr / CM11)에서 제대로 작동합니다. 그것이 다른 도움을 줄 수 있기를 바랍니다.


이것은 실제로하지 당신이 투표를 아래로있어 왜 작동
전쟁 노래

0

현재 모바일 데이터에서 DNS를 변경할 방법이 없다고 생각합니다. 그러나 휴대 전화가 루팅 된 경우 DNS 설정 과 같은 앱을 사용할 수 있습니다 .


안타깝게도,이 앱은 Android 4.3 이상을 지원하지 않는 것 같습니다. 나는 4.3 장치 시장
그것을 풀었다

귀하의 질문에 따르면 Android 4.4. * 인 Android KitKat에 필요한 반면 Android 4.3은 Jellybean입니다.
Karan Raj Baruah

이미 기기의 Play 스토어에서 앱 페이지를 열었으며 맨 위에 "기기가이 버전과 호환되지 않습니다."라고 표시되어 있습니다. 따라서 4.3 버전에서 KitKat까지 문제가 지속될 것이라고 확신합니다.
user51893

FAQ에 따르면 앱 추천은 실제로이 사이트의 일부가 아닙니다. 안드로이드가 기본적으로 할 수 있는지에 대한 질문에 대답했습니다. Play 스토어를 직접 검색하는 것이 좋습니다.
Karan Raj Baruah

힌트 : AppBrain의 앱 페이지를 방문 하면 여러 가지 대안이 나열됩니다 (오른쪽 상단 4). 그러나 해당 부문의 대부분의 솔루션에는 루트 액세스 권한이 필요합니다.
Izzy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.