2015年4月6日月曜日

プロキシ(Proxy)環境下での本書の演習の実行

はじめに

職場や学校などでは、ネットワークに接続するためにプロキシ(Proxy)サーバーと呼ばれるものを介する場合が多いと思います。そのような環境下では、本書でネットワーク接続を必要とする演習をそのままでは実行できません。

下記の設定を行えば、全ての演習を実行できるようになりますが、上級者向けの内容ですので、職場や学校のネットワーク管理者など、ネットワークに詳しい方と一緒に作業することをお勧めします。

aptコマンド

ソフトウェアのインストールの際などに実行するaptコマンドを用いるための方法です。

まず、ターミナルソフトウェアLXTerminalを起動し、以下のようにテキストエディタleafpadで設定ファイル/etc/apt/apt.confを作成します。
$ sudo leafpad /etc/apt/apt.conf
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
$ sudo mousepad /etc/apt/apt.conf
このファイルに下記の内容を記述します。「プロキシサーバー名」や「ポート番号」は環境によって異なりますので、ネットワーク管理者にお尋ねください。
Acquire::http::proxy "http://プロキシサーバー名:ポート番号/";
Acquire::https::proxy "https://プロキシサーバー名:ポート番号/";
Acquire::ftp::proxy "ftp://プロキシサーバー名:ポート番号/";
Acquire::socks::proxy "socks://プロキシサーバー名:ポート番号/";
記述が終わったら、ファイルを保存してからleafpadを閉じてかまいません。

以上で、「sudo apt install (パッケージ名)」、「sudo apt update」などのコマンドが実行できるようになります。

wgetコマンドやブラウザなど (Raspbian Stretch編)

次に、ファイルのダウンロードなどで用いるwgetコマンドや、ブラウザを利用するための方法です。まずは、RaspbianのStretch用の方法を記します。

ターミナルソフトウェアLXTerminalを起動し、以下のように管理者権限のテキストエディタleafpadで設定ファイル/etc/environmentを編集用に開きます。
$ sudo leafpad /etc/environment
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
$ sudo mousepad /etc/environment
Raspbianのバージョンにもよりますが多くの場合 /etc/environment は何も書かれていない空のファイルですので、そのまま以下の3行を記入してください。「プロキシサーバー名」や「ポート番号」は環境によって異なりますので、ネットワーク管理者にお尋ねください。もし何かが書かれていた場合も、その内容を壊さないように注意しながら、ファイルの末尾に以下の内容を記します。
http_proxy=http://プロキシサーバー名:ポート番号/
https_proxy=http://プロキシサーバー名:ポート番号/
ftp_proxy=http://プロキシサーバー名:ポート番号/
以上の設定を記述したらファイルを保存してleafpadを閉じます。この設定を読み込むためにRaspberry Piを再起動してください。再起動後、ブラウザでインターネット上のウェブサイトを閲覧できるようになっているはずです。

wgetコマンドやブラウザなど (Raspbian Jessie および Wheezy編)

同じく wgetコマンドやブラウザを利用するための、 Raspbian Jessie や Wheezy 用の方法を記します。

ターミナルソフトウェアLXTerminalを起動し、以下のようにテキストエディタleafpadで設定ファイル.bashrcを編集用に開きます。
$ leafpad .bashrc
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
$ mousepad .bashrc
.bashrcファイルは既存のファイルなので様々な内容が書かれています。この内容を壊さないように注意しながら、ファイルの末尾に下記の内容を追記します。「プロキシサーバー名」や「ポート番号」は環境によって異なりますので、ネットワーク管理者にお尋ねください。
export http_proxy=http://プロキシサーバー名:ポート番号/
export https_proxy=http://プロキシサーバー名:ポート番号/
export ftp_proxy=http://プロキシサーバー名:ポート番号/
以上の設定を記述した後、この設定を読み込む必要がありますが、そのためにはRaspberry Piを再起動してしまうのが簡単です。

再起動後、ブラウザでProxyを有効にするにはターミナルからコマンドでブラウザを起動しなければなりません。ご注意ください。
Chromiumブラウザの場合
chromium-browser &
epiphanyブラウザの場合
epiphany &

gitプロトコルに対するgitコマンド

以上で本書の内容のほとんどを実行できるようになりましたが、wiringPiをインストールするために本書213ページで紹介したコマンド「git clone git://git.drogon.net/wiringPi」だけはまだ実行できません。それを可能にする方法を記します。なお、NOOBS 1.4.2以降に含まれるRaspbian(JessieまたはStretch)には、wiringPiはデフォルトでインストールされていますので、上記コマンドの実行の必要はありませんのでご注意ください。

まず、ターミナルソフトウェアLXTerminalを起動し、以下のようにcorkscrewというコマンドをインストールします。
$ sudo apt-get install corkscrew
次に、以下のようにテキストエディタleafpadでホームディレクトリ上にgit-proxy.shという名前のファイルを作成します。
$ leafpad git-proxy.sh
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
$ mousepad git-proxy.sh
この中に、下記のような3行を記します。「プロキシサーバー名」や「ポート番号」は環境によって異なりますので、ネットワーク管理者にお尋ねください。
#!/bin/bash
CORKSCREW=`which corkscrew`
$CORKSCREW プロキシサーバー名 ポート番号 $1 $2
記述したら保存してからleafpadを閉じて構いません。次に、そのままLXTerminal上で下記のコマンドを実行し、git-proxy.shを実行可能ファイルにします。
$ chmod a+x git-proxy.sh
最後に、leafpadで設定ファイル.bashrcを開きます。
$ leafpad .bashrc
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
$ mousepad .bashrc
このファイルの末尾まで移動し、下記の1行を追記します。
export GIT_PROXY_COMMAND=/home/pi/git-proxy.sh
記述したら保存してleafpadを終了します。その後、Raspberry Piを再起動して設定を再読み込みすれば、 wiringPiのダウンロード用のコマンド
$ git clone git://git.drogon.net/wiringPi
が実行できるようになっているはずです。

時刻合わせ

プロキシ環境下ではRaspberry Piの時刻合わせが機能しない場合が多いと思います。そのような場合、もし職場や学校内に時刻合わせサーバーが存在すれば、下記の方法で時刻を合わせることができます。

まず、RaspbianのStretch (NOOBS 2.4.3)以降の場合です。 時刻合わせにsystemd-timesyncdが用いられていますので、その設定を行います。 leafpadで設定ファイル/etc/systemd/timesyncd.confを開きます。
$ sudo leafpad /etc/systemd/timesyncd.conf
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
$ sudo mousepad /etc/systemd/timesyncd.conf
ファイル内で下記のような箇所を見つけます。
(略)
[Time]
#NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3
.debian.pool.ntp.org
このうち、NTPに関する行の先頭の「#」を削除し、「=」の右辺にお使いの時刻合わせサーバーを記述します。 時刻合わせサーバが存在するかどうかはネットワーク管理者にお尋ねください。
記述後、Raspberry Piを再起動すれば時刻が合うようになります。

一方、RaspbianのWheezy/Jessie (NOOBS 2.4.2まで) の場合、時刻合わせにntpdが用いられていますので、その設定を行います。
leafpadで設定ファイル/etc/ntp.confを開きます。
$ sudo leafpad /etc/ntp.conf
ファイル内で下記のような箇所を見つけ、編集します。時刻合わせサーバが存在するかどうかはネットワーク管理者にお尋ねください。
(略)
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server その環境の時刻合わせサーバ  ←時刻合わせサーバが存在すれば記す

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
#server 0.debian.pool.ntp.org iburst  ←ここは#でコメントアウト
#server 1.debian.pool.ntp.org iburst  ←ここは#でコメントアウト
#server 2.debian.pool.ntp.org iburst  ←ここは#でコメントアウト
#server 3.debian.pool.ntp.org iburst  ←ここは#でコメントアウト
(略)
記述後、Raspberry Piを再起動し、数分待てば時刻が合うようになります。

カーネルやファームウェアのアップデートに用いるrpi-updateコマンド

Raspberry Piのカーネルやファームウェアのアップデートにはrpi-updateと呼ばれるコマンドを用いますが、やはりプロキシ環境下では実行できません。 本書内ではこのコマンドを使いませんが、参考のためにその方法を記しておきます。

ターミナルソフトウェアLXTerminalを起動し、ホームディレクトリで以下のコマンドを順に実行します。
$ sudo -E rpi-update
補足すると、「-E」というオプションを付ける必要があるというわけです。

プロキシ(Proxy)環境下での本書9章と10章の実行

さて、以上で本書の内容をプロキシ環境下で学べるようになりましたが、9章と10章を学ぶ際にはもう一点、注意すべきことがあります。

これらの章では、PCやスマートフォンのブラウザを通して、同一ネットワーク内のRaspberry Piにアクセスし、回路を制御します。この際の模式図が下図です。このPCやスマートフォンでは、通常のインターネットへのアクセスの際にプロキシサーバを経由しなければなりませんが、同一ネットワーク内のRaspberry Piへアクセスする場合は、プロキシサーバーを経由せず直接アクセスせねばなりません。

そのために、Raspberry PiのIPアドレス(ここでは192.168.1.3とします)を「プロキシの例外サイト」としてあらかじめ登録しておく必要があります。


Windowsの場合の例外サイトの設定法を示したのが下図です。「インターネットオプション」から「LANの設定」を辿るとプロキシサーバーを設定できます。さらに「詳細設定」ボタンをクリックすることで、例外サイトを設定できます。図では192.168.1.3が登録されていることがわかるでしょう。


この「例外サイト」の設定はMac OSXにも存在します。「システム環境設定」→「ネットワーク」
→「詳細」→「プロキシ」です。

しかし、iOS(iPhoneやiPad)の場合、この例外サイトの設定は存在しないため、iOSでプロキシの設定自体を無効にする(すなわち、上の図でインターネットへのアクセスができない状態にする)しかありません(pacファイルと呼ばれるものをサーバーに設置してこの問題を回避する方法もありますが、ここでは割愛します)。

androidの場合、Wifiの設定に例外サイトの設定があるのですが、この設定が機能しないことも多く、やはりプロキシの設定を無効にしてRaspberry Piにアクセスせざるを得ない場合があります。

2 件のコメント:

  1. 記事を拝見しました。
    ラズパイ3bを学校の有線ネットワークに繋げたいのですが、プロキシサーバーアドレスとポート番号に加えてユーザー名、パスワードなどの認証情報が必要な場合の設定はどのようになりますか?

    返信削除
    返信
    1. 下記サイトの情報が参考になるのではないでしょうか。
      ただし、私は試しておりませんのでご注意ください。

      https://qiita.com/showsuzu/items/9ee031208d38ff8ac889

      削除