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

注目のタグ

    プロキシ設定まとめ

    本記事は  【Advent Calendar 2023】  24日目の記事①です。
    🎄  23日目  ▶▶ 本記事 ▶▶ 24日目記事② ▶▶  25日目  🎅

    お久しぶりです。ちょうど1年前に記事を書いた川畑です。 クリスマスイブにだけ現れる男として一部の方に認知されつつあります。

    はじめに

    本日はクリスマスイブですね。世界中の子供たちがサンタさんにプレゼントのお願いをしていることでしょう。でも11,12月くらいはサンタさんがプレゼントをくれるということで、子供たちは父母や祖父母に「これ買って~」というお願いを聞いてもらいづらくなりますよね。「サンタさんにお願いしようね~」的な感じでやんわり断られる子供も多いのではないでしょうか。図にしてみます。

    サンタさん経由でのみプレゼントリクエスト可能な図

    この図、なにかに似ていないでしょうか?そうです。認証プロキシです。なんということでしょう、サンタさんはプロキシサーバだったのです。

    弊社でも毎年若手が認証プロキシを突破できず、git cloneできなかったり、ツールのプラグインを入れられなかったりと苦労していますので、ここによく使うコマンド、ツールなどのプロキシ設定方法をまとめていこうと思います。対象はWindows10、wsl2(Ubuntu)です。

    設定方法一覧

    下記の記載についてはご自身の設定値に読み替えてください。

    • ${proxy_user}:認証プロキシのユーザID
    • ${proxy_password}:認証プロキシのパスワード
    • ${proxy_host}:認証プロキシサーバのIPアドレス
    • ${proxy_port}:認証プロキシサーバの接続先ポート番号

    環境変数

    環境変数に設定しておくと、勝手にその値を参照してくれるコマンドやツールも多くありますのでまず設定しておいて損はないと思います。 下記コマンドで設定するとターミナルを閉じた時点で設定が消えてしまうので、問題ない方は環境変数エディタ等で永続的に設定するのもいいでしょう。
    curl, ping, pip, npm, wget(wsl2 Ubuntuで確認)は私の環境では環境変数の設定で疎通できるようになりました。
    ※PowerShellのwgetはInvoke-WebRequestのエイリアスとして設定されているため別物です。

    windowsコマンドライン

    set http_proxy=http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}
    set https_proxy=http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}

    PowerShell

    $env:http_proxy="http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}"
    $env:https_proxy="http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}"

    wsl2(Ubuntu)

    export http_proxy=http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}
    export https_proxy=http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}

    wsl2は大文字、小文字を区別するので、HTTP_PROXY、HTTPS_PROXYのように大文字の環境変数も定義しておいた方が無難です。

    その他cli

    Gitコマンド

    Git cloneなどのGitコマンドについても、環境変数に設定していればその設定を読み込んでくれました。 うまくいかない場合は、下記の設定を試してみてください。
    コマンド実行

    git config --global http.proxy http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}

    もしくは~/.gitconfigファイル(C:\Users\{ユーザ名}\.gitconfig)に下記のように設定を追記

    [http]
            proxy = http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}
    [https]
            proxy = http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}

    Docker CE (wsl2 Ubuntu)

    wsl2でsystemdを有効にしている前提です。
    Dockerデーモン起動時に環境変数を設定するようにします。
    /etc/systemd/system/docker.service.d/override.conf を作成し、下記を記載します。(ファイル名は変更して構いません)

    [Service]
    Environment="HTTP_PROXY=http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}"
    Environment="HTTPS_PROXY=http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}"

    この設定でdocker pullなどの実行時にプロキシを突破できるようになります。

    続いてコンテナの中に環境変数を引き継ぐ方法です。
    ~/.docker/config.json に下記を記載します。

    {
        "proxies": {
        "default": {
          "httpProxy": "http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}",
          "httpsProxy": "http://${proxy_user}:${proxy_password}@${proxy_host}:${proxy_port}",
          "noProxy": ""
        }
      }
    }

    この設定でコンテナ生成時に環境変数として設定されます。

    ツール類

    Source tree

    ツール>オプション>ネットワーク で設定できます。基本は「OSデフォルトの設定を使用」で問題ないところが多いでしょう。

    Visual Studio Code

    基本的に環境変数を読み込んでくれるようです。 うまくいかない場合は、設定画面を開いて「HTTP: Proxy」を検索して下記にプロキシ情報を設定します。

    IntelliJ

    「Settings>Appearance & Behavior>System Settings>HTTP Proxy」で設定します。

    Eclipse

    「ウィンドウ>設定」を押下し、設定画面を開きます。「一般>ネットワーク接続」を選択するとプロキシの設定画面が開きます。 OS設定を利用するのであればアクティブ・プロバイダーを「ネイティブ」にしておけばよいようです。 手動で設定する場合は「マニュアル」に変更して、対象スキーマを選択し編集ボタンを押下すると設定できます。

    WinSCP

    これまでと毛色は違いますが、WinSCPで踏み台サーバ経由で接続するときなどに利用します。 設定したい接続先サイトを選択し、「編集>設定」の順に押下し、高度なサイトの設定画面を開きます。 「接続>プロキシ」からご自身の環境設定を行いましょう。

    おわりに

    備忘も兼ねて、あると便利なまとめページとして作成してみました。 この記事が読者の方と快適な環境をつなぐサンタさん(プロキシ)になれれば幸いです。

    それではまた来年のクリスマスイブにお会いしましょう。

    執筆者:川畑卓馬
    自分の犬が世界で一番かわいい生き物だと思っているシステムエンジニア