VPNでWordPressにログインできない|Xserver 403の本当の原因と解決法 | UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

VPNでWordPressにログインできない|Xserver 403の原因と解決法
目次

まず結論|原因の多くは「サーバー側のIP制限」です

VPNを使うとWordPressにログインできない。その原因の多くは、WordPress本体でも .htaccess でもなく、サーバー側のIP制限です。とくにXserverでは、海外IPだけでなく国内のVPN・クラウド由来IPも制限の対象になることがあります。

先に要点だけお伝えします。VPNをONにしたときだけ管理画面が403になるなら、まず疑うべきは .htaccess でもプラグインでもなく、Xserverの「WordPressセキュリティ設定」です。そして安全な直し方は、設定をすべてOFFにすることではなく、VPNの固定IPをホワイトリストに登録することです。

この記事では、Xserverを利用している環境で、VPNを使ったときに実際に起きたトラブルの原因と解決方法を、順を追って整理していきます。

  • なぜログインできなくなったのか
  • なぜ .htaccess の設定が効かなかったのか
  • なぜ Xserver の FAQ にあるコードは “効いたように見えた” のか
  • そして、どの方法が正解だったのか

を、順番に紹介します。初めての方でも迷わないよう、専門用語には一言フォローを添えながら進めます。

何が起きた?|VPNをONにすると管理画面だけ403になる症状

Google Analytics の計測結果から自分のアクセスを除外しやすくするために、新規でVPNサービスに申し込み、固定IPで接続できるようにMacへ設定しました。

ところがWordPressにアクセスすると、管理画面にログインできない状況になりました。症状を整理すると、次のとおりです。

  • VPNをOFFにすると、WordPressに普通にログインできる
  • VPNをONにすると、管理画面に入れない
  • サイトの表示自体は問題ない

エラーは 403 やアクセス制限に関するもの。サイトは見えるのに管理画面だけ弾かれる、という点がポイントです。

「IP制限かな?」
そう思って、まずは .htaccess の設定を変更します。

なぜ国内VPNでもブロックされるのか|動的IPと固定IPの違い

動的IPと固定IPの違いとWordPress管理での問題点

原因の話に入る前に、少しだけ前提を共有させてください。ここを理解しておくと、後半の「本当の原因」がすっと腹落ちします。

インターネットに接続するとき、 私たちは必ず IPアドレス(ネット上の住所のような番号)を使っています。

このIPアドレスには、 固定IP動的IP の2種類があります。そして実は、 世の中で使われているIPアドレスのほとんどは、動的IP です。

動的IPは、接続のたびにIPアドレスが変わります。 自宅のインターネットや
スマートフォンの通信では、 この仕組みが当たり前に使われています。ふだんの利用では、IPが変わっても困ることはありません。
動画を見たり、調べものをしたりするだけなら、 動的IPで十分です。

しかし、サーバー管理やWordPressの運用では話が変わります。IP制限やホワイトリスト設定のように、 「このIPだけを許可する」 仕組みでは、
IPが変わる動的IPは扱いづらくなります。

さらに見落とされがちなのが、VPNやクラウド・VPS由来のIPは「攻撃が多いIP帯」として警戒されやすいという点です。たとえ接続先が国内であっても、サーバー側が「クラウド・VPN由来」と判定すれば制限の対象になり得ます。これが、国内のVPNなのに弾かれるという今回の症状の伏線になります。

そのため、Google Analyticsで自分のアクセスを除外したり、WordPressの管理画面への
アクセスを安定させたい場合は、 固定IP を使うという選択肢が必要になってきます。

それでは、この「IPの性質」を踏まえたうえで、
実際にどこでアクセスが制御されていたのかを見ていきます。

最初に試した .htaccess のIP制限が効かなかった理由

WordPressの管理画面を守る方法として、
よく知られているのが IP 制限です。そこで、特定のIPだけを許可する方法を考えてみます。たとえば、次のような設定です。

<Files "wp-login.php">
  <RequireAll>
    Require ip VPNのIP
  </RequireAll>
</Files>

考え方としては正しそうです。「VPNのIPだけ許可すればいい」――ですが、結果は403エラーになりました。

ここで、「何かがおかしい」と感じ始めます。許可しているはずなのに通らない。つまり、このIP制限よりも手前で、別の何かがアクセスを止めている可能性が出てきました。

Xserver公式FAQの SetEnvIf コードはなぜ効いた?

調べてみると、Xserverの公式FAQに、次のコードが紹介されていました。

SetEnvIf Request_URI ".*" AllowWPLoginFromCloudJP

先ほどのコードを消して、新たにこのコードを .htaccess に追加すると、
VPNをONにしたままでも、管理画面にログインすることができました。

ここで疑問が生まれます。IPを見ていないはずのコードなのに、なぜ効くのか? いったい、どこでアクセスが制御されているのか?

SetEnvIf は「許可」ではなく「目印(環境変数)」

まず大切なのは、次のコードが アクセスを許可する設定ではない という点です。

SetEnvIf Request_URI ".*" AllowWPLoginFromCloudJP

つまり、このコードは次のような処理を Apache自身が行っているわけではありません

  • 管理画面へのアクセスを許可する
  • IP制限を解除する

この設定がしていることは、
Apacheの環境変数を1つ立てているだけです。SetEnvIf は、「ある条件に一致したら、目印(フラグ)を付けておく」ための命令だからです。

今回の場合、

  • Request_URI ".*" → すべてのリクエストに一致
  • AllowWPLoginFromCloudJP → そのリクエストに、この名前のフラグを付ける

という意味になります。つまり、すべてのアクセスに対して「AllowWPLoginFromCloudJP」という合図を付けている だけです。この時点では、「通す」「止める」といった判断は、まだ行われていません。

では、その「目印」を見て実際に通す/止めるを決めているのは誰なのか。ここからが本当の原因です。

本当の原因|Xserverの「WordPressセキュリティ設定」アクセス評価の流れ

実際の挙動と公式FAQの内容から見ると、wp-login.php に到達する前段で、Xserverの WordPress セキュリティ設定がアクセス制御に関わっていると考えられます。

今回アクセスを止めていたのは、

  • WAF(ModSecurity)のような完全な前段ブロックではなく、
  • Xserver独自の「WordPressセキュリティ設定」でした。

この機能は、

  • 日本国内のIPアドレスに見えていても、
  • 海外の主要クラウドサービスが所有する日本国内IPアドレスと判定される場合は、
  • WordPress管理画面へのアクセス制限の対象になります

これが、国内のVPNなのに403で弾かれた正体です。

そして今回の挙動を見るうえで重要なのは、Apacheの環境変数(SetEnvIf)と連動しているように見える、という点です。
ただし、Xserverの内部実装そのものが公式に詳しく公開されているわけではないため、ここは挙動から読み取れる範囲の説明になります。

実際の処理の流れ(今回のケース)

アクセスは、次の順番で評価されていたと考えられます。

  • VPN
  • Apache(.htaccess / SetEnvIf)
  • Xserver WordPressセキュリティ設定
  • WordPress

つまり、

  • Apacheで AllowWPLoginFromCloudJP が立っていると
  • Xserver側で例外扱いとなり、
  • 管理画面へのアクセスを通す

という流れで動いているように見えます。そのため、FAQのコードを入れると ログインできるようになりました

なお、このコードは Xserver の公式FAQでも案内されている対処法です。そのため、「間違った設定」ではありません。

SetEnvIf が最終解決にならない理由|全URI例外の落とし穴

ログインは復活しましたが、この書き方には大きな注意点があります。もう一度、先ほどのコードを見てください。

SetEnvIf Request_URI ".*" AllowWPLoginFromCloudJP

このコードは、

  • すべてのURI
  • すべてのアクセス

に対して、例外フラグを常にONにするため、国内クラウドIP制限を広く回避する形になります。これは、

  • 原因切り分け
  • 一時的な回避

としては有効です。ただし今回は、どのIPを許可するかを管理画面で明示できる方法の方が運用しやすいと判断しました。せっかくサーバー側が用意してくれている防御を、必要以上に広く無効化してしまうのは避けたいからです。

正解だった対処法|Xserver管理画面でVPNの固定IPをホワイトリスト登録

最終的に行ったのは、
Xserverの管理画面から、VPNのIPアドレスを「許可リスト」に登録する方法です。これは、Xserverが用意している正式な設定画面を使う方法です。

Xserverでは、公式FAQで案内されている .htaccess の方法と、管理画面からのホワイトリスト設定の両方が使えます。今回は、許可するIPを明示しやすい後者を選びました。

実際に行った設定手順(6ステップ)

Xserverのサーバーパネルで、次の順に進みました。

  1. 「Xserverサーバーパネル」 にログイン
  2. 「WordPressセキュリティ設定」 を開く
  3. 「ドメイン名」を選択
  4. 「国外アクセス制限設定」 を選択
  5. 「ダッシュボードアクセス制限」→「変更」 をクリック
  6. ホワイトリストIPアドレス」 VPNの出口IPアドレスを追加

VPNの出口IPアドレスは(VPNをONにしたときに表示されるIP)のことです。

この方法では、

  • 許可するIPが明確
  • 意図しないアクセスを通さない
  • Xserverが想定している使い方

という点で、最も安全です。この後は、VPNをONにしたままでも、問題なく管理画面にログインできるようになりました。

安定運用のカギは「固定IPが使えるVPN」

ここで思い出してほしいのが、前半でお話しした動的IPと固定IPの違いです。ホワイトリストに登録するIPがコロコロ変わってしまうと、登録した意味がなくなり、また弾かれてしまいます。

だからこそ、こうした設定を安定して行うには、
固定IPが使えるVPNサービスを選ぶのがとても大切です。私が今回使ったのが、固定IPで安定接続できる「ロリポップ!固定IPアクセス」です。導入から実際の使用感までを、レビュー記事で詳しくまとめています。

【新機能】セキュリティ監査・トラブル対応を強化する「ログ機能」が登場

Lolipop VPN(固定IPアクセス)に、待望のログ記録オプションが加わりました。 「いつ、誰が、どこからアクセスしたか」を正確に把握することは、現代のシステム運用における「内部統制」と「安全確保」の基本です。

エンジニア・管理者に選ばれる3つのポイント:

  1. 確かな証跡管理: 接続元IPやハンドシェイク履歴を最長6ヶ月間保存。セキュリティ監査にも即座に対応可能です。
  2. 迅速な解析: 管理画面からCSV形式で一括ダウンロード。トラブル発生時の原因究明をスピードアップさせます。
  3. 圧倒的な低コスト: 1ライセンスあたり月額110円(税込)。自前でログサーバーを構築・保守する手間とコストを最小化します。

VPNによるセキュアなアクセスに、「記録」という安心を。 あなたの管理環境の信頼性を、さらに一段階引き上げましょう。

PATH: /dev/vpn/lolipop_fixed_ip
READY TO CONNECT_

ロリポップ!固定IPアクセス

SECURE
FAST
MONTHLY: ¥539(tax)
TRIAL: 2m_FREE
詳細を見る

よくある質問(FAQ)

VPNを切ればログインできるのに、なぜVPNだとダメなの?

VPNをONにすると、通信の出口IPがVPN事業者のIPに変わります。このIPが「クラウド・VPN由来」と判定されると、サーバー側のセキュリティ設定が管理画面アクセスを制限することがあります。WordPress本体の不具合ではなく、サーバー側のIP判定が原因です。

国内のVPNなのに「海外アクセス」のように弾かれるのはなぜ?

Xserverの「WordPressセキュリティ設定」は、海外IPだけでなく、国内IPであってもクラウド・VPS・VPN由来と判定したIPを制限対象にすることがあります。攻撃の多いIP帯を広く防ぐ仕組みのため、国内VPNでも対象に含まれる場合があります。

.htaccess でIP許可を書いても効かないのはなぜ?

アクセスが wp-login.php に到達する手前で、Xserver独自のセキュリティ設定が先に判定しているように見えるためです。つまり .htaccessRequire ip による許可よりも前段で制御されているため、効いていないように見えることがあります。

設定をOFFにするのと、ホワイトリスト登録はどちらが安全?

セキュリティ設定をすべてOFFにすると、防御そのものが弱くなります。一方、VPNの固定IPだけをホワイトリストに登録すれば、防御を維持したまま自分のアクセスだけを通せます。運用面では、ホワイトリスト登録の方が安全でおすすめです。

固定IPと動的IP、WordPress運用にはどちらが必要?

ホワイトリスト登録やGoogle Analyticsの自己アクセス除外のように「このIPだけ」を指定する運用では、IPが変わらない固定IPが向いています。ふだんの閲覧だけなら動的IPで十分ですが、管理画面を安定して守りたいなら固定IPが使えるVPNが安心です。

今回の学び|迷わないためのポイントまとめ

今回のトラブルで分かったことをまとめます。

  • .htaccess は万能ではない
  • Xserverには Apacheと連動しているように見える独自制御がある
  • FAQのコードは、公式に案内されている対処法の1つである
  • 今回は 管理画面でのホワイトリスト設定を採用した
  • VPNは、固定IPを使うための良い選択である

だからこそ、サーバー側の防御と、自分のアクセスをどう両立させるかを理解しておくことが大切だと感じました。

まとめ|VPNでログインできないときの確認手順

VPNを使うとWordPressにログインできないときは、

  • .htaccess を疑う前に
  • WordPressを疑う前に

まず、Xserverの「WordPressセキュリティ設定」を確認してみてください。SetEnvIf のコードが効いた理由を理解した上で、安全な設定(ホワイトリスト登録)に落とし込むことが大切です。

そして、その設定を安定させるには固定IPが使えるVPNが欠かせません。具体的なサービスの比較や使い勝手については、次のページで詳しく紹介しています。

【関連記事】結局どのVPNを選べばいい?

「固定IPって本当に必要?」「他のVPNと何が違うの?」と気になった方へ。私が実際に半年間使ってみた料金・速度・設定のリアルな感想を、デメリットも含めて1記事にまとめました。

今回の経験が、同じところで立ち止まっている方のヒントになれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

目次