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


2

私はapt-get updatesをしたり、Ubuntuマシンにパッケージをインストールしたりすることはできません。インターネットアクセスが制限されているWindows RDPデスクトップがあります。私はSSHサーバをWindowsボックス上で走らせていて、UbuntuマシンからそれにSSHトンネリングすることができます。

ssh -CND localhost:1080 me@windowsbox

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

ありがとう


Ubuntuボックスをどの程度管理できますか?
Paul

こんにちはポール、Ubuntuボックスのルート。私はドメイン管理者でもありますが、シスコのファイアウォールルールを管理することはできません。
omencat

TCPとUDP 53のパケットをトンネルにリダイレクトする必要があります。非常に多くのアプリケーションがタスクのためにシステムAPIに頼るのではなく独立したクエリを実行するので、DNSはプロキシに到達するために得るべき最も困難なものの1つです(これはTORの基礎をいくらか煩わせます)。あなたはおそらくIPTableを介してそれを転送することができます。
Frank Thomas

両端にLinuxがある場合は、netcatとfifoを使用してそれを実行できますが、Windowsを使用するように調整する必要があります。 qcnetwork.com/vince/doc/divers/udp_over_ssh_tunnel.html
Paul

ああ、どちらも面白い解決策です。私はiptablesメソッドを試してみたいかもしれません。セキュリティチームは使用するDNS IPを提供しましたが、彼らは現在、独自のSSL証明書を注入しています。これは私にとってはうまくいくでしょうが、将来のグーグル検索者にとっては上記の二つの解決策はトリックをするかもしれないように見えます。
omencat

回答:


1

あなたはクライアントを完全にコントロールすることができます、それは良いことです。 SSHサーバーをどの程度管理しているかについては触れていません。サーバー側を制御している場合は、指示されているようにクライアントでUDP-to-TCPプロキシを起動できます ここに

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

それからSSH経由でTCP接続をあなたのサーバーに転送し、そこでTCP-to-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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.