Compass note

未踏の地へ踏み出すコンパス的エンジニアノート

Compass Note|ITエンジニアの羅針盤

私はこれで完璧!Windows 11 WSL2 で Ubuntu 最新版のプロキシ設定【apt, curl, Dockerまで】

* 本ページはプロモーションが含まれています

私は普段からWindows 11のWSL2(Windows Subsystem for Linux 2)を使ってUbuntu環境を構築し、開発や検証を行っています。企業ネットワークや特定の検証環境では、インターネットに接続するために「プロキシサーバー」の設定が必須となることがよくありますよね。これ、WSL2環境だと少し特殊な部分があって、私も試行錯誤を重ねてきました。

今回は、私がWindows 11上のWSL2でUbuntuの最新バージョン(Ubuntu 22.04 LTS や 24.04 LTS など)を利用する際に実践しているプロキシ設定の全てを、詳細に解説していきます。基本的な環境変数から、パッケージ管理の apt、ウェブ通信の curl、そして開発で使うことの多い Docker の設定まで、網羅的にまとめました。

この情報が、WSL2環境でのプロキシ設定にお悩みの方の助けになれば、私は非常に嬉しいです!


WSL2環境におけるプロキシ設定の基本概念

Windows 11のWSL2でプロキシを設定する際、私は以下のポイントを常に意識しています。

  1. WSL2は独立したVM: WSL2のUbuntuは、Windowsのネットワークから独立した仮想マシンとして動作します。そのため、Windows側のプロキシ設定がUbuntuに自動的に引き継がれるわけではありません。Ubuntu側で明示的に設定が必要です。
  2. IPアドレスの変動: WSL2のUbuntuインスタンスのIPアドレスは、Windowsを再起動するたびに変わることがあります。このため、特定のIPアドレスを指定する設定は避け、可能であればホスト名(DNS)で指定するようにしています。
  3. WindowsホストのIP取得: UbuntuからWindowsホストのIPアドレスを参照する必要がある場合、resolv.confnameserver 行などを利用します。
  4. 認証情報(ユーザー名/パスワード): プロキシに認証が必要な場合、URLに直接埋め込む形式が一般的ですが、履歴に残るためセキュリティに注意が必要です。私は環境変数として設定することが多いです。

1. Ubuntuの環境変数にプロキシを設定(最も基本)

これは、多くのコマンドラインツール(wget, curl など)やアプリケーションが参照する、最も基本的なプロキシ設定方法です。私はユーザーごとに設定することが多いので、~/.bashrc~/.profile に記述しています。

設定ファイルを選ぶ

  • ~/.bashrc: Bashシェルが起動するたびに読み込まれるファイル。対話シェルにのみ適用されます。
  • ~/.profile: ログイン時に一度だけ読み込まれるファイル。非対話シェル(スクリプト実行時など)でも環境変数を引き継ぎたい場合に有効です。私は ~/.bashrc で設定し、必要に応じて ~/.profile から ~/.bashrc をソースするようにしています。

今回は ~/.bashrc で設定を進めます。

  1. ~/.bashrc を編集 お好みのテキストエディタ(nanovim など)で ~/.bashrc を開きます。

    nano ~/.bashrc
    

    ファイルの末尾に以下の行を追記します。

    # Proxy settings
    export http_proxy="http://your.proxy.address:proxy.port/"
    export https_proxy="http://your.proxy.address:proxy.port/"
    export ftp_proxy="http://your.proxy.address:proxy.port/"
    export all_proxy="http://your.proxy.address:proxy.port/" # all_proxyも設定推奨
    export no_proxy="localhost,127.0.0.1,::1,your-internal-domain.local" # プロキシを通さないホスト
    
    • your.proxy.address: プロキシサーバーのIPアドレスまたはホスト名(例: 192.168.1.1 または proxy.example.com
    • proxy.port: プロキシのポート番号(例: 8080
    • username:password@: プロキシに認証が必要な場合は、http://username:password@your.proxy.address:proxy.port/ のようにユーザー名とパスワードを含めます。ただし、履歴に残るためセキュリティには注意が必要です。私の場合、認証が必要な場合は .bashrc に直接書き込まず、スクリプト実行時に環境変数として渡すか、ツールごとに設定することが多いです。
    • no_proxy: ローカルホストや社内ネットワークなど、プロキシを通したくないアドレスを指定します。カンマ区切りで複数指定可能です。
  2. ~/.bashrc の再読み込み 変更を反映させるには、現在のシェルで source コマンドを実行するか、新しいシェルを開き直します。

    source ~/.bashrc
    
  3. 設定の確認 正しく設定されたか、env コマンドで確認します。

    env | grep proxy
    

    期待通りのプロキシ設定が表示されれば成功です。

動作確認(wget/curl)

wgetcurl コマンドで外部サイトにアクセスできるか確認します。

wget https://www.google.com
curl -v https://www.google.com

Proxy request sent, awaiting response... のような表示があれば、プロキシ経由でアクセスできています。

2. apt(パッケージ管理)のプロキシ設定

Ubuntuでパッケージのインストールや更新を行う apt コマンドも、プロキシ環境下では設定が必要です。これはシステム全体に影響するため、sudo を使って設定ファイルを作成します。

  1. 設定ファイルの作成 /etc/apt/apt.conf.d/ ディレクトリ配下に、プロキシ設定を記述したファイル(例: 00proxyapt-proxy など)を新規作成します。ファイル名は任意の数字と文字でOKですが、数字が若い方が優先されます。

    sudo nano /etc/apt/apt.conf.d/00proxy
    

    ファイルに以下の内容を記述します。

    Acquire::http::Proxy "http://username:password@your.proxy.address:proxy.port/";
    Acquire::https::Proxy "http://username:password@your.proxy.address:proxy.port/";
    
    • username:password@ は、必要に応じて設定してください。
    • Acquire::no-proxy もここで設定できます。
    Acquire::http::Proxy "http://your.proxy.address:proxy.port/";
    Acquire::https::Proxy "http://your.proxy.address:proxy.port/";
    Acquire::no-proxy "localhost,127.0.0.1,::1,your-internal-domain.local";
    
  2. 動作確認 設定が正しく反映されたか、apt update コマンドでパッケージリストを更新してみます。

    sudo apt update
    

    エラーなく完了すればOKです。

3. Docker のプロキシ設定(WSL2ユーザーに特に重要!)

WSL2環境でDocker Desktop for Windowsを利用している方も多いと思います。Dockerもプロキシ経由でイメージのダウンロードなどを行うためには設定が必要です。この設定は、Ubuntuの環境変数とは別に、Dockerデーモン(dockerd)に対して行います。

方法1: Docker Desktop for Windows の設定(推奨)

Docker Desktop for Windowsを使っている場合、GUIからの設定が最も簡単で確実です。

  1. WindowsのタスクバーにあるDockerアイコンを右クリックし、「Settings」を選択します。
  2. 左側のメニューから「Resources」>「Proxies」を選択します。
  3. Manual proxy configuration」をオンにします。
  4. HTTP」と「HTTPS」の欄に、それぞれプロキシサーバーのアドレスとポート番号を入力します。(例: http://your.proxy.address:proxy.port
  5. No proxy」の欄には、プロキシを通したくないアドレスをカンマ区切りで入力します。
  6. Apply & Restart」をクリックしてDockerデーモンを再起動します。

方法2: Docker デーモンの設定ファイル(WSL2専用のdockerdを直接設定する場合)

もしDocker Desktopではなく、WSL2上のUbuntuに直接Dockerデーモンをインストールしている場合は、以下のファイルを編集します。

  1. Dockerデーモンの設定ファイルを作成または編集 /etc/systemd/system/docker.service.d/http-proxy.conf または /etc/docker/daemon.json を編集します。systemd を利用する場合は http-proxy.conf が推奨されます。

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
    

    ファイルに以下の内容を記述します。

    [Service]
    Environment="HTTP_PROXY=http://your.proxy.address:proxy.port/"
    Environment="HTTPS_PROXY=http://your.proxy.address:proxy.port/"
    Environment="NO_PROXY=localhost,127.0.0.1,::1,your-internal-domain.local"
    
    • 認証が必要な場合は、ここにも username:password@ を含めます。
  2. Dockerデーモンのリロードと再起動

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

動作確認(Docker)

Dockerイメージをプルできるか確認します。

docker pull hello-world

正常にイメージがプルできれば、Dockerのプロキシ設定も完了です。

まとめ:WSL2とUbuntuのプロキシ設定はこれで万全!

私はWindows 11のWSL2環境でUbuntuを常用していますが、プロキシ設定はIT作業において避けて通れない道です。今回の記事で、環境変数、aptcurl、そしてDockerという主要なツールでのプロキシ設定方法を網羅的に解説しました。

特にWSL2環境特有の注意点も交えながら解説したことで、皆さんの日々の開発や学習がよりスムーズに進むことを願っています。この設定さえ乗り越えれば、あとは快適なLinuxライフが待っていますよ!

もしこの記事が皆さんの役に立ったなら、私はとても嬉しいです。

関連記事

WSL2やUbuntuのプロキシ設定について、バージョン別の記事もあわせてご参照ください。