私は日々、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_proxy や https_proxy などを設定するのが一般的で、私が最もよく使う方法です。デフォルトのシェルがbashの場合、~/.bashrc に設定を追記します。
まずは、ご自身のシェルがbashであることを確認しましょう。
ユーザーの利用シェルを確認
$ env |grep sh SHELL=/bin/bashSHELL=/bin/bashと表示されればOKです。~/.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@の部分は不要です。
.bashrcの読み込み 変更を反映させるには、以下のコマンドを実行して.bashrcを再読み込みします。新しいシェルを開き直しても反映されます。$ source ~/.bashrcセットしたプロキシ環境変数の確認 正しく設定されたか、
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/このように表示されれば成功です。
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 を使って設定ファイルを作成します。
/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/"; };こちらも、ご自身の環境に合わせて情報を置き換えてください。
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に設定- 前述の
.bashrcにhttp_proxyとhttps_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 の環境設定についてはこちらの記事も参考になります。