dig myip.opendns.com @resolver1.opendns.comがsshuttleのプロキシを使用しないのはなぜですか?

dig myip.opendns.com @resolver1.opendns.comがsshuttleのプロキシを使用しないのはなぜですか?

私は優れた技術を使用しています。シェルスクリプトから外部IPアドレスを取得するにはどうすればよいですか?私のパブリックIPアドレスを探す:

dig +short myip.opendns.com @resolver1.opendns.com

また、SSHトンネルのプロキシとしてsshuttleを使用します。次のコマンドを使用して、すべてのポートとIPでトラフィック転送(DNS要求を含む)を開始します。

sshuttle --dns -vr usr@sshserver 0/0

エージェントの起動後に訪問します。https://canihazip.com/s私の外部IPが変更されていることを確認してください。はい。ただし、digコマンドを再実行すると、エージェントが起動する前に報告したのと同じ外部IPが報告されます。

詳細な出力では、sshuttleは他のdigコマンドを渡して確認するようです。https://dnsleaktest.com予想どおり、プロキシの反対側のIPのみが表示されます。私が知っている限り、sshuttleはうまくいくようです。

digコマンドがプロキシの前に私の外部IPを報告する理由を説明できる人はいますか?私の目標は、opendnsサーバーが要求が私のSSHサーバーで発生したと思うようにすることです。

これは想像を少し超えていますが、Wiresharkを少し見てみると、DNSトラフィックをフィルタリングするとき、Wiresharkは上記のDIGコマンド以外にはDNS要求を表示しません。コマンドがプロキシをバイパスしています。

外部IPを見つけるために他の(あまりエレガントな)方法を使用することをお勧めしますが、これにより次の質問が発生します。 sshuttleを迂回するために他の方法がありますか?

ベストアンサー1

Shuttleコマンドを実行するときにデバッグメッセージを表示するオプションを使用したので、-vシャトルがいくつかのiptablesルールを生成したことを確認できます。ルールの1つは次のとおりです。

iptables -t nat -A sshuttle-12300 -j REDIRECT --dest <nameserver>/32 -p udp --dport 53 --to-ports 12299

上記のルールは、Shuttleプロキシポートに送信された<nameserver>DNS要求をリダイレクトします。 Shuttleはファイル<nameserver>からそれを見つけ、それに基づいてiptablesルールを自動的に生成します。/etc/resolv.conf

したがって、digコマンドが/etc/resolv.confファイルで定義されているネームサーバーを使用してDNSクエリを実行すると、sshuttleにプロキシされますが、そうでない場合はプロキシされません。

resolver1.opendns.comあなたの場合、その住所は208.67.222.222あなたの住所で定義されていないため、/etc/resolv.confsshuttleによってプロキシされません。

おすすめ記事