web-dev-qa-db-ja.com

SSHトンネルを介したシステム全体のDNSルックアップ

ITはラボをロックダウンしているため、Ubuntuマシンにapt-getアップデートを実行したりパッケージをインストールしたりすることはできません。インターネットアクセスが制限されているWindowsRDPデスクトップがあります。 WindowsボックスでSSHサーバーを実行していて、Ubuntuマシンから次の方法でSSHサーバーにトンネルできます。

ssh -CND localhost:1080 me@windowsbox

問題は、UbuntuマシンからDNSを解決できないことです。したがって、私がやりたいのは、SSHトンネルも通過するようにDNSを構成することです。はい、Firefoxやその他のブラウザの設定に関する他の多くの投稿を見てきましたが、ここでは当てはまりません。私はシステムレベルのDNS、または少なくともapt-getがトンネルを介して解決する機能を探しています。

ありがとう

2
omencat

あなたはクライアントを完全に制御できます、それは良いことです。 SSHサーバーをどの程度制御できるかについては言及していません。サーバー側を制御する場合は、示されているように、クライアントでUDPからTCPへのプロキシを開始できます ここ

socat -T15 udp4-recvfrom:53,reuseaddr,fork tcp:localhost:5353

次に、SSH経由でTCP接続をサーバーに転送し、そこでTCPからUDPへのデーモンを開始します。

socat tcp4-listen:5353,reuseaddr,fork UDP:nameserver:53

SSHuttle があります(例: ここ )。 DNSクエリを簡単に転送するためのパッチがあります。

YMMV、しかし 私は以下で成功しました

#!/bin/bash
# Taken from http://stackoverflow.com/questions/4594319/Shell-replace-cr-lf-by-comma
DNSSERVERS=$(nmcli d show | grep DNS | awk '{print $2}' | sed -e 'H;${x;s/\n/,/g;s/^,//;p;};d' )
sshuttle  \
    -vvv                \
     --dns-hosts ${DNSSERVERS}   \
    -r server   \
    254.254.254.254/32
1
Frederick Nord