Clash: [質問] dnsにおけるフォールバックの役割

作成日 2020年04月17日  ·  6コメント  ·  ソース: Dreamacro/clash

たとえば、構成でこのように構成します

dns:
  enable: true
  listen: :53
  enhanced-mode: redir-host
  nameserver:
    - 223.5.5.5
  fallback:
    - 8.8.8.8

私の質問は、フォールバックは何をするのですか?

私はこの記事を読みました: Clashに対するDNS汚染の影響(Windowsの場合)

記事によると、ネームサーバーとフォールバックのDNSから同時リクエストが行われ、ネームサーバーでの最初の応答結果がベンチマークとして選択されます。GEOIPを使用してこのIPの領域を決定します。国(CN)または予約済みアドレスに属している場合は、クライアントに直接応答します。この場合、フォールバックの結果はクライアントに応答されます

ただし、この記事では、汚染されたIPがプロキシを必要とすると判断された場合でも、現時点ではClashは正常に機能していると述べています。これは、Clashが実際にこのIPアドレスをプロキシサーバーに送信するのではなく、ホストをプロキシサーバーに直接送信するためです。 DNS解決はプロキシサーバーで実行されるため、要求はより適切なIPアドレスを取得し、CDNリソースをより有効に活用できます。

ネームサーバーが汚染されたIPを直接判別できるため、汚染されたIPがホストをプロキシサーバーに直接送信し、プロキシサーバーが正しくCDNに適したIPを解決するので、フォールバックの必要がないのではないかと非常に困惑しています。

私は何か間違ったことを考えているに違いないことを知っています、私はアドバイスを求めるためにここにいます、私を笑わないでください...

question

最も参考になるコメント

汚染されたIPは判断できませんが、最初のDNSから返されたGeoIPがCNでない場合、フォールバックDNSの値が使用されます。汚染されたGeoIPはすべて海外にあるため、衝突によってこのレベルからの汚染を防ぐことができます。もちろん、前提は次のとおりです。フォールバックグループの上流にDNSを設定します(非標準ポートを介した汚染のないDNS [壁に露出した基本的な消滅]、DNS over TLS / HTTPSなど)。
参照できます: https

cfw wikiの場合、汚染されている場合でも、現在の接続一致ルールによってプロキシが生成された場合、clashによって、IPによって開始された接続が元のホスト名に変更され、リモートノードに送信されるため、クライアントも送信されます。 / Browserは汚染されたIPを取得しますが、最終的な接続には影響しません。これは、汚染されたIPが破棄され、clashを介してリモートプロキシに送信されたときに元のホスト名で再適用されたためです。ホストモードの名前の由来。
別のリファレンス:プロキシ環境でのDNS解決動作について話す| Sukkaのブログ

全てのコメント6件

組み込みのdnsは、透過プロキシのdns解決の問題を解決するためのものであり、通常の使用のために開く必要はありません。

汚染されたIPは判断できませんが、最初のDNSから返されたGeoIPがCNでない場合、フォールバックDNSの値が使用されます。汚染されたGeoIPはすべて海外にあるため、衝突によってこのレベルからの汚染を防ぐことができます。もちろん、前提は次のとおりです。フォールバックグループの上流にDNSを設定します(非標準ポートを介した汚染のないDNS [壁に露出した基本的な消滅]、DNS over TLS / HTTPSなど)。
参照できます: https

cfw wikiの場合、汚染されている場合でも、現在の接続一致ルールによってプロキシが生成された場合、clashによって、IPによって開始された接続が元のホスト名に変更され、リモートノードに送信されるため、クライアントも送信されます。 / Browserは汚染されたIPを取得しますが、最終的な接続には影響しません。これは、汚染されたIPが破棄され、clashを介してリモートプロキシに送信されたときに元のホスト名で再適用されたためです。ホストモードの名前の由来。
別のリファレンス:プロキシ環境でのDNS解決動作について話す| Sukkaのブログ

  • nameserver内のサーバーが汚染されていない場合(ローカルに構築された汚染のないDNSサーバーなど) fallbackを設定する必要はありません
  • ルールがProxyに一致する場合、ルールは解決されたIPを使用せず、ドメイン名をプロキシサーバーに直接送信します。これにより、CDNの問題が解決されます。
  • また、ルールがDIRECTに一致する場合、解決されたIPへの接続を直接開始します。

  • Socks5 / Http(s)プロキシを使用する場合、システムは接続するターゲットIPアドレスを知る必要はなく、ドメイン名要求をプロキシサーバーにスローするだけです。
  • 透過プロキシを使用する場合、これは標準のTCP / IP実装であるため、Clashが取得するパッケージにはドメイン名情報が含まれていません。したがって、Clashは組み込みのDNS関数を使用してIP <->ドメイン名マッピングを実行し、Clashがシステムを送信できるようにする必要があります。 TCP / UDPパケットのDST-IPがドメイン名に復元され、ルールが一致します


私の理解は正しいはずですよね?@Dreamacro
ps:Clashのドキュメントは実際にはあまり詳細ではありません、どこでも情報をチェックしてください...

  • nameserver内のサーバーが汚染されていない場合(ローカルに構築された汚染のないDNSサーバーなど) fallbackを設定する必要はありません
  • ルールがProxyに一致する場合、ルールは解決されたIPを使用せず、ドメイン名をプロキシサーバーに直接送信します。これにより、CDNの問題が解決されます。
  • また、ルールがDIRECTに一致する場合、解決されたIPへの接続を直接開始します。

  • Socks5 / Http(s)プロキシを使用する場合、システムは接続するターゲットIPアドレスを知る必要はなく、ドメイン名要求をプロキシサーバーにスローするだけです。
  • 透過プロキシを使用する場合、これは標準のTCP / IP実装であるため、Clashが取得するパッケージにはドメイン名情報が含まれていません。したがって、Clashは組み込みのDNS関数を使用してIP <->ドメイン名マッピングを実行し、Clashがシステムを送信できるようにする必要があります。 TCP / UDPパケットのDST-IPがドメイン名に復元され、ルールが一致します


私の理解は正しいはずですよね?@Dreamacro
ps:Clashのドキュメントは実際にはあまり詳細ではありません、どこでも情報をチェックしてください...

すみません、透過プロキシとして使用されておらず、クライアントとしてのみ使用されている場合、redir-hostの使用は偽のipモード(プロキシを介して実行されるドメイン名を想定)よりももう一度解決されますか、それとも全員が同じですか?

@ akw5454521
fake-ipモードは実際にはdns解決を含みません。clashはdns要求を受信した後、予約済みIPをユーザーに直接送信し、dns要求のドメイン名を介してsocks5を介してリモートサーバーへの接続を直接確立し、次に予約済みipを介して戻ります。ユーザーが実際の接続を確立します
redir-hostモードを解析する必要があり、解析結果は、直接接続ルールに一致する(直接接続を確立する)場合にのみ意味があります。プロキシする必要のあるドメイン名の解析結果が偽物であるかどうかは関係ありません。この手順は上記のfake-ipと同じであるためです。達成される目的は同じですが、ユーザーと衝突がドメイン名とIPの間の対応を確立するためだけです。リモートサーバーへの要求は、解決されたIPではなくドメイン名です。

速度の問題については、可能な限り偽のip

redir-hostモードで、GeoIPがCNではないと判断した場合はフォールバックし、同時にプロキシ条件を満たす場合、ホストは分析のためにリモートに直接送信されます。つまり、クライアントがIPを受信したかどうかを確認します。それが本当かどうかは関係ありません(エージェントをリモートエンドから解決する必要があると判断された場合)、フォールバックグループの意味を尋ねたいのですが、ネームサーバーの汚染を直接使用する方が良いです、とにかく、リモートエンドから解決する必要があります。
(追記:私は個人的に、ドメイン名が汚染されていて、それがプロキシではないと判断された場合にのみ、フォールバックが実際に機能すると思います)

さらに、フォールバックでdnsを要求するときに非常に高い遅延が発生する可能性があるため( tls://dns.googleなど)、クライアントの待機時間が長すぎます。

このページは役に立ちましたか?
0 / 5 - 0 評価