« アップル:「iPhoneのピーク性能を落としていた件」540億円 | トップページ | NY原油先物価格ー初の「マイナス」って »

2020年4月20日 (月)

apt-cacher-ng:使用できないプロキシは無視したい

apt用キャッシュプロキシの構築 〜 apt-cacher-ng」の兄弟記事です。

前ページの設定まで行えば、aptキャッシュプロキシは利用できるんですが、実はこの設定で終わらせた場合、プロキシサーバが何らかの理由で落ちていると、debパッケージのインストールができません。

Apxy_004

この設定ではプロキシサーバは絶対経由しなければならんのですね。これはこれで面倒なのと、出先等で違うネットワークからパッケージをインストールする際も面倒になります。

ということで、プロキシサーバが利用できない場合、プロキシサーバを無視して直にパッケージを取りに行く設定の話をば。

Apxy_005

プロキシサーバを利用するホスト側で以下の2つの作業をします。
(上図で言うと、192.168.1.2 や 192.168.1.4 のホストにて)

①/etc/apt/apt.conf.d/以下に設定した
  Acquire::http::Proxy "http://プロキシサーバのIPやホスト名:3142";
 の書き換え。
②プロキシ選択判定のためのシェルスクリプトの作成

どちらから先にやってもいいんですが、説明上②からいきます。

/usr/local/bin/以下に自前で以下のシェルスクリプトを作成します。

(今回は「vi /usr/local/bin/apt-proxy-detect.sh」で作成。ファイル名は任意。)

#!/bin/bash
Proxy_Host=プロキシサーバのIPやホスト名
PORT=3142
if nc -w1 -z ${Proxy_Host} ${PORT};then
echo -n "http://${Proxy_Host}:${PORT}"
else
echo -n "DIRECT"
fi

Apxy_503_r

スクリプトを作成したら、実行権限を付与するのを忘れずに。

# chmod +x /usr/local/bin/apt-proxy-detect.sh

ちなみに、スクリプトの中身をざっくり説明すると、「nc -w1 -z ${Proxy_Host} ${PORT}」でプロキシサーバの3142ポートを調べて、プロキシサーバが生きているか確認しています。このコマンドでは、サーバが生きていれば0,死んでいれば1が返ってきます。
(「# nc -w1 192.168.1.3 3142 ; echo $?」とかやってみると確認可。)

結果、最終的にこのシェルにて、プロキシサーバが生きていれば「http://プロキシサーバのIPやホスト名:3142」が、プロキシサーバが死んでいれば「DIRECT」を返します。「DIRECT」は直にパッケージを取りに行くためのワードになります。

 

次に①の作業です。

以前、/etc/apt/apt.conf.d/以下に作成したプロキシを指定したファイルの1行を以下に書き換えます。

Acquire::http::Proxy-Auto-Detect "/usr/local/bin/apt-proxy-detect.sh";

Acquire::http::Proxy-Auto-Detect で、外部コマンド(ここではさっき作成した/usr/local/bin/apt-proxy-detect.sh)を指定します。

以上で作業は終了です。一応「# apt update」しておきます。

 

以後、プロキシが生きていればプロキシ経由で、プロキシが死んでいれば直にdebパッケージを取りに行くかと思います。(終)

 

※ おまけ

192.168.1.2(や192.168.1.4)を使用している最中にプロキシサーバが落ちた場合にて。

この場合、コンソールから

# apt update
# apt パッケージ名

とする分には問題が無いが、Apperによるインストールだと、なぜかエラーを起こしインストールできない。

一応、PCを再起動すればApperでもパッケージをインストールできるようになる。原因は不明だが、もしかしたらApperは毎回/etc/apt/apt.conf.d/以下のファイルを読みに行かないのかもしれない。まぁApperを使わない人には関係の無い話。

 

 

【参考ページ】
 ・Debian MANPAGE:apt.conf 
 ・How do I ignore a proxy if not available? 

 ・apt.confapt用proxyをrepositoryによっては使いたくないとき 
   リポジトリ別にプロキシを選択できるようにする設定が述べられている
   これを利用すれば、https のリポジトリなどのプロキシ使用の選択もできるかと。

 ・/usr/local/bin ‐ 通信用語の基礎知識 
 ・「/bin」「/usr/bin」「/usr/local/bin」ディレクトリの使い分け 
 ・Wikipedia:FHS ディレクトリ構造 

 

 

 

 

 

« アップル:「iPhoneのピーク性能を落としていた件」540億円 | トップページ | NY原油先物価格ー初の「マイナス」って »

サーバ」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2021年5月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ