はじめに
AdSenseの再審査待ちの間に、ブログを「外から見える範囲」で点検して、気になるところを直しました。ところが、その途中で直したつもりの設定のせいで、自宅のPCからブログが開けなくなりました。この記事はその記録です。
このブログは自宅のNAS(Synology)でWordPressを動かしています。AdSenseの審査中はNASを止めたり、サイトを落としたりしたくありません。だから「サイトが落ちないこと」を最優先に、1つずつ確認しながら進めました。
外から見て分かったこと
ブラウザから普通にアクセスできる範囲だけを、読み取りだけで確かめました。見つかったのは次のとおりです。
| 項目 | 見つかった状態 | 対応 |
|---|---|---|
| readme.html | 外から開ける(WordPressのバージョンが分かる) | 削除 |
| 設定ファイルのコピー | 公開フォルダに残っていた(中身は見えない) | 削除 |
| xmlrpc.php | 有効(外部から呼び出せる) | 外からのアクセスを拒否 |
| 使っていないプラグイン(Rinker) | 入ったまま | 削除 |
| セキュリティヘッダー | 6種類とも未設定 | 3つを追加、残りは審査後 |
| SSL Labsの検査 | 評価A。IPv6側に警告が出た | このあとの「失敗」の話 |
問題なかったものもあります。.env、.git、デバッグログ、設定ファイルの.bakや.oldなどのバックアップ名は見つからず、uploadsやwp-includesのフォルダ一覧も、外からは開けませんでした。
直したこと
Rinkerの削除
商品リンク用のプラグインで、今は使っていません。削除するとプラグインが持っているデータも消えるおそれがあるので、先に管理画面で商品データの件数を見ました。結果は0件でした。そこで停止してから削除し、「本Webサーバの環境」をまとめた固定ページにあったプラグイン一覧からも、名前を外しました。
ファイルの削除
readme.htmlと設定ファイルのコピーを、NASのFile Stationから消しました。消したあと、外から開いて404になるのを確かめました。設定ファイルの本体は消していません。消すとサイトが止まります。
xmlrpc.phpを止める
WordPressの古い仕組みで、外部のアプリから記事を投稿するのに使います。今は使っていないので、.htaccessに拒否の設定を足しました。足したのは6行だけです。このファイルにはWordPressとテーマが自動で書き換える部分があるので、その外(一番最後)に足して、事前に控えをコピーしておきました。足したあとは、xmlrpc.phpが403で拒否されることと、トップページ、ログイン、管理画面、記事がいつもどおり開けることを確かめました。
セキュリティヘッダー3つ
同じ.htaccessに、X-Frame-Options、X-Content-Type-Options、Referrer-Policyの3つを足しました。どれも他のサイトからの埋め込みや、ブラウザの誤判定、参照元の情報の漏れを抑えるためのものです。HSTSとCSPは、広告やアクセス解析に影響するかもしれないので、AdSenseの審査が終わるまでは付けないことにしました。
IPv6を外して自宅から開けなくなった
外部の診断サイト(SSL Labs)でブログを検査すると、IPv4側は評価Aでした。一方、IPv6側は「つながらない」という結果で、「設定が食い違っている」という警告が出ました。DNSにはIPv6のアドレスが登録されているのに、外からは届かない状態です。
そこで、NASのDDNS設定からIPv6の登録を外しました。再検査では警告が消えて、ここで終わりのはずでした。
ところがしばらくして、自宅のPCのChromeからブログを開こうとすると、ERR_CONNECTION_REFUSED(接続を拒否されました)と出るようになりました。管理画面も開けません。外部のサービスから見るとブログは正常で、開けないのは自宅の中だけでした。
原因
見立ては次のとおりです。自宅の中では、PCがIPv6でNASに直接つながっていました。IPv6を外すと、PCはIPv4の「外側のアドレス」につながろうとします。このとき、家のルーターが内側から来た通信を折り返せないと(NATループバックと呼ばれる性質です)、拒否されます。以前から、家のWi-Fiのスマホでブログが開けなかったのも、同じ仕組みだったのかもしれません。
戻しても開けなかった
DDNSのIPv6を戻して、公開のDNSにはIPv6が戻りました。でもPCからは開けません。コマンドプロンプトでnslookupを実行して、ローカルでの名前の引き方を見ると、PCが対象にしているルーターのDNSが、IPv4のアドレスだけを返していました。答えに「権限のない回答」と出ていたので、古い答えをキャッシュしているとみられます。
直し方はChromeの設定の「セキュアDNSを使用する」をオンにして、「Google(Public DNS)」を選ぶことでした。ルーターを経由しない名前の引き方になるので、IPv6のアドレスも引けて、ブログが開けました。
まとめ
直したものはどれもブログの表示に影響しませんでした。設定を変える前に控えを取り、変えたあとにすぐトップページ、ログイン、管理画面を開いて確かめることを、毎回やったのが役に立ちました。
失敗したのは、診断サイトの警告を消すために、DDNSのIPv6を外したところです。警告は消えましたが、家の中からブログが見えなくなりました。警告が出ていても外から見えるブログは問題なく動いていたので、自分で原因を作ってしまったことになります。
これからは次のようにします。
- 診断サイトの警告を直す直前に、「自宅の中からはどう見えているか」を確かめる
- 設定を変えるのは1回に1つにして、すぐ戻せる状態で進める
- 家の中から開けなくなったときは、
nslookupで名前の引き方を見る
審査結果はまだ出ていません。出たら、また記録します。

コメント