Compass note

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

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

私はこれで解決!Ubuntu 20.04 LTS プロキシ設定のすべて【WSL2環境での注意点も】

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

私は日々、ITに関する様々な技術に触れています。中でも、Linux環境、特にUbuntuは開発や検証で非常によく利用するOSです。企業内ネットワークや特定の環境下では、「プロキシ」の設定が必須となることが多々ありますよね。私もこれに悩まされてきました。

今回は、私が実際にUbuntu 20.04 LTS環境でプロキシ設定を行った際のノウハウを、備忘録も兼ねてまとめたいと思います。特に、Windows 10のWSL2上でUbuntuを動かしている方も多いと思いますので、その際の注意点も触れていきます。

設定がうまくいかずお困りの方の助けになれば幸いです。


まずは私のUbuntu 20.04 LTS 環境を確認

プロキシ設定を行う前に、念のため私のUbuntu環境のバージョンとカーネルを確認しておきます。皆さんの環境に合わせて適宜読み替えてくださいね。

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
$ uname -a
Linux <hostname> 4.4.0-18362-Microsoft #1049-Microsoft Thu Aug 14 12:01:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux

このUbuntu環境は、Windows 10のWSL2上で動かしています。そのため、カーネルがMicrosoftバージョンになっていることが確認できますね。WSL2環境でプロキシ設定をする場合、Windows側のネットワーク設定も考慮に入れる必要がありますが、今回はUbuntu側の設定に焦点を当てていきます。

Ubuntu 20.04 LTS におけるプロキシ設定の基本

ここでは、Ubuntu 20.04 LTS環境で各種コマンドやアプリケーションがプロキシを介して通信できるようにするための設定箇所を具体的に解説していきます。Ubuntuのバージョンによっては設定方法が変わることもあるので、もし新しいバージョンをお使いでうまくいかない場合は、最新の公式ドキュメントなども確認してみてください。

1. ユーザー環境変数としてプロキシを設定(.bashrc 編)

コマンドラインから利用するwgetやcurlなどのツールでプロキシを使用したい場合、ユーザーの環境変数として http_proxyhttps_proxy などを設定するのが一般的で、私が最もよく使う方法です。デフォルトのシェルがbashの場合、~/.bashrc に設定を追記します。

まずは、ご自身のシェルがbashであることを確認しましょう。

  1. ユーザーの利用シェルを確認

    $ env |grep sh
    SHELL=/bin/bash
    

    SHELL=/bin/bash と表示されればOKです。

  2. ~/.bashrc にプロキシ環境変数を追記 お好みのエディタ(viなど)で ~/.bashrc ファイルを開き、以下の行を追記します。

    $ vi ~/.bashrc
    export https_proxy="http://username:password@your.proxy.address:proxy.port/"
    export http_proxy="http://username:password@your.proxy.address:proxy.port/"
    export ftp_proxy="http://username:password@your.proxy.address:proxy.port/"
    
    • username: プロキシ認証のユーザー名
    • password: プロキシ認証のパスワード
    • your.proxy.address: プロキシサーバーのURLまたはIPアドレス
    • proxy.port: プロキシのポート番号 を、ご自身の環境に合わせて置き換えてください。認証がない場合は username:password@ の部分は不要です。
  3. .bashrc の読み込み 変更を反映させるには、以下のコマンドを実行して .bashrc を再読み込みします。新しいシェルを開き直しても反映されます。

    $ source ~/.bashrc
    
  4. セットしたプロキシ環境変数の確認 正しく設定されたか、env コマンドで確認してみましょう。

    $ env |grep proxy
    ftp_proxy=http://username:password@your.proxy.address:proxy.port/
    https_proxy=http://username:password@your.proxy.address:proxy.port/
    http_proxy=http://username:password@your.proxy.address:proxy.port/
    

    このように表示されれば成功です。

  5. wget で動作確認 実際にプロキシ経由で外部サイトにアクセスできるか、wget コマンドで確認します。

    $ wget https://yahoo.co.jp
    --2020-10-08 01:06:30--  https://yahoo.co.jp/
    Resolving your.proxy.address:proxy.port... 172.XX.XXX.1
    Connecting to your.proxy.address:proxy.port.. connected.
    Proxy request sent, awaiting response... 301 Redirect
    Location: https://www.yahoo.co.jp/ [following]
    --2020-10-08 01:06:30--  https://www.yahoo.co.jp/
    Connecting to your.proxy.address:proxy.port... connected.
    Proxy request sent, awaiting response... 200 OK
    Length: unspecified [text/html]
    Saving to: ‘index.html’
    
    index.html                         [ <=>                  ]  37.79K  --.-KB/s   in 0.05s
    
    2020-10-08 01:06:30 (725 KB/s) - ‘index.html’ saved [38698]
    

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

2. apt-get コマンドのプロキシ設定

Ubuntuでパッケージを管理する apt-get コマンドも、プロキシ環境下で利用するには別途設定が必要です。これはシステム全体に影響する設定なので、sudo を使って設定ファイルを作成します。

  1. /etc/apt/apt.conf.d/ 配下に設定ファイルを新規作成 30proxy という名前でファイルを作成するのが一般的です。sudo で作成しましょう。

    $ sudo vi /etc/apt/apt.conf.d/30proxy
    Acquire::http { Proxy "http://username:password@your.proxy.address:proxy.port/"; };
    Acquire::https { Proxy "http://username:password@your.proxy.address:proxy.port/"; };
    

    こちらも、ご自身の環境に合わせて情報を置き換えてください。

  2. apt-get update で動作確認 設定が正しく反映されたか、apt-get update コマンドを実行してパッケージリストを更新してみます。

    $ sudo apt-get update
    [sudo] password for user:
    Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
    Get:2 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
    # ...(中略)...
    Fetched 317 kB in 4min 4s (1298 B/s)
    Reading package lists... Done
    

    エラーなくパッケージリストの取得が完了すれば、apt-get がプロキシを通過できたことになります。これで、社内ネットワークからでもUbuntuのパッケージを更新できるようになりますね。

3. curl コマンドのプロキシ設定(補足)

curl コマンドは、前述の .bashrc に環境変数を設定しておけば基本的にプロキシ経由で動作します。私が普段使いするのもこの方法です。しかし、より細かく設定したい場合の他の方法もご紹介します。

  • おすすめ: ~/.bashrc に設定

    • 前述の .bashrchttp_proxyhttps_proxy を設定する方法です。この設定が最も汎用性が高く、多くのツールで利用できます。
    export http_proxy=http://taro:password@192.168.1.1:8080
    export https_proxy=http://taro:password@192.168.1.1:8080
    

    ファイル修正後は source ~/.bashrc を忘れずに実行してください。

  • コマンドに直接指定

    • 一時的に特定の curl コマンドだけプロキシを使いたい場合に便利です。
    $ curl www.yahoo.co.jp -x http://taro:password@192.168.1.1:8080
    

    -x オプションでプロキシサーバーを指定します。

  • ~/.curlrc に設定

    • curl コマンドのみにプロキシ設定を適用したい場合に利用します。
    proxy=http://taro:password@192.168.1.1:8080
    

    このファイルを保存した後、source ~/.curlrc を実行すれば反映されます。

まとめ:プロキシ設定で快適な開発環境を!

私は今回ご紹介した方法で、Ubuntu 20.04 LTS(特にWSL2環境)におけるプロキシ設定を無事に完了させることができました。企業や大学など、プロキシ環境下で開発や学習を進める方にとって、これらの設定は必須となる場面が多いと思います。

一度設定してしまえば、あとは快適にインターネット接続を伴う作業を進められます。もし設定で詰まってしまった場合は、この記事が皆さんの助けになれば、私にとってこれほど嬉しいことはありません。

これで、皆さんのUbuntu環境がより快適になることを願っています!

関連記事

Ubuntu / WSL2 の環境設定についてはこちらの記事も参考になります。