先前のサーバーと CDN は継続して使用する予定がなかったため、フロントエンドは Vercel に移動し、バックエンドは別のサーバーに移動しました。以前、CloudFlare Partners のカスタム IP 機能が無効になったため、IP を選択する方法がありませんでしたが、現在は CloudFlare が SaaS を介して最適な IP を選択できるようになりました。無料で利用できる力が徐々に現れ始めました🤣
カスタム IP に関するチュートリアルは、インターネット上にたくさんあります。私はこの記事を参考にしました。PayPal は国内のアカウントでも使用できますが、銀行口座のバインドと確認が必要で、料金はかかりません。最初にCloudflareSpeedTestプロジェクトを使用して、私の地域で最も高速なカスタム IP を測定しました。また、CloudFlare は A レコードの負荷分散をサポートしているため、複数の IP アドレスに解析を設定しても問題ありません。しかし、手動で解析を削除または変更するのは面倒ですし、測定にも 10 分から 20 分かかります。私は、要件を迅速かつ簡単に満たすための良い解決策があるかどうかを考えています。
CloudflareSpeedTest プロジェクトのドキュメントを調べた後、次のチュートリアルを見つけました:【自動更新 Cloudflare 中のドメイン解析レコードを最速 IP に(Windows/Linux スクリプト + 手動チュートリアル)】。残念ながら、これは単一の解析のみを変更できます。API を使用して一括で解析を変更することは現実的ではないようです。そのため、最終的には次の手順で要件を満たすことができました:
最適な IP を測定する => 測定結果を CloudFlare が認識できる DNS インポートテキストに変換する => CloudFlare にインポートする
最初のインポート後は、各コマンドの前に DNS 解析を一括削除するリクエストを追加するだけです。以下に、各機能の実装手順を示します。
クイックインポートの分析#
CloudFlare の DNS 管理パネルは次のようなものです。その中には、DNS レコードをクイックにインポート / エクスポートする機能があります。
内容は次のとおりです。
テストの結果、テキストファイルには一部の共通の形式があれば、高速に解析をインポートできることがわかりました。
最適な結果の変換#
ご自身のドメインに合わせてスクリプトを変更してください!!!
CloudflareSpeedTest と同じディレクトリに、コマンドプロンプトスクリプトを作成します。
@echo off
setlocal EnableDelayedExpansion
REM スクリプトのディレクトリを取得
set "scriptPath=%~dp0"
REM 入力と出力のファイルパスを設定
set "inputFile=%scriptPath%result.csv"
REM 現在のユーザーのデスクトップパスを取得
set "desktopPath=C:\Users\your_username\Desktop"
REM 出力ファイルのパスを設定
set "outputFile=%desktopPath%\output.txt"
REM 出力ファイルをクリア
type nul > "%outputFile%"
REM 出力ファイルの先頭に ";; A Records" を追加
echo ;; A Records >> "%outputFile%"
REM result.csv ファイルの各行を読み取る(ヘッダーをスキップ)
for /f "usebackq skip=1 tokens=1-6 delims=," %%A in ("%inputFile%") do (
REM 各行から IP アドレスを取得(最初の列)
set "ip=%%A"
REM テキストファイルに "arey.tools.tf. 1 IN A" と IP アドレスのデータを追加
echo arey.tools.tf. 1 IN A !ip! >> "%outputFile%"
)
このスクリプトは、Windows プラットフォームで CloudflareSpeedTest の出力結果を次の図に示す形式に簡単に変換することができます。他のプラットフォームのサポートが必要な場合は、ChatGPT にお問い合わせください。
解析の一括削除#
PowerShell スクリプト(一般的な拡張子は.ps1)を作成します。内容は次のとおりです。
$API_TOKEN = "<API TOKEN>"
$ZONE_ID = "<ZONE ID>"
$baseUrl = "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records"
$headers = @{
'Authorization' = "Bearer $API_TOKEN"
'Content-Type' = "application/json"
}
$listUrl = $baseUrl + '?per_page=500'
Write-Host $listUrl
$records = Invoke-RestMethod -Uri $listUrl -Method 'GET' -Headers $headers
$records = $records | Select-Object -ExpandProperty result
foreach ($record in $records) {
Write-Host "Deleting $($record.name) that points to $($record.content)"
$deleteUrl = $baseUrl + '/' + $record.id
Invoke-RestMethod -Uri $deleteUrl -Method 'DELETE' -Headers $headers
Write-Host $deleteUrl
}
他の重要な解析がある場合は、誤って解析が削除されないよう注意してください!事前にバックアップした他の解析テキストセグメントを output.txt に追加してからインポートしてください!
API TOKEN の取得#
リンク:API トークン
関連するドメインにチェックを入れ、最終的に API トークンを取得します。
ZONE ID の取得#
CloudFlare のドメインパネル管理ページを開きます。
最後に、次のコマンドを使用してコマンドプロンプトで PowerShell スクリプトを実行します。
powershell.exe -ExecutionPolicy Bypass -File <name>.ps1
少し整理する#
@echo off
del result.csv ::以前のエクスポート結果を削除
CloudflareST.exe ::最適化を実行
powershell.exe -ExecutionPolicy Bypass -File <name>.ps1 ::以前の解析を削除するスクリプトを実行
setlocal EnableDelayedExpansion
REM スクリプトのディレクトリを取得
set "scriptPath=%~dp0"
REM 入力と出力のファイルパスを設定
set "inputFile=%scriptPath%result.csv"
REM 現在のユーザーのデスクトップパスを取得
set "desktopPath=C:\Users\your_username\Desktop"
REM 出力ファイルのパスを設定
set "outputFile=%desktopPath%\output.txt"
REM 出力ファイルをクリア
type nul > "%outputFile%"
REM 出力ファイルの先頭に ";; A Records" を追加
echo ;; A Records >> "%outputFile%"
REM result.csv ファイルの各行を読み取る(ヘッダーをスキップ)
for /f "usebackq skip=1 tokens=1-6 delims=," %%A in ("%inputFile%") do (
REM 各行から IP アドレスを取得(最初の列)
set "ip=%%A"
REM テキストファイルに "解析ドメイン. 1 IN A" と IP アドレスのデータを追加
echo 解析ドメイン. 1 IN A !ip! >> "%outputFile%"
)
その後、DNS 解析パネルでインポートするだけです。
お楽しみください!#
手間がかかると思うので、私のカスタムに直接解析してください。CNAME はarey.tools.tf
です。
使用できることを保証しませんが、私はこの方法で使用しています。更新のタイミングは定まっていませんが、毎週必ず一度は行われます。より高度な方法として、サーバーの Crontab を使用して実行することもできますが、私のサーバーは海外にあるため、カスタム IP を指定した URL の測定は私のネットワーク状況に影響を与えるため、自分のコンピューターで実行するしかありません。
この記事は Mix Space から xLog に同期されています。
オリジナルのリンクは https://de3ay.com/posts/tech/cloudflare-fastly-ips-import です。