일부 터미널 명령에 대해 다른 DNS 서버(tor가 아닌 내가 설정한 DNS 서버)를 사용하고 싶습니다. 같다고 말해
$ DNS_SERVER=8.8.8.8 dnsify ping example.com
그리고 Google DNS를 사용합니다. 나는 sockify, torrify 및 기타 유사한 도구가 있다는 것을 알고 있습니다. 내 명령에 대해 이를 명시적으로 설정하거나 적어도 터미널 세션으로 제한할 수 있는 도구, 해킹 또는 기타 방법을 찾고 있습니다. 그래서 저는 명령 세션이나 터미널 세션에서 다른 DNS를 사용하고 다른 모든 소프트웨어에는 기본 DNS를 사용합니다.
프록시 연결을 시도했지만 시스템이 아닌 프록시를 사용하도록 강제할 수는 없었습니다.
그렇다면 DNS 프록시에 사용할 수 있는 것이 있나요?
답변1
환경 변수를 사용하여 시스템 파서를 재정의하는 방법을 모르겠습니다. 환경 변수를 resolv.conf
사용하여 옵션을 재정의 할 수 있지만 정의를 RES*
재정의하는 데는 사용할 수 없습니다 nameserver
(참조:resolv.conf
매뉴얼 페이지더 많은 정보를 알고 싶다면).
가장 좋은 옵션은 동적 링커의 메커니즘을 사용하여 LD_PRELOAD
시스템 서버 대신 자체 DNS 서버를 사용하도록 다양한 확인자 호출을 재정의할 수 있는 라이브러리를 미리 로드하는 것입니다.
내가 찾은 것 중 하나는conf 재정의 해결. 추가 정보 파일에서:
resolvconf override는 glibc 기반 시스템(예: 대부분의 Linux 배포판)에서 /etc/resolv.conf에 나열된 이름 서버를 재정의하기 위해 LD_PRELOAD로 사용되는 공유 라이브러리를 제공합니다.
...
/etc/resolv.conf에 언급된 DNS 대신 Google DNS를 사용하려면 다음을 실행할 수 있습니다.
LD_PRELOAD=/usr/lib64/libresolvconf-override.so NAMESERVER1=8.8.8.8 NAMESERVER2=8.8.4.4 myapplication
소스에서 컴파일해야 하지만 필요한 작업을 정확하게 수행하는 것으로 보입니다.
노트:운영 체제를 지정하지 않았지만 Linux라고 가정합니다.
답변2
래퍼 구문 분석나는 삼바 프로젝트의 작업이 잘 이루어졌다고 생각한다. 사용자 정의 resolv.conf
및 사용자 정의 DNS 레코드를 허용합니다 RESOLV_WRAPPER_HOSTS
.