先前のサーバーと 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\YourUsername\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\YourUsername\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
です。
使用できることを保証しませんが、私はこの方法を使用しています。更新時間は定まっていませんが、週に 1 回は更新されます。より高度な方法として、サーバーの Crontab を使用して実行することもできますが、私のサーバーは海外にあるため、カスタム IP を指定した URL の測定は私のネットワーク状況に影響を与えるため、自分のコンピューターで実行するしかありません。
この記事は Mix Space から xLog に同期されました
元のリンクは https://de3ay.com/posts/tech/cloudflare-fastly-ips-import です