利用可能なさまざまなスマート DNS プロキシに類似した最低限のソリューションを入手しようとしています。
これで、 、SSH トンネリング、動的転送の作成を使用して、1 つの部分を完了できるようになりました。
host myserver
User root
HostName MyIP
IdentityFile <MyKey>
DynamicForward 4444
これで、ブラウザがあり、sock プロキシを設定できる場合にこれが機能するようになりました。
しかし、
- 私が望んでいるのは、DNS サーバーを実行することです (dnsmasq に似ています)。
- ルーターの DNS サーバーを設定します。
- すべてのトラフィックを ssh 経由でトンネリングします。
答え1
答え2
はい、そしていいえ。Dnsmasq は SOCKS プロキシに名前解決を依頼することはできません。そのような SOCKS プロトコル コマンドは存在しないためです。プロキシにはドメイン名 + ポート番号を受け取るコマンドしかありません。そしてすぐに接続しますが、クライアントは実際に使用されたIPアドレスを知ることはありません。(さらに、DNSはもうちょっとIPアドレスの検索だけではなく、そのような機能があってもだった利用可能であったとしても、その上で DNS を適切にエミュレートすることはできません。
ただし、一部のDNSリゾルバ(Dnsmasq以外)は、本物SSH トンネルを介した DNS サーバー。DNS サーバーは TCP をサポートしている必要があるため、標準のssh -L
トンネルを使用してリモート サーバーを指すことができます。Dnsmasq は機能しません (常に最初に UDP を試行します) が、Unbound には常に TCP 経由でクエリを実行するように指示できます。DoT (DNS over TLS) または DoH を使用するリゾルバーも機能します。これらは現在 TCP ベースです。
ただし、SOCKS ではなく IP 層トンネル (VPN) をお勧めします。TCP だけでも長期間は耐えられますが、多くのプログラムでは UDP も必要であり、全体的には、すべてを IP トンネル経由でルーティングする方が SOCKS 経由でルーティングするよりもはるかに簡単です。
答え3
Saaruさんに感謝答え、私はプロキシにシャトルを取得することができましたのみ次のようなコマンドで DNS 要求を実行します。
sshuttle --dns -r username@host \
--ns-hosts=dns01.example.com,dns02.example.com \
0/0:53 ::/0:53