저는 다양한 스마트 DNS 프록시와 유사한 베어본 솔루션을 얻으려고 노력하고 있습니다.
이제 SSH 터널링을 사용하고 동적 전달을 생성하여 한 부분을 완료할 수 있습니다.
host myserver
User root
HostName MyIP
IdentityFile <MyKey>
DynamicForward 4444
이제 이것은 브라우저가 있고 양말 프록시를 설정할 수 있을 때 작동합니다.
근데 뭐
- 내가 원하는 것은 DNS 서버를 실행하는 것입니다(dnsmasq와 유사).
- 내 라우터에서 DNS 서버를 구성합니다.
- SSH를 통해 모든 트래픽을 터널링합니다.
답변1
답변2
예, 아니오. Dnsmasq는 SOCKS 프로토콜 명령이 없기 때문에 SOCKS 프록시에 이름 확인을 요청할 수 없습니다. 프록시에는 도메인 이름 + 포트를 사용하는 명령만 있습니다.그리고즉시 연결하지만 클라이언트는 사용된 IP 주소를 실제로 알지 못합니다. (그리고 DNS는조금 더단순한 IP 주소 조회가 아닌, 그러한 기능이 있더라도~였다아직 DNS를 제대로 에뮬레이트할 수 없습니다.)
그러나 일부 DNS 확인자(Dnsmasq 아님)는진짜SSH 터널을 통한 DNS 서버. TCP를 지원하려면 DNS 서버가 필요하므로 표준 ssh -L
터널을 사용하여 일부 원격 서버를 가리킬 수 있습니다. Dnsmasq는 작동하지 않지만(항상 UDP를 먼저 시도함) Unbound는 항상 TCP를 통해 쿼리하도록 지시받을 수 있습니다. DoT(TLS를 통한 DNS) 또는 DoH를 사용하는 확인자도 현재 TCP 기반이므로 작동합니다.
하지만 SOCKS 대신 IP 계층 터널(VPN)을 추천하고 싶습니다. TCP만으로 오랫동안 살아남을 수 있지만 많은 프로그램에는 UDP도 필요하며 SOCKS를 통해 동일한 작업을 수행하는 것보다 IP 터널을 통해 모든 것을 라우팅하는 것이 전반적으로 훨씬 간단합니다.
답변3
사루님 덕분에답변, 프록시로 셔틀을 이동할 수 있었습니다.오직다음과 같은 명령을 사용하여 DNS 요청:
sshuttle --dns -r username@host \
--ns-hosts=dns01.example.com,dns02.example.com \
0/0:53 ::/0:53