NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

注目のタグ

    プロキシサーバと仲良くしたい

    本記事は  【Advent Calendar 2025】  21日目の記事です。
    🌟🎄  20日目  ▶▶ 本記事 ▶▶  22日目  🎅🎁

    はじめに

    こんにちは、林です。
    業務では主にAWS上のスマホアプリ、Webアプリの構築・運用をしています。
    アドベントカレンダーということで、業務に通じる雑多なネタで書いてみようと思います。

    早速ですが、皆さんはWebプロキシと仲良くしていますか? プロキシを利用している環境も多いかと思いますが、よくプロキシに阻まれることはありませんか?
    インターネット上やリアルの声など、様々なところでプロキシに阻まれている人を見かけます。

    そこで、元々インフラエンジニアだった経験や知識を生かして、プロキシと少しでも仲良くなるための考え方を共有できればと思います。

    プロキシとは

    一言で説明すると、アクセスを代理してくれるサーバです。
    大きく分けて「フォワードプロキシ」「リバースプロキシ」の2種類に分類されます。

    • フォワードプロキシ:クライアント(ユーザ)の代わりに外部にアクセスをする
    • リバースプロキシ:Webサーバ(受け手)の代わりに通信を一次受けする

    ここではフォワードプロキシの解説をします。
    また、一言でプロキシといっても、ユーザ認証があったり、独自の証明書を持っていたり、ウイルススキャンをしていたり、プロキシごとにいろんな設定が存在します。

    プロキシサーバ

    プロキシを設定する箇所

    プロキシの設定ができる箇所は非常にたくさんあります。 主に設定する箇所は以下3パターンに分けられます。

    • PCの設定:主にブラウザなどが利用しています。PCのシステム設定です。
    • 環境変数:アプリケーションなどが自動で見ていることがあります。コマンドやコントロールパネルから設定します。
    • 各アプリケーション:アプリケーションが各々独自の設定を見ています。アプリケーション自体から設定できたり、どこかに設定ファイルが保存されていたりします。

    設定箇所がたくさんある上に、どのアプリがどこの設定を見るかなども曖昧になりがちです。 そこで、処理が「どこで」「なぜ」プロキシが通信を通してくれないかを確認し、適切にプロキシを通れるようにするために、エラー毎の原因切り分け方法を共有したいと思います。

    エラー毎の原因切り分け方法

    ※ここからは、プロキシより先の環境にはつながることは確認済とします。

    1. アクセスがタイムアウトする

    タイムアウトのエラーが出る場合、プロキシを経由できていない可能性が高いです。 設定箇所は多岐にわたるため、各アプリケーションで必要な設定箇所を洗い出してみてください。 特に、アプリケーション独自の設定ファイルはどこにあるのか、どこを参照しているのか等を確認する必要があります。

    例えば、gitに利用するgitconfigファイルについて、ユーザホームやGitのインストールディレクトリ等複数箇所に配置されていることがあります。どの設定が優先されるか確認する必要があります。
    思い当たるところをとりあえず登録してみましょう。とりあえず環境変数に設定を入れてみる、なども効果があることがあります。

    タイムアウトエラー

    2. 407の認証エラーが発生する

    407はユーザ認証のエラーです。認証プロキシを利用している場合、プロキシ認証用の設定が足りていない可能性があります。
    どこでユーザ・パスワードを設定しているかを確認する必要があります。1.のプロキシを設定していた箇所を中心にユーザ、パスワードが正しく設定されているか確認しましょう。

    端末の資格情報やアプリケーションのキャッシュに残り続けていて、そちらを使っている可能性もありますので、資格情報やキャッシュを削除してみるのも効果的です。

    407認証エラー

    3. SSL関連のエラーが発生する

    プロキシ上で、独自の認証局が発行した証明書を使っている場合に発生します。
    プロキシは中継以外にも、通信内容の解析のためにHTTPS通信を復号・再暗号化していることがあります。
    ユーザ⇔プロキシ⇔Webサーバという流れの中で、プロキシはユーザとのHTTPS接続を確立しますが、その時にプロキシ内の証明書を利用して暗号化を行います。 ユーザ側は応答を受け取ったとき、プロキシで利用している証明書に対応するルート証明書を信頼していないと、正当性を確認できないためエラーになります。

    日常でも、ブラウザでWeb検索をしているときに「このサイトへの接続は安全ではありません」のようなエラーを見たことはありませんか? 現在、そのような状態になっている可能性が高いです。
    この場合、ユーザ側にルート証明書をインストールしてあげる必要があります。
    どこで設定するかはアプリケーションによります。PCの証明書を見ている可能性もあれば、アプリケーションの設定ファイルが証明書を管理しているパターンもあります。 こちらも1.2.の設定箇所を中心に、証明書を追加で利用する方法を確認しましょう。

    証明書エラー

    4. そのほかのエラーが発生する

    プロキシのウイルススキャン等特殊な設定で引っかかっていたり、フィルターがかかっていたり、対向先のアプリケーションで引っかかっていたり、、考えられる原因はたくさんあります。 プロキシや実行アプリケーションのログを詳しく確認する必要があります。まずは相手先に通信が届いているかが大事です。

    最後に

    プロキシは設定箇所が非常にたくさんあるうえにエラー内容も確認しづらいため「設定したはずだけどうまくいかない」や「そもそも今どういう状況かが分からない」といったことが起きがちです。 また、これをやれば大丈夫という方法もないため、一つ一つ原因をつぶしていく他ありません。
    これだけですべてのエラーが解決するわけではありませんが、少しでも手助けになれば幸いです。
    もうすぐクリスマスなので、プロキシとも仲良くして、いい子にしてサンタさんを待ちたいと思います。

    執筆者:林朋弥
    2025 Japan All AWS Certifications Engineers
    趣味で走って跳んでるエンジニア