Linuxのプロキシ設定を確認・変更する方法|環境変数・APT・DNF・ブラウザー

Linuxのプロキシ設定は一か所に統一されているとは限りません。端末の環境変数、デスクトップ設定、APT・DNF、ブラウザー、サービスごとの設定を分けて確認します。この記事では、現在の設定を読む方法から、一時設定、永続化、接続確認、元に戻す際の注意までを整理します。組織のネットワークでは、承認されたプロキシと例外だけを使用してください。

目次

最初に対象を分ける:どのアプリの通信か

・curlなどのCLI:環境変数やコマンド固有のオプション。
・GNOMEなどのGUI:デスクトップのプロキシ設定を参照するアプリ。
・APT・DNF:パッケージ管理の専用設定と実行時環境。
・Firefox:ブラウザー内の接続設定。
・サービス・コンテナー:そのプロセスに渡された環境や製品設定。

同じPCでも、ブラウザーは開けるのにcurlやAPTだけ失敗することがあります。端末でexportした値が、すでに動いているGUIやサービスへ自動的に反映されるわけではありません。sudo経由でも環境がそのまま引き継がれるとは限らないため、実際に失敗するアプリの設定を確認します。

現在のプロキシ設定を確認する

現在のシェルから起動する処理へ渡される設定は、次のように確認できます。値にはユーザー名・パスワード・内部ホスト名が含まれる場合があるため、出力をそのままチャットや公開ログへ貼らないでください。

printenv | grep -i proxy

何も表示されなくても、アプリ独自の設定やデスクトップ側にプロキシがある可能性があります。反対に変数が表示されても、そのアプリが参照していることや接続成功の証拠にはなりません。

Bashの設定元を調べる場合は、存在するファイルの該当行を読みます。これは候補の確認であり、すべてが現在のシェルで読み込まれているとは限りません。

grep -in proxy ~/.bashrc ~/.bash_profile ~/.profile /etc/profile /etc/environment

存在しないファイルのエラーは、プロキシ障害を意味しません。Bash以外のシェルやディストリビューションでは設定ファイルが異なります。/etc/environmentはシェルスクリプトではなく、export行をそのまま入れる場所ではありません。

DNS設定とNetworkManagerのプロキシ設定を混同しない

「nmcli device show」で表示されるIP4.DNSはDNSサーバーの情報です。これをgrepしてもHTTPプロキシの設定は確認できません。NetworkManagerの接続プロファイルにはproxy設定があり、none/autoとPACなどを扱いますが、デスクトップの手動HTTPプロキシ設定と同一ではありません。利用環境のNetworkManagerとデスクトップの資料を分けて確認してください。

環境変数で一時設定する:HTTPプロキシの例

次はHTTPプロキシを使う例です。ホスト名・ポート・除外先は管理者から案内された値へ置き換えます。例示のアドレスへ実際の資格情報を入力しないでください。

export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1"

https_proxyの名前はHTTPSの接続先に使う設定を意味します。値の先頭のhttp://は「プロキシとの接続方式」です。HTTPプロキシ経由でHTTPSサイトへ接続する場合は、通常CONNECTトンネルが使われます。https://proxy…と書くのはプロキシ自体へのTLS接続を使う場合であり、接続先がHTTPSだから自動的に付け替えるものではありません。

curlはhttp_proxyを小文字だけで受け付けます。HTTPS_PROXYなど他の変数やALL_PROXYへの対応・優先順位はアプリによって異なります。no_proxyはプロキシを経由しない宛先で、組織が許可した直接接続先だけを指定します。開けないサイトを手当たり次第に追加するものではありません。

通信を確認してから永続化する

curlで確認する場合は、管理者が許可したテストURLを使います。以下のURLは例です。-IはHEADリクエストなので、サービスによっては拒否されます。その応答だけでプロキシ故障と断定しないでください。

curl --connect-timeout 10 --max-time 30 -I https://example.com/

接続経路を詳しく見る必要がある場合はcurlの-v出力などで接続先やCONNECTの応答を確認します。ただし認証・内部アドレスなどを含むことがあり、ログは保護してください。サイトが開くだけでは経路の証明にならないため、必要に応じて管理側のプロキシログも照合します。証明書エラーを-kで無視して解決したことにしないでください。

Bashで永続化するなら、元ファイルをバックアップしたうえで、利用するセッションで読まれる設定ファイルの既存行を編集します。~/.bashrcへ同じexportを繰り返し追記すると、重複や古い値が残ります。追記スクリプトを何度も実行せず、変更箇所を一つにまとめます。ログインシェルと対話シェルでは読み込み順も異なります。

スクリプトを通常実行してその中でexportしても、親のターミナルの環境変数は書き換わりません。自分で内容を確認した設定ファイルを現在のシェルへ読み込む場合と、子プロセスとしてスクリプトを実行する場合を区別します。パスワードをURLやシェルの履歴に埋め込まず、認証方式は組織の安全な手順に従ってください。

GNOMEのGUIで設定する場合

GNOMEでは「設定」→「ネットワーク」→「ネットワークプロキシ」などの項目から、無効・手動・自動の方式を選びます。手動では案内されたホストとポート、自動では承認されたPACのURLを指定します。メニュー名や位置は環境によって異なります。Wi-Fi接続のDNS欄へプロキシを入れる操作ではありません。

この設定を利用するかはアプリ側に依存します。設定後は対象アプリを開き直して実際の通信を確認し、GUIの値がprintenvへ自動反映されるとは考えないでください。プロキシ設定だけの確認で、リモート作業中のネットワーク接続を不用意に切断しないようにします。

APTのプロキシ設定:Debian・Ubuntu系

APT専用設定を使う場合は、管理者が既存の設定を確認してから/etc/apt/apt.conf.d/配下の設定ファイルを編集します。HTTPプロキシの例は次のとおりです。既存ファイルを無条件に上書きせず、変更前の内容を保存してください。

Acquire::http::Proxy "http://proxy.example.com:8080";
Acquire::https::Proxy "http://proxy.example.com:8080";

末尾のセミコロンを含め、APT形式で記述します。http_proxyを参照する場合もありますが、sudo実行時の環境やAPT専用設定の影響を確認してください。認証が必要な場合は、URIへ平文パスワードを書いて共有するのではなく、APTのapt_auth.confなど提供元の認証情報管理方法を確認します。設定表示や診断ログにも秘密が出る可能性があります。

DNF・yumのプロキシ設定

DNFでは通常/etc/dnf/dnf.confの[main]が全体設定、リポジトリーごとの設定が個別設定です。導入されているDNFの版とディストリビューションの案内を確認し、既存の[main]内でproxyの値を設定します。下記は構文例であり、ファイル全体を置き換えるものではありません。

[main]
proxy=http://proxy.example.com:8080

リポジトリー側の値が優先される場合があります。ファイル末尾へ無条件に追記すると、別セクションへの設定になり得るので注意してください。旧yumを使う環境は/etc/yum.confなど当該版の設定を確認します。yumというコマンド名でもDNFを利用する環境があり、単に「Red Hat系なら旧yum」とは判断できません。認証情報の保存先とファイル権限は管理者が確認し、パスワード入りの設定例をそのまま配布しないでください。

Firefox・Chrome・Edgeはアプリ側も確認する

Firefoxは「設定」→「一般」→「ネットワーク設定」の設定ボタンで、システムのプロキシ設定を利用する方式、手動、自動設定URLなどを確認できます。システム設定と違う方式を選んでいれば、CLIと結果が異なります。現在の画面にあるHTTP・HTTPS・SOCKSなどの項目と提供元の説明に従い、旧版のFTP欄を探す必要はありません。

ChromeやEdgeなどChromium系のLinux版は、デスクトップ環境や起動設定・組織ポリシーによって設定元が異なります。「設定」内でプロキシ項目を探し、対象デスクトップの設定と管理状態を確認します。GUIを持たない環境を含め、すべてのLinuxで同じ設定ダイアログが開くとは限りません。管理ポリシーを起動フラグで回避しないでください。

失敗したときと元に戻すとき

接続できない場合は、対象アプリ、実行ユーザー、プロキシ名・ポート、認証方式、PAC、除外指定、エラー全文を確認します。407はプロキシ認証、名前解決やタイムアウトは接続経路、証明書エラーは信頼設定などを切り分ける手がかりです。ファイアウォール無効化やプロキシ回避を先に試すのではなく、管理者へ必要な情報を伏せず安全な経路で伝えます。

一時exportした値を戻す場合は、変更前に存在した値があれば元の値へ戻します。新しく追加した小文字変数だけを消す例は次のとおりです。大文字変数、ALL_PROXY、専用設定、GUI側の設定が残れば別途参照される可能性があります。

unset http_proxy https_proxy no_proxy

永続設定は自分が変更した箇所だけを戻し、ファイル全体を削除しないでください。対象アプリを開き直し、同じ通信で確認します。シェル設定、APT設定、ブラウザー設定を一度に変更せず、一つずつ結果を記録すると原因を追いやすくなります。

公式情報

curl:プロキシ環境変数
curl:proxyオプション
GNOME:プロキシ設定
NetworkManager:proxy設定
APT:HTTP transport
DNF:設定リファレンス
Firefox:接続設定

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次