ドメインごとのDNSサーバ指定 macOS, Windows, 他

プライベートな名前の解決やマルチホーミングのお供に。所謂split DNSをクライアント側で設定してみます。systemd-resolved含めて普通のOSは接続ごとのDNSサーバと検索ドメインをみて良きに処理してくれます。一方で接続切れた時に内部用の名前を外に流したくないとか、ちょこっとテストしたいとかいう場面もあります。毎回ググって情報にたどり着くのがめんどくなったので備忘です。IPのルーティングは別途必要。懐かしいですがフレッツのサービス情報サイトの.fletsとかもそうですね… Root Zone Database 流石に確保してないですか。.nttは復活してたのですね。

続きを読む

nginxでGooglebotの検証 簡易版

2022-09-30追記: この記事の後にGoogleがGooglebotの範囲を公開したので、もっと簡単に簡易検証できるようになっています。

Facebookと傘下が死んでいたようですがこの記事

Internet providers usually update their DNS records every few hours, but they can take several days to fully propagate.

はちょっと何言ってるか良く分かりませんでした。他人のRRをプロバイダがアップデートしている??? いずれにせよ全部の権威サーバ[abcd].ns.facebook.comがAS32934の中にいてサービスを提供しているサーバごとBGPテーブルから消え去ったのでネガティブレスポンスのキャッシュではなくてサーバに到達できないというエラーのキャッシュになります。キャッシュが1000くらい直列になった謎沼の底でもない限り数日かかることはないかと思います。

それはともかく本題のGooglebotの検証方法は公式には

となっています。User-agentも逆引き(rDNS, PTR RR)も詐称したい側が容易に詐称可能です。.google.com や .googlebot.com のA RRやAAAA RRはGoogleの権威サーバを乗っ取るかどこぞのキャッシュサーバを攻略しないといけないため通常は正しい、GoogleはUser-agent詐称しない、という前提のもと検証できることになります。

Apache HTTPDでは HostnameLookups Double と SetEnvIf を組み合わせて検証できます。nginxではNginx HTTP rDNS moduleを使ってできそうです。パッケージになっているディストリビューションが少ないので、配置しなければいけないサーバが多い場合はテスト目的以外で使うにはちょっと躊躇します。

そこでFCrDNS部分をざくっと省略版にしてAS番号で処理することにします。

続きを読む