루트 액세스 권한없이 / etc / hosts에 쓰는 것과 비슷한 재정의 DNS를 만들 수 있습니까?


48

브라우저에서 사용할 DNS 레코드를 설정하고 싶지만 루트 액세스 권한이 없으므로 수정할 수 없습니다 /etc/hosts. dns가 아직 설정되지 않은 아파치로 호스트를 테스트하려면이 작업을 수행해야합니다. 파이어 폭스와 크롬에 액세스 할 수 있으므로 플러그인을 사용하면 쉽게 할 수 있습니다. 또는 다른 옵션이 도움이됩니다.

업데이트 : dns를 재정의하는 대안은 아마도 HTTP 헤더를 수정하는 것입니다. 올바른 헤더가 아파치에 전송되면 올바른 내용이 반환되어야합니다.


1
마지막 줄은 명확하지 않습니다. 또한 SF에 더 적합하지 않습니까?
tshepang

@ tshepang ... 아니 리눅스 데스크톱 에서이 작업을 수행해야하기 때문에 아니오?
xenoterracide

1
아직 명확하지 않습니다. "또는 다른 옵션이 도움이된다"는 것은 정확히 무엇을 의미합니까? 나를 추측하지 마십시오.
tshepang

3
@tshepang 나는 내가 무엇을 찾고 있는지 모르겠다. 내가 고려하지 않은 옵션이있을 수 있습니다. 아파치 가상 호스트, http 및 dns가 함께 작동하는 방법을 설명하도록 요청하는 것 같습니다.
xenoterracide

나는 당신이 이것을 찾고 있다고 생각합니다 : unix.stackexchange.com/a/104511/135943
Wildcard

답변:


65

테스트 목적으로 수정 된 DNS 확인으로 프로그램을 실행하는 방법을 찾고있었습니다. 나를 위해 솔루션은 HOSTALIASES환경 변수를 사용했습니다 .

$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo

참조하십시오 hostname(7).

(측면 참고 :이 예제에서 HOSTALIASES환경 변수는 wget프로세스 에만 영향을 미칩니다 . 물론 export HOSTALIASES현재 쉘의 모든 하위 프로세스에 적용되도록 할 수 있습니다 .)


1
실제로 이것은 + 10k와 같아야합니다. 불행히도 나는 오직 당신에게 +1을 줄 수 있습니다
xenoterracide

동의한다! + 10k !!
Anders Hansson

3
고마워요! 이 예제는 export대부분의 경우 앞에 추가해야합니다 export HOSTALIASES=~/.hosts.
ezequiel-garzon

8
IP가 아닌 호스트 별명에 대한 호스트 만 지원하는 것으로 보이며 호스트는 "."를 포함 할 수 없습니다.
netawater

Windows에 동일한 솔루션이 있습니까?
Akceptor

10

libc 함수 주위에 랩퍼를 작성하여 호스트 이름을 분석하고 / etc / hosts와 다른 파일에서 찾을 수 있습니다. 그런 다음 호스트 파일을 사용하려는 응용 프로그램을 실행하십시오.

LD_PRELOAD=wrapper.so firefox

4
가장 유용하게는 래퍼가의 열기를 /etc/nsswitch.conf로 리디렉션하고 DNS 데이터베이스를 쿼리 ~/.nsswitch.conf하도록 만드 ~/.nsswitch.conf십시오.
Gilles 'SO- 악마 그만해'

6

가장 좋은 방법은 SOCKS5 프록시를 설정하고 firefox에게 SOCKS5 프록시 (network.proxy.socks_remote_dns)를 통해 DNS 요청을 보내도록 지시하는 것입니다. openssh를 사용하여 socks5 프록시를 상당히 쉽게 설정 (-D 옵션)하고 사용자 지정 / etc / hosts 또는 더 복잡한 DNS 설정을 위해 DNSMasq 와 같은 원격 호스트를 실행할 수 있습니다. 그러나 실제로 이것은 DNS 설정 구성을 시스템 전체로 변경할 수있는 시스템으로 푸시합니다.


우리가 ssh-out하는 것을 막기 위해 세워진 위대한 방화벽을 고려해 보면 말보다 쉬울 것입니다.
xenoterracide

5

수퍼 유저에서 다음 질문을 확인하십시오.

https://superuser.com/questions/184643/override-dns-in-firefox

논의 된 옵션 및 SO 링크가 실행 가능한 솔루션이 아닌 경우 다음을 확인하십시오.

https://superuser.com/questions/100239/hostname-override-in-firefox

특히 확인 :

https://addons.mozilla.org/en-US/firefox/addon/redirector/

이 애드온이 도움이 될 것 같지만 실제 구현에 달려 있습니다.


불행히도 그 질문의 op와 매우 흡사합니다.
xenoterracide

@xenoterracide-답변을 업데이트했습니다. 아마도 리디렉터 애드온이 옵션입니까?
maxschlepzig

나는이 나가셨 것 길에서 그렇게 생각하지 않아요 .. 내가 정말해야 할 것은 호스트를 사용하여 주위를 해킹 할 수있는 다른 옵션으로 전송되는 HTTP 헤더 ... 수정입니다
xenoterracide

SO 솔루션 (TamperData)을 둘러 보았지만 호스트를 수정하는 방법을 보지 못했습니다. 라이브 http 헤더가 실제로 헤더를 수정할 수 있는지 궁금합니다. 뷰어라고 말합니다.
xenoterracide

나는 SO 헤더에 약간 수정 된 헤더 수정 확장 기능이 작동한다고 생각합니다 ... 호스트 호스트 이름을 사용한다면 ... 아직 테스트하지는 않았지만 그것을 사용하는 사이트 외부에서는 테스트되지 않았습니다.
xenoterracide

2

가상 호스트를 테스트하기 위해 Apache 서버를 Firefox에서 프록시로 설정할 수 있습니다. 입력 한 이름이 Apache로 전달됩니다. 이렇게하면 다른 사이트 탐색이 중단되므로 완료되면 프록시를 다시 설정하십시오.


0

몇 주마다 IP를 계속 변경하는 서버에 대해 ssh, scp 등과 비슷한 것이 필요했습니다 (그리고 IT는 호스트를 설정하는 데 몇 주가 지연됩니다). 나는이 서버에 특별한 변수를 사용하여 그것을 해결했다. export FOO='131.227.aaa.bbb그런 다음 내가 할 수 ssh bar@$FOO있고 변경 될 때마다 IP를 ~/.bashrc변경한다 ...


-2

불행히도, 자신의 인터넷 브라우저를 작성하는 것을 제외하고는 할 수 없습니다.

테스트를해야하는 경우 가상 머신이든 실제 머신이든 테스트 머신이 필요하므로 Unix 관리자 (또는 호스팅 제공 업체)에게 개발 환경을 구축 할 수있는 방법을 문의해야합니다.

PC에 VM을 설치하고 Linux 배포판, Apache를 설치하고 변경 사항을 테스트 할 수도 있습니다 (소리가 나지 않습니다)

최신 정보

더 잘 설명하기 위해 각 응용 프로그램은 표준 라이브러리를 사용하여 작성되므로 아무도 저수준 라이브러리와 gethostbyname ()과 같은 기능을 다시 작성할 필요가 없습니다.

이러한 기능은 일반적으로 파일 (/ etc / hosts) 및 DNS를 사용하도록 설정되어 있으므로 브라우저가 / etc / hosts에 설정된 이름보다 이름을 확인해야하는 경우 운이 좋지 않습니다. .

  1. 자신의 DNS 서버를 설정하고 /etc/resolve.conf를 변경할 수있는 루트 권한을 가진 사람에게 물어볼 수 있습니다
  2. DeleGate 와 같은 프록시 서버를 설치하고 VirtualHost에 대한 규칙을 설정할 수 있습니다
  3. 해당 고객 호스트에 대한 sudo 권한 요청
  4. https://addons.mozilla.org/en-US/firefox/addon/switchhosts/ 와 같이 연결을 테스트하는 데 사용하는 응용 프로그램의 동작을 변경하십시오 (브라우저가 생각합니다).

4
-1이 잘못되고 후원하는 말. 나는 호스팅 제공 업체이며 테스트해야 할 서버의 고객 사이트입니다. 우리는 관리자 액세스 권한이없는 네트워크 부팅 리눅스를 가지고 있으며 VM을 부팅 할 수 있다고 생각하지 않습니다.
xenoterracide

@xenoterracide 할 말이 너무 없습니다. SOCKET이 생성되는 방식을 변경하는 것을 제외하고는 원하는 것을 실제로 실현할 수 없습니다.
tmow

1
@xenoterracide BTW, 기분을 상하게 할 의도는 없었습니다.
tmow

호스팅 제공 업체뿐만 아니라 ... 실제로 "sudo rights"가 있으며 모든 상자에 실제 루트가 있으며 모든 데스크탑에 액세스 할 수 있습니다 (아이 롤). 그러나 아직 네임 서버를 변경하고 싶지 않은 경우 .. 나는 그것을 도울 수 없다 ...
xenoterracide

1
LD_PRELOAD를 사용하면 특정 '낮은 수준'기능을 '재정의'하고 원하는 것을 수행 할 수 있습니다 (예 : 온 자신의 '/ etc / hosts 파일'에 대한 프로그램 이야기 open()와 다른 낮은 수준의 호출하는 코드의 한 동적 로딩 invovled됩니다 .. (.so를)
아키라
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.