SSH のローカル転送経由で TCP 上の DNS を問い合わせる
ローカルの非特権 TCP ポートをリモート DNS サーバーへ転送し、dig で DNS over TCP を明示的に要求します。
OpenSSH のローカル転送は TCP を運びます。問い合わせツールとリモート DNS サービスがそのトランスポートを使うなら、DNS も TCP を利用できます。
SSH ホストから到達できる DNS サーバーに対して、loopback のみで待ち受ける転送を開きます。
ssh -N -L 127.0.0.1:1053:dns.internal:53 [email protected]
次に、ローカルマシンから明示的な TCP DNS クエリを送ります。
dig +tcp @127.0.0.1 -p 1053 app.internal A
DNS サーバー、SSH ホスト、問い合わせる名前は目的の値に置き換えてください。SSH サーバー側が dns.internal:53 に到達できる必要があり、転送ポリシーもそれを許可していなければなりません。
ローカルポートは特権ポートの範囲より上にあります。ローカルポート 1053 への問い合わせは、システムの DNS ポート 53 を束縛する必要はありません。
これは通常の UDP DNS クエリを自動的にリダイレクトするものではありません。UDP から TCP への生のバイトパイプでは不十分です。DNS over TCP は長さフィールドとストリームのフレーミングを追加するからです。システムリゾルバとの統合には、適切な DNS フォワーダーか、明示的にサポートされた TCP 設定が必要です。
最後に、この経路でアドレスを取得しても、その後の Web 接続が SSH を通るわけではありません。DNS の解決と宛先への転送は別々の選択のままです。