banner
Lainbo

Lainbo's Blog

If you’re nothing without the suit, then you shouldn't have it.
github

Clash Vergeシリーズのベストプラクティス

クライアントの著者が更新を停止したことについて#

これらのクライアントは更新を停止しましたが、私たちの使用に影響はあるのでしょうか?この問題の答えを知りたい場合、まずは一つの概念を理解する必要があります。Clash Verge(オープンソース)、Clash for Windows、Clash X Pro のようなグラフィカルなソフトウェアは、すべて一つのシェルであり、コア機能に接続するためのものです。更新を停止したのはこのシェルだけです。

一般的なコアには Clash Premium、Clash Meta(オープンソース)があります。

Clash Verge とその切り替え可能なコア Clash Meta はどちらもオープンソースであるため、私たちはこの組み合わせを優先的に選ぶべきです。以下でもこの組み合わせを使用します。

では、私たちは彼らを引き続き使用できるのでしょうか?

もちろん可能です。以下に説明します。

  1. あなたがラジオ *(Clash Verge)を使用しているとします。ラジオの製造者(著者)が倒産した(更新を停止した)* からといって、すぐにラジオを捨てることはありません。
  2. ラジオのすべての部品の設計図は公開 *(オープンソース)* されているため、悪意のあるバックグラウンドプログラムが埋め込まれる可能性を心配する必要はありません。
  3. ラジオの外装ボタン *(Clash Verge)は、ラジオ内部のマザーボードコンポーネント(Clash Meta コア)をより簡単に制御してタスクを実行させるためのものです。この外装ボタン(Clash Verge)がラジオのマザーボード(Clash Meta コア)* を制御する方法に大きな問題がなければ、私たちは使用できます。
  4. 外装が更新を停止することは、新しいボタンが追加されないことを意味します。
  5. コアが更新を停止することは、ラジオのマザーボードが機能を更新しないことを意味します。それだけです。
  6. ラジオが音を再生できるのは *(魔法を開く)、あなたが正しい FM 周波数(サブスクリプションリンク)を入力したからです。ラジオ局(空港)がまだ放送している限り(サービス)、シェルとコアがまだ存在している限り、音を再生すること(魔法を開く)* に影響はありません。

最後に、明確にしておきたいのは、以下に記載されるプライバシー保護の操作は絶対的な安全ではないということです。家で何をしているかを知りたい場合、下のゴミ箱を漁ってあなたが捨てたゴミを推測したり、望遠鏡で監視したり、家の天井を爆破したり、大砲で強引に押し入って見ることができます。ネットワーク監視も同様で、あなたのネット上の行動次第で、どれだけの高級手段を使う価値があるかが決まります。掘削機の一発で防盗ドアが壊れるからといって、防盗ドアを設置しないわけにはいきません。

現在利用可能なオープンソース Clash Verge クライアント#

現在、Clash Verge を基にして開発・維持されているクライアントがいくつかあります。特に推奨するのは Clash Verge Rev です。後の文章ではこのクライアントを基にデモを行います。

後述の設定は Clash Verge Rev ≥ v1.7 に適応されており、かなりの期間自分で使用しているので安心して利用できます。

なぜこのソフトウェアなのか?

マルチプラットフォームの互換性が優れている ——Clash Verge Rev は Windows、macOS、Linux をサポートしています。以下のチュートリアルに従って操作すれば、最終的に新しいサブスクリプションリンクが得られます。iOS では、この新しいサブスクリプションリンクを QR コードに生成し、小火箭を使って「+」アイコンをクリックし、下の「QR コードをスキャン」を見つければ、iOS デバイスにインポートして使用できます。Stash では生成されたリンクを直接入力するだけで使用でき、以下のベストプラクティス操作は一度実行すれば、さまざまなデバイスでクロスプラットフォームで利用できます。

長すぎるので要点をまとめる#

  1. サブスクリプション変換 **(すべての端末で必須)**
  2. TUN モードを開き、プロキシをオフにする(任意)
  3. ブラウザの安全 DNS アドレスをオフにし、DNS アドレスを設定する(すべての PC で任意、2 を操作した場合は必須)
  4. システム DNS 設定を自動にする(任意)
  5. ブラウザの QUIC をオフにする **(すべての PC で必須)**
  6. ローカルの中国 IP データベースを設定する(任意)

サブスクリプション分流ルールの問題を解決する#

サブスクリプションリンクを取得したら、最初に行うべきことはサブスクリプション変換で、分流ルールを整えることです(サブスクリプションを提供するサービスプロバイダーが持っている分流ルールは、数百条しかなく、非常に不完全であることが多いです。多くの人が Clash を使用しているが New Bing が使えないのはその良い例です)。

オンラインサブスクリプション変換は単にShadowsocks、V2ray、Trojan のサブスクリプションリンクを Clash、Stash、V2ray、Quantumult X、Surge などのソフトウェアで使用するためのサブスクリプション形式に変換するだけでなく、非常に多くの高度な操作もサポートしていますが、この記事では十分に使えることを目標としており、これを使いこなすことを目的としていません。

オンラインサブスクリプション変換サイトは便利ですが、一定のプライバシーリスクもあるため注意が必要です。技術に詳しい友人には、自分でオンラインサブスクリプション変換プラットフォームを構築することをお勧めします。

サブスクリプション変換サイト#

私が構築したサブスクリプション変換サイトを、以下の文章では例として使用します。

アクセス: https://sub.lainbo.com/

操作手順#

image

一般的にこれでかなり完璧に使用でき、私が書いたリモート設定ファイルのいくつかの追加機能も持っています。

ルールファイルが正常に適用されたかどうかの判断#

サブスクリプションを取得した後、ノードに「🌿自動選択」、「🇭🇰香港自動」、「🇨🇳台湾自動」、「🇸🇬シンガポール自動」、「🇺🇸アメリカ自動」、「🇯🇵日本自動」という自動ノードが表示されるはずです。これらの自動ノードが見える場合、あなたは私のルールを自分のサブスクリプションに適用することに成功しています。

特別な要件がない場合は、これらの自動ノードを選択することをお勧めします。自動ノードは、対応する国 / 地域のノードの中で遅延が最も低いノードを使用するのを助けてくれます。

リモート設定について#

このリモート設定は何であり、あなたのサブスクリプションにどのような機能を付与するのか、「リモート設定」原文のリンクを開くと、上部に注釈があります。

DNS 漏洩問題を解決する#

DNS 漏洩とは、VPN やその他のプライバシーサービスを使用している場合に、ユーザーの実際の IP アドレスが DNS リクエストを通じて ISP(例えば、聯通、移動)の DNS サーバーに送信されることを指します。VPN 設定の安全で匿名の DNS サーバーを通じてではなく。もしDNS Leak Testipleakのようなサイトのリストに中国の国旗が表示された場合、DNS 漏洩が発生している可能性があることを認識する必要があります。

もし本当に漏洩した場合、何が問題になるのでしょうか?私もわかりませんが、以下のようなメッセージを受け取る可能性があります。
image
image
私は彼らにこのことを知られないようにすることをお勧めします。具体的な検出メカニズムは誰も知らないが、ネットワークレベルで取得されている可能性が高いです。一般的な家庭のネットワークトポロジーでは、wiresharkで見える内容は、運営者も見ることができるため、114.114.114.114 や 223.5.5.5 のような DNS 解決を使用してどのサイトにアクセスしたかは非常に明確です。

これにより、最初の使用テクニックが派生します ——Clash を TUN モードで開き、システムプロキシをオフにして使用すること

通常のシステムプロキシモードとの違いは、TUN モードでは Clash が仮想ネットワークカードを作成し、ネットワークレベルで全てのネットワークトラフィックを引き継ぐことです。

通常のシステムプロキシモードは、ソフトウェアの権限として他のソフトウェアのネットワークを引き継ぐものであり、ゲームやコマンドラインなど、引き継げないアプリケーションが常に存在します。したがって、TUN モードを開き、システムプロキシをオフにして、ネットワークカードにこの作業をさせるべきです。

操作 1(TUN モードを開く)#

  1. まず、Clash Verge のコアを切り替え、オープンソースの Clash Meta コアを選択し、Clash Verge 全体を再起動して効果を確実にします(Clash Verge Rev の新しいバージョンはデフォルトで Meta になっているはずです)。

    (Clash Meta は後期に異なるクライアント名で異なる場合があります。もしコア名がMihomoであれば、それも Meta です)

    image

  2. サービスをインストールし、Tun モードを開き、厳格ルーティングを開き、下の図の数字の順番でクリックします

    image

    サービスモードがインストールできない場合

    • Win では、システムコマンドライン(PowerShell)でsc delete clash_verge_serviceを実行して、以前の Clash Verge サービスを削除してみてください。これは、以前に Clash Verge をインストールしたが、アンインストール時にこのサービスモードに書き込まなかったため、新しいインストールができない可能性があります。
    • Mac/Linux では、設定のClashコアで歯車アイコン⚙️を開き、「認可」をクリックします。
    • その他のトラブルシューティングについては、https://github.com/clash-verge-rev/clash-verge-rev/issues/125 を参照してください。
  3. この時、Clash ソフトウェアを再起動し、TUN モードの隣の歯車アイコン⚙️をクリックして、Tun のスタックモードを Mixed に設定します。これが公式に推奨されるオプションで、「厳格ルーティング」を開きます。

    image

操作 2(グループポリシーを調整する Mac はスキップ)#

この問題を解決するのは非常に簡単です。問題が発生する理由は、Windows システムがデフォルトでマルチホスト DNS 解決を使用し、すべてのネットワークカードを使用してリクエストを発起するためです。この機能をグループポリシー(Windows 家庭版にはこの機能はありません)でオフにするだけです(Win+R を押してgpedit.mscと入力し、OK をクリックします)。

image

これで、Windows で Clash が発生する可能性のある DNS 漏洩問題を解決しました。

ただし、ipleak が検出できないことを保証するものではありません。私は ipleak をルールに追加することができますが、そうすることは耳を塞いで鈴を盗むことです。特定のブラックリストサイトが漏れないようにするだけで、上記のようなメッセージを受け取らないと思います。

操作 3(安定した DNS を使用する)#

この DNS 部分では、運営者の DNS を使用することを教える人もいますが、運営者の DNS は初心者ユーザーに適しているだけで、詐欺防止すらできない可能性があるため、国内の大手企業の DNS を使用することをお勧めします。

  1. ブラウザの QUIC をオフにします。中国本土の ISP は UDP の速度制限を行っているため、QUIC という優れたプロトコルが中国本土のネットワークでは逆効果になります。

    about://flags/#enable-quicDisabledに設定します(下に表示されるポップアップをクリックしてブラウザを再起動して有効にします)。

  2. ブラウザの「安全 DNS」をオフにします。

    • Chrome: chrome://settings/security

      【安全 DNS を使用】*(新しい Chrome では【訪問するウェブサイトの名前を暗号化する】と呼ばれています)* をオフにします。

    • Edge: edge://settings/privacy

      【セキュリティ】 -【安全な DNS を使用してウェブサイトのネットワークアドレスを検索する方法を指定】をオフにします。

  • あなたの Clash Verge Rev のバージョンが < 1.7 の場合

    1. Clash Verge の【設定】で、右上の新規作成をクリックし、以下の操作を行います。

    image

    1. 新しく作成したカードを右クリックし、「ファイルを編集」を選択し、以下の内容を入力して保存し、カードを右クリックして有効にします。

      image

      function main(content) {
        const isObject = (value) => {
          return value !== null && typeof value === 'object'
        }
      
        const mergeConfig = (existingConfig, newConfig) => {
          if (!isObject(existingConfig)) {
            existingConfig = {}
          }
          if (!isObject(newConfig)) {
            return existingConfig
          }
          return { ...existingConfig, ...newConfig }
        }
      
        const cnDnsList = [
          'https://1.12.12.12/dns-query',
          'https://223.5.5.5/dns-query',
        ]
        
        // 大部分のネットワークリクエストはここを通過します。現在はTencent、Ali、そしてノードクエリに使用される1.0.0.1のDNSです。
        const trustDnsList = [
          'https://doh.pub/dns-query', // Tencent
          'https://dns.alidns.com/dns-query', // Ali(ここではh3と通常の並行クエリがトリガーされます)
          '180.184.1.1', // ByteDance-Volcano EngineのDNS
        ]
        const notionDns = 'tls://dns.jerryw.cn' // notion加速dns
        const notionUrls = [
          'http-inputs-notion.splunkcloud.com',
          '+.notion-static.com',
          '+.notion.com',
          '+.notion.new',
          '+.notion.site',
          '+.notion.so',
        ]
        const combinedUrls = notionUrls.join(',');
        const dnsOptions = {
          'enable': true,
          'prefer-h3': true, // DNSサーバーがDoH3をサポートしている場合、h3を優先的に使用します(この例ではAli DNSのみがサポートしています)。
          'default-nameserver': cnDnsList, // 他のDNSサーバーやノードのドメインを解決するために使用されます。IPでなければならず、暗号化DNSも可能です。この設定はノードと他のDNSを解決するためだけに使用され、他のネットワークリクエストには関与しません。
          'nameserver': trustDnsList, // 他のネットワークリクエストはすべてここを通過します。
          
          // これは上記のnameserverを上書きするために使用されます。
          'nameserver-policy': {
            [combinedUrls]: notionDns,
            'geosite:geolocation-!cn': trustDnsList,
            // 内部ネットワークで使用するDNSがある場合は、ここに定義する必要があります。複数のドメインはカンマで区切ります。
            // '+.会社ドメイン.com, www.4399.com, +.baidu.com': '10.0.0.1'
          },
        }
      
        // GitHub加速前缀
        const githubPrefix = 'https://fastgh.lainbo.com/'
      
        // GEOデータGitHubリソースの原始ダウンロードアドレス
        const rawGeoxURLs = {
          geoip: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat',
          geosite: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat',
          mmdb: 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb',
        }
      
        // 加速前缀付きのGEOデータリソースオブジェクトを生成します。
        const accelURLs = Object.fromEntries(
          Object.entries(rawGeoxURLs).map(([key, githubUrl]) => [key, `${githubPrefix}${githubUrl}`]),
        )
      
        const otherOptions = {
          'unified-delay': true,
          'tcp-concurrent': true,
          'profile': {
            'store-selected': true,
            'store-fake-ip': true,
          },
          'sniffer': {
            enable: true,
            sniff: {
              TLS: {
                ports: [443, 8443],
              },
              HTTP: {
                'ports': [80, '8080-8880'],
                'override-destination': true,
              },
            },
          },
          'geodata-mode': true,
          'geo-auto-update': true,
          'geo-update-interval': 24,
          'geodata-loader': 'standard',
          'geox-url': accelURLs,
          'find-process-mode': 'strict',
        }
        content.dns = mergeConfig(content.dns, dnsOptions)
        return { ...content, ...otherOptions }
      }
      

      画像はインターフェースの参考として提供されており、実際の内容は上記のコードブロックに準じます。

      image

    2. 有効にした後、ボタンを再度クリックして、設定が正しく適用されたことを確認します(ここでのコードの変更は、必ずこのボタンをクリックして実行時の設定を手動で更新する必要があります)。

      image

  • あなたの Clash Verge Rev のバージョンが≥1.7 の場合

    1. 右クリックして「全体の拡張設定」を選択し、「ファイルを編集」をクリックします。

      image

    2. 以下のコードを貼り付けて、保存をクリックします。

      dns:
        prefer-h3: true
        default-nameserver:
          - 180.184.1.1
          - udp://47.108.230.123:5553
          - https://119.29.29.29/dns-query
        nameserver-policy:
          "http-inputs-notion.splunkcloud.com,+.notion-static.com,+.notion.com,+.notion.new,+.notion.site,+.notion.so": tls://dns.jerryw.cn
          geosite:geolocation-!cn:
            - https://doh.pub/dns-query
            - https://dns.alidns.com/dns-query
            - 180.184.1.1
          nameserver:
            - https://doh.pub/dns-query
            - https://dns.alidns.com/dns-query
            - 180.184.1.1
      unified-delay: true
      tcp-concurrent: true
      profile:
        store-selected: true
        store-fake-ip: true
      sniffer:
        enable: true
        sniff:
          HTTP:
            ports:
              - 80
              - 8080-8880
            override-destination: true
          TLS:
            ports:
              - 443
              - 8443
          QUIC:
            ports:
              - 443
              - 8443
      geodata-mode: true
      geo-auto-update: true
      geo-update-interval: 24
      geodata-loader: standard
      geox-url:
        geoip: https://fastgh.lainbo.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat
        geosite: https://fastgh.lainbo.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat
        mmdb: https://fastgh.lainbo.com/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country-lite.mmdb
      
      

このコードの目的は

  • 阿里と DNSPod(Tencent の DNS)のDoTを使用してノード、DNS サーバーを解決すること
  • 阿里、Tencent、Volcano の DNS サーバーを使用して他のウェブサイトを解決すること(DNS 漏洩は通常運営者からの漏洩であり、大手企業では漏洩の話は聞いたことがありません)
  • 非営利団体の DoT を使用して Notion サイトを解決すること
  • tun モードスタックを自適応モードで使用すること
  • 遅延計算方法を変更し、ハンドシェイクなどの追加遅延を除去すること
  • TCP 並行サポートを開くこと
  • ドメインスニファリングを開き、ドメインを正確に復元し、ドメイン分流を行うこと
  • geodata のダウンロードソースを国内の加速ダウンロードソースに設定すること

ここで、阿里や Tencent の DNS 解決サイトを使用していると、漏洩するのではないかと言う人もいるかもしれませんが、私が言いたいのは、私たちが解決しようとしている問題は運営者(電信、聯通、移動)からのデータ漏洩であり、DNS クエリの痕跡を残さないことではありません。もしあなたが自分の DNS クエリ行動を痕跡なくしたいのであれば、自分で DNS を構築してください。

GEOIP、CN 問題を解決する#

現在、市場に出回っているほとんどのプロキシツールは GeoIP2 データベースに依存して、アドレスの所属地を判断しています。これらのプロキシツールのルールの末尾部分には、一般的にGEOIP, CNのような条項があり、目的の IP アドレスが中国本土に属するかどうかを確認し、直結するかどうかを判断します。

これらのプロキシツールが通常使用する GeoIP2 データベースは、MaxMind のGeoLite2の無料データベースから来ています。このデータベースには以下のいくつかの問題があります:

  • 取得が不便:2019 年 12 月 30 日以降、登録しないとダウンロードできなくなりました。
  • データ量が大きい:データベースは膨大で、世界中の IP アドレス範囲を含み、約 10MB です。
  • 精度が低い:中国本土の IP アドレスの判定が不正確で、例えば、香港の阿里云の IP がシンガポールや中国本土と判定されることがあります。

膨大なデータ量は、ほとんどの中国本土のユーザーにとって意味がなく、単に IP の地理的位置が中国本土に属するかどうかを判断するだけで、他の国の IP はすべてプロキシ / 直結します。過剰なデータ量は読み込み時間を増加させ、クエリ効率を低下させます。

以前作成したスクリプトには、中国本土に適したより簡素な IP データベースのリンクが含まれています。今は手動でダウンロードして置き換えるだけです。

  1. Clash Verge Rev の設定メニューをクリックし、「GeoData を更新」を見つけてクリックすれば更新できます。
  2. ダウンロードが完了したら、トレイの Clash Verge アイコンを右クリックし、「その他」-「アプリを再起動」を選択して、データベースが正しく適用されることを確認します。

xxx.com をプロキシを通さないようにしたい場合、どうすればいいですか?#

  • あなたの Clash Verge Rev のバージョンが < 1.7 の場合
    1. 左側の「サブスクリプション」メニューをクリックし、右上の「新規作成」ボタンをクリックします。

    2. タイプを「Merge」に選択し、名前を自分で付けて保存します。

    3. 新しく作成した Merge を右クリックし、「ファイルを編集」をクリックし、prepend-rules:の後に追加します(Clash のルールは上から下に読み取られるため、読み取ったらそれ以上は探しません。したがって、prepend を使用してルールを前に挿入する必要があります)。

    4. フォーマットは以下のように、自分で柔軟に組み合わせて追加したいルールを記述します。記述時には yaml ファイルのインデントに注意してください。

      (以下のルールをそのままコピーしないでください。これは書き方のデモであり、デモ内容は非常に不合理な戦略です!)

      prepend-rules:
      # ↓は`*.baidu.com`が`🔗 無需代理`という戦略グループを通ることを示し、この戦略グループのデフォルトの動作は直結であり、ノードを通りません。
      - DOMAIN-SUFFIX,baidu.com,🔗 無需代理
      
      # ↓は`abc.baidu.com`がこの内蔵戦略であるDIRECTを通ることを示します。
      # DIRECTも直結ですが、このルールは`🔗 無需代理`戦略グループの制御を受けません。
      # 🔗 無需代理戦略グループは名前が「無需代理」となっていますが、手動でその戦略を調整できますが、DIRECTは調整できません。
      - DOMAIN,abc.baidu.com,DIRECT
      
      # ↓は`Weiyun.exe`というソースプロセス名が`🛡️ 広告拦截`を通ることを示し、この戦略グループのデフォルトの動作はリクエストを拒否します。
      - PROCESS-NAME,Weiyun.exe,🛡️ 広告拦截
      
      # ↓はリクエストURLに`aria2`というキーワードが含まれている限り、`REJECT`という内蔵戦略を通ることを示します。
      # REJECTもリクエストを破棄しますが、このルールは`🛡️ 広告拦截`戦略グループの制御を受けません。
      # 説明は不要です。上記の無需代理と同じ論理です。
      - DOMAIN-KEYWORD,aria2,REJECT
      
      # ↓はすべての22ポートが`✈️ ノード選択`という戦略グループを通ることを示し、選択したノードのトラフィックを通ります。
      - DST-PORT,22,✈️ ノード選択
      
      # ↓は指定されたIP範囲がプロキシを必要としないことを示し、最後に`,no-resolve`を追加することを忘れないでください。
      # no-resolveはClashにこのルールをマッチさせるために解決を試みないように指示し、「直接IPアクセス」のリクエストのみを処理します。
      - IP-CIDR,203.205.254.0/23,🔗 無需代理,no-resolve
      - IP-CIDR6,2a0b:b580::/48,🔗 無需代理,no-resolve
      

      上記は一般的なものだけを書いており、他にも多くのルールタイプがClash のドキュメントの該当章虚空終端 Docsを参照してください。

    5. 書き終えたら、新しく作成した Merge を右クリックし、「有効化」をクリックし、右上の「サブスクリプションを再アクティブ化」ボタンをクリックして設定を更新します。

      image

  • あなたの Clash Verge Rev のバージョンが≥1.7 の場合
    1. 右クリックして「全体の拡張スクリプト」を選択し、「ファイルを編集」をクリックします。

      image

    2. フォーマットは以下のように、自分で柔軟に組み合わせて追加したいルールを記述します。組み合わせ方は上記のバージョン < 1.7 と同じで、参照できますが、フォーマットは JavaScript コードで記述する必要があります。追加のルールが必要な場合は、コード内のprependRulesを拡張してください。

      function main(content) {
        const prependRules = [
          'IP-ASN,132203,🔗 無需代理,no-resolve',
          'DOMAIN-SUFFIX,baidu.com,🔗 無需代理', // 表示`*.baidu.com`が`🔗 無需代理`という戦略グループを通ることを示し、この戦略グループのデフォルトの動作は直結であり、ノードを通りません。
          'PROCESS-NAME,Weiyun.exe,🛡️ 広告拦截', // 表示`Weiyun.exe`というソースプロセス名が`🛡️ 広告拦截`を通ることを示し、この戦略グループのデフォルトの動作はリクエストを拒否します。
          'DST-PORT,22,✈️ ノード選択', // 表示すべての22ポートが`✈️ ノード選択`という戦略グループを通ることを示し、選択したノードのトラフィックを通ります。
        ]
        if (content.rules?.length) {
          content.rules = prependRules.concat(content.rules) 
        }
      
        return content
      }
      
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。