はじめに
社内ネットワーク等、インターネット接続にプロキシを通す必要がある環境では、正しく設定をしないと各種ツールが動作しません。
特にLinuxはツール毎にプロキシ設定が必要な場合が多く、逐次調べていると大きく時間をロスしてしまいます。
そこで、このようなプロキシ環境でLinuxの各種ツールを利用する方法を、Debian系(Ubuntu等)、Red Hat系(RHEL、Amazon Linux等)での手法に分けてまとめたいと思います。
プロキシ設定が必要なツール
よく使う以下のツール類にプロキシを適用する手順を紹介します
- ブラウザ
- 環境変数
- パッケージ管理ツール(apt, yum)
- curl
- wget
- Git
- Docker
- Python環境構築
ブラウザ
Ubuntu20.04のブラウザでの設定例を紹介します (他OSでもデスクトップ環境が存在するものであればほぼ同様の設定が存在するはずです)
・「有線 接続済み」→有線設定→「ネットワークプロキシ」で「手動」を選択し、
HTTP Proxy
にhttp://プロキシのアドレス
とポート番号
(一般的に8080)を
HTTPS Proxy
にhttp://プロキシのアドレス
※とポート番号
(一般的に8080)
を記載する
※HTTPSプロキシも"http"で始まる場合が多いので注意
・FireFoxを開き、Google検索でインターネットに接続できればOK
環境変数
以下のコマンドで環境変数のプロキシを設定できます。
これにより環境変数からプロキシ情報を読み取るツールが使用できるようになります (大文字を使うツールと小文字を使うツールが存在するので、両方入れておくと無難です)
export http_proxy="http://プロキシのアドレス:ポート番号"
export https_proxy="http://プロキシのアドレス:ポート番号"
export HTTP_PROXY="http://プロキシのアドレス:ポート番号"
export HTTPS_PROXY="http://プロキシのアドレス:ポート番号"
上記だけではシェルを再起動すると環境変数が無効になってしまうので、以下コマンドで.bashrc
に登録することで再起動後もスタートアップで環境変数に登録できます (nanoやviで編集してもOKです)
echo 'export http_proxy="http://プロキシのアドレス:ポート番号"' >> ~/.bashrc
echo 'export https_proxy="http://プロキシのアドレス:ポート番号"' >> ~/.bashrc
echo 'export HTTP_PROXY="http://プロキシのアドレス:ポート番号"' >> ~/.bashrc
echo 'export HTTPS_PROXY="http://プロキシのアドレス:ポート番号"' >> ~/.bashrc
・以下のコマンドでプロキシ内容が表示されれればOKです
printenv http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
パッケージ管理ツール
パッケージ管理ツールはDebian系OS (Ubuntu, Debian, Raspberry Pi OS等)とRed Hat系OS (RHEL, CentOS, Amazon Linux等)で異なるため、それぞれ解説します
なお、現在のOSでは後述のapt.confやyum.confを設定しなくとも、上で設定した環境変数から自動で読み込んでくれる場合が多いようです (参考)。本項は念のため設定する程度の認識で良いでしょう。
Debian系
Debian系ではaptをパッケージ管理に使うので、そのプロキシ設定が必要です
・apt
以下のコマンドでapt.confを開きます
sudo nano /etc/apt/apt.conf
以下を記載してctrl+Xで保存します
Acquire::http::Proxy "http://プロキシのアドレス:ポート番号";
Acquire::https::Proxy "http://プロキシのアドレス:ポート番号";
・以下コマンドでaptでパッケージをアップグレードできればOKです
sudo apt update
sudo apt upgrade
Red Hat系
Red Hat系ではyumをパッケージ管理に使うので、そのプロキシ設定が必要です
・yum
以下のコマンドでyum.confを開きます
sudo nano /etc/yum.conf
以下を記載してctrl+Xで保存します
proxy=http://プロキシのアドレス:ポート番号
・以下コマンドでyumでパッケージをアップデートできればOK
sudo yum update
curl
curlはHTTPリクエスト等でデータを取得するツールで、多くの他ツールが間接的に利用しているため、プロキシ設定が必要となる場合が多いです。以下方法で設定します。
・curlが入っていなければ、以下コマンドでcurlをインストールします
sudo apt install curl
sudo yum install curl
・以下のコマンドで.curlrcを開きます
sudo nano ~/.curlrc
・以下を記載してctrl+Xで保存します
proxy=http://プロキシのアドレス:ポート番号
・以下で天気予報が帰ってくればOKです
curl wttr.in/Tokyo
wgetのプロキシ設定
wgetもcurlと類似した (curlとの差はこちら参照)HTTPリクエスト等でデータを取得するツールで、多くの他ツールが間接的に利用しているため、プロキシ設定が必要となる場合が多いです。以下方法で設定します。
・以下のコマンドで.wgetrcを開きます
sudo nano ~/.wgetrc
・以下を記載してctrl+Xで保存
http_proxy=http://プロキシのアドレス:ポート番号
https_proxy=http://プロキシのアドレス:ポート番号
Gitのプロキシ設定
今やプログラミングで必須と言える構成管理ツールであるGitですが、GitHubやGitLab等のリモートリポジトリとの連携にプロキシ設定が必要となります。以下方法で設定します。
・gitが入っていなければ、以下コマンドでgitをインストールします
sudo apt install git
sudo yum install git
・以下のコマンドでリモートリポジトリへのアクセス時はプロキシ経由となるようにします
git config --global http.proxy http://プロキシのアドレス:ポート番号
git config --global https.proxy http://プロキシのアドレス:ポート番号
・以下コマンドで、設定したプロキシが表示されれば成功です
git config --global -l
※なお、設定によってはアクセストークンが必要となる事もあるので以下参照下さい
Docker
Gitと同様にモダンな開発では必須とも言えるDockerですが、インターネット経由でpullする際にプロキシ設定が必要となります。以下方法で設定します。
・下記コマンドでdockerスタートアップ時の設定(systemd)を開きます
sudo mkdir /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
・開かれたファイルに下記を追記して保存します
[Service]
Environment = 'http_proxy=http://プロキシのアドレス:ポート番号' 'https_proxy=http://プロキシのアドレス:ポート番号'
・下記コマンドでDockerクライアントを設定します
mkdir ~/.docker
nano ~/.docker/config.json
・開かれたファイルに下記を記載します
(=の右側は実際のプロキシを記載)
{
"proxies": {
"default": {
"httpProxy": "http://プロキシのアドレス:ポート番号",
"httpsProxy": "http://プロキシのアドレス:ポート番号"
}
}
}
・以下コマンドでDockerを再起動します
systemctl daemon-reload
systemctl restart docker
・以下コマンドで docker pullできれば (Hello Worldが表示されれば)成功です
docker pull hello-world
Python環境構築
Pythonに関しては、以下の記事をご参照下さい