@ai16voice (康裕 嵯峨)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Raspbian Busterでのプロキシ設定

解決したいこと

Raspbian Busterでのプロキシ設定
Raspbian GNU/Linux 10 (buster)
ID_LIKE=debian

Raspbian Busterでのプロキシ設定についてお尋ねします。
ブラウザを利用したいのですが、Raspbianバージョンにより
設定が異なるようで、Raspbian Stretch、 Raspbian Jessie、Wheezy用設定については情報が得られたのですが、
Busterでの設定情報については見当たらない状況です。

発生している問題・エラー

プロキシ環境で使用する場所が遠方なため、予めOS(マイクロSD)に必要なプロキシ設定を施した後にラズパイを送付する予定にしているため、現地でのトライ&エラーができない状況です。

Raspbian Busterでのプロキシ設定についてどなたか詳しい方、いらっしゃいましたら、アドバイスをお願いします。

Stretchの設定
$sudo nano /etc/environment
https_proxy=http://プロキシアドレスorサーバIPアドレス:ポート番号/
http_proxy=http://プロキシアドレスorサーバIPアドレス:ポート番号/
ftp_proxy=http://プロキシアドレスorサーバIPアドレス:ポート番号/

Jessie,Wheezyの設定
$sudo nano ~/.bashrc
export http_proxy=http://プロキシアドレスorサーバIPアドレス:ポート番号/
export https_proxy=http://プロキシアドレスorサーバIPアドレス:ポート番号/
export ftp_proxy=http://プロキシアドレスorサーバIPアドレス:ポート番号/

0 likes

1Answer

Buster では Stretch と同じように /etc/environment を編集してください。設定を有効にするにはログアウトが必要です。


設定が効いているかどうかを手元で確かめるには、適当なサーバを立ち上げてプロキシに設定する方法があります。

/etc/environment
http_proxy=http://localhost:8080 
bash
# Python で localhost:8080 にファイルサーバを立ち上げる。
$ python3 -m http.server 8080
Serving HTTP on :: port 8080 (http://[::]:8080/) ...

# プロキシを通るはずのリクエストを送ってみて、このサーバから以下のようなログが出たら成功。
# このサーバにプロキシ機能はないので404を返しているだけだが、通ることさえ確認できればよい。
::ffff:127.0.0.1 - - [14/Feb/2022 18:13:37] code 404, message File not found
::ffff:127.0.0.1 - - [14/Feb/2022 18:13:37] "GET http://example.com/ HTTP/1.1" 404 -
0Like

Comments

  1. @ai16voice

    Questioner

    etc/environmentでの編集、ご回答ありがとうございます<m(__)m>
    こちらで質問を上げさせていただいている間、設定方法について検索を続けていたところ
    以下のコメントをSlackで見つけました。
    このコメントではetc/environmentでの編集について、3行の追加を記述していますが、
    いかがでしょうか?
    As of Raspbian GNU/Linux 10 (buster), the syntax for defining environment variables has changed from the older syntax shown in other answers. The export keyword is no longer supported in the /etc/environment file, and causes errors like this:

    invalid variable name "export http_proxy", ignoring.

    Edit /etc/environment and set 3 lines to proxy both secure insecure requests:

    http_proxy="http://username:password@proxyaddress:port/"
    https_proxy="http://username:password@proxyaddress:port/"
    no_proxy="localhost,127.0.0.1"
  2. どのプロトコルをプロキシに通したいかで設定を選んでください。 HTTP, HTTPS, FTP を通すならそれぞれ http_proxy, https_proxy, ftp_proxy の設定が必要です。特定の IP アドレスかホストだけプロキシを通さないようにしたいなら no_proxy を設定します。
  3. @ai16voice

    Questioner

    @uasi様
    初心者にも分かりやすい丁寧な説明をして頂きありがとうございます<m(__)m>
    2点、確認させていただいてもよろしいでしょうか。
    1.認証(ユーザー名・パスワード)なしでapt用の設定、HTTP、HTTPS,FTPのプロキシを通す場合、以下の設定でよろしいでしょうか?
    sudo nano /etc/apt/apt.conf
    Acquire::http::proxy "プロキシアドレス又はサーバーIPアドレス:ポート番号/";
    Acquire::https::proxy "プロキシアドレス又はサーバーIPアドレス:ポート番号/";
    Acquire::ftp::proxy "ftp:// プロキシアドレス又はサーバーIPアドレス:ポート番号/";
    Acquire::socks::proxy "socks:// プロキシアドレス又はサーバーIPアドレス:ポート番号/";

    sudo nano /etc/environment
    http_proxy=http:// プロキシアドレス又はサーバーIPアドレス:ポート番号/
    https_proxy=http:// プロキシアドレス又はサーバーIPアドレス:ポート番号/
    ftp_proxy=http:// プロキシアドレス又はサーバーIPアドレス:ポート番号/
    2.この場合、大文字(FTTP,HTTPS,FTP)、小文字(http,https,ftp)それぞれの記述が必要でしょうか?

    お手数をおかけしますがアドバイスをお願いします。













  4. それでよさそうです。 apt は特に設定しなければ /etc/environment の http_proxy, https_proxy, ftp_proxy の値を見るので /etc/apt/apt.conf を編集する必要はないと思います。

    大文字の設定は不要です。小文字で書いてください。
  5. @ai16voice

    Questioner

    大変参考になりました。お時間を割いてコメントを返していただきありがとうございました。この設定(aptは設定しません)で進めてみます。
    Raspberry Piのオフィシャルサイトにはexport文を使用したラズパイの設定方法が紹介されていますが、Slackのコメントにあったように、これはbuster以降については使用できないという理解で宜しかったでしょうか?
    https://www.raspberrypi.com/documentation/computers/configuration.html#using-a-proxy-server
  6. その通りです。
  7. @ai16voice

    Questioner

    @uasi様
    丁寧なコメントありがとうございましたm(__)m
    Busterのプロキシ設定について、明確な情報が得られず途方に暮れていたので、大変助かりました。
    ありがとうございました。
    取り急ぎお礼まで。
  8. @ai16voice

    Questioner

    @uasi様
    度々恐れ入ります。再度もう1点確認したいのですが宜しいでしょうか?
    >特定の IP アドレスかホストだけプロキシを通さないようにしたいなら no_proxy を設定します。
    学校のネットワークから外へ出るためにプロキシを通す&学内にあるサーバへは直接接続。
    そこでno_proxy設定が必要になるかと思いますが、環境変数への以下の記述を追加すれば良いのでしょうか?
    no_proxy="localhost,127.0.0.1"
    お手数をおかけしますがよろしくお願いします。
  9. 直接接続したいホスト名や IP アドレスをカンマ区切りで no_proxy に加えてください。例: no_proxy="localhost,127.0.0.1,example.ac.jp,192.0.2.0"

    localhost と 127.0.0.1 はどちらもそのマシン自身を表すもので、普通は入れておくべきです。
  10. @ai16voice

    Questioner

    @uasi様

    no_proxyについて例まで挙げていただきありがとうございました<m(__)m>
    大変助かります。
    no_proxyも環境変数の設定に加えます。
    no_proxy文にはサーバIPアドレスの記述がなくても問題ないでしょうか?
    例)no_proxy="localhost,127.0.0.1"
    *予めOS(マイクロSD)に必要なプロキシ設定を施した後にラズパイを複数の場所に送付するのですが、プロキシアドレスとポート番号情報しか頂いていない学校があるためお尋ねしました。
    設定例
    http_proxy=http:// プロキシアドレス:ポート番号/
    https_proxy=http:// プロキシアドレス:ポート番号/
    ftp_proxy=http:// プロキシアドレス:ポート番号/
    no_proxy="localhost,127.0.0.1"
  11. 学内にあるサーバへアクセスするにもプロキシを経由することになりますが、おそらく問題ないでしょう。
  12. @ai16voice

    Questioner

    @uasi様
    本当に親切ですね。
    お忙しい中、ここまでお付き合いいただき、誠にありがとうございました。
    ご教授頂いた設定内容にて、ひとまず、各学校宛にラズパイを送付し、現地にて接続確認を行ってもらうよう進めます。
    取り急ぎお礼までm(__)m
  13. @ai16voice

    Questioner

    @uasi様
    この度はお世話になります。
    認証が必要なプロキシの場合の設定についてもお伺いできますでしょうか?
    生徒用データサーバがあり生徒用ID、パスワードなどが設定されている場合、以下のコマンド形式での設定が必要になりますでしょうか?
    http_proxy=username:password@proxy.address:proxy

    またラズパイへの固定IPアドレスの設定は必要でしょうか?

    お手数ですが、ご回答いただけると幸いです。
    よろしくお願い致します。
  14. http:// を含めて http_proxy=http://username:password@proxy.address:proxy としてください。

    ユーザー名やパスワードに記号を含む場合は個別にパーセントエンコード(URL エンコードとも言う)したものを設定してください。
    パーセントエンコードはこのページでできます https://www.tagindex.com/tool/url.html

    例えばユーザー名が「taro yamada」でパスワードが「pass:word!」なら
    http_proxy=http://taro%20yamada:pass%3Aword%21@proxy.address:proxy
    となります。

    固定 IP の設定は不要です。
  15. @ai16voice

    Questioner

    @uasi様
    ご返信ありがとうございました<m(__)m>
    ユーザー名、パスワードに記号を含む場合についてのエンコードについて、固定IPの設定についても了解しました。
    ありがとうございました(*- -)(*_ _)ペコリ
  16. @ai16voice

    Questioner

    @uasi様
    生徒用データサーバがあり生徒用ID、パスワードなどが設定されている学校様のテストを本日実施し、無事接続ができました。
    ありがとうございました。
    パーセントエンコードについての設定や固定IPアドレスの設定についても参考になりました。ありがとうございました。
    取り急ぎ結果のご連絡まで。
  17. おめでとうございます!
  18. @ai16voice

    Questioner

    ありがとうございます<m(__)m>
  19. @ai16voice

    Questioner

    @uasi様
    この度はお世話になります。ただいま、別学校様にて接続テスト中なのですが、今のところ接続ができません。
    *ユーザーID、パスワードの設定なし
    試した設定sudo nano /etc/environment
    設定1
    http_proxy=http:// プロキシアドレス:ポート番号/
    https_proxy=http:// プロキシアドレス:ポート番号/
    ftp_proxy=http:// プロキシアドレス:ポート番号/
    no_proxy="localhost,127.0.0.1"

    設定2
    http_proxy=http://サーバIPアドレス:ポート番号/
    https_proxy=http://サーバIPアドレス:ポート番号/
    ftp_proxy=http://サーバIPアドレス:ポート番号/
    no_proxy="localhost,127.0.0.1"

    環境の確認方法や対応可能な設定変更などあればお教えください。
    よろしくお願いいたします<m(__)m>
  20. @ai16voice

    Questioner

    @uasi様
    学校様から頂いている情報はサーバIPアドレス、プロキシアドレス、ポート番号、管理者パスワード、ドメイン名です。
  21. 方針としては設定1が正しいですが、 http:// とプロキシアドレスの間に半角スペースが入っているようです。実際の設定がそうなっているのであれば半角スペースを消してください。

    接続を確認するには以下のコマンドを実行してください。

    curl --verbose --head http://example.com

    正しく設定できていれば以下のように出力されます。

    * Uses proxy env variable http_proxy == 'http://プロキシアドレス:ポート番号/'
    * Trying プロキシアドレス...
    * TCP_NODELAY set
    * Connected to プロキシアドレス (プロキシアドレス) port ポート番号 (#0)
    > HEAD http://example.com/ HTTP/1.1
    > Host: example.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    > Proxy-Connection: Keep-Alive
    >
    < HTTP/1.1 200 OK
    HTTP/1.1 200 OK
    (略)

    もし http_proxy の設定がうまくいっていなければ、1行目の Uses proxy env variable http_proxy が出なくなります。

    また、設定はできているがプロキシサーバへの接続に問題があれば、3行目以降がいつまでも表示されなかったり、内容が異なったりするはずです。
  22. @ai16voice

    Questioner

    @uasi様 修正点のご指摘並びにcurl --verbose --head接続確認コマンドについて、出力情報の読み方についてアドバイス頂きありがとうございます<m(__)m>
    10日に再テストを予定しておりますので、半角スペースを消して、なお、接続ができない場合にはお教えいただいたコマンドを試してみます。
    こちらのコマンドですが、
    example.com部分はそのまま打ち込んで宜しかったでしょうか?
    curl --verbose --head http://example.com
    又はcurl --verbose --head http://実際のプロキシアドレス:ポート番号/'
    となりますでしょうか?
    お手数をお掛けして申し訳ありませんが、確認させてください。
    よろしくお願いいたします。



  23. このコマンドは実在の web サイト http://example.com/ に対しての接続を試みるものです。文字通りに入力してください。
  24. @ai16voice

    Questioner

    @uasi様
    貴重なお時間を割いてご回答いただきありがとうございました。
    example.comへの接続、了解いたしました。
    取り急ぎお礼までm(__)m
  25. @ai16voice

    Questioner

    @uasi様

    前回質問させていただいたのとは別の学校様なのですが、
    インターネット接続はできる。がプロキシ下でenv環境が使用できない 
    という状況があります。
    *プロキシ下でない環境ではenvが使用できます。
    【エラー内容】
    env環境に入れないエラー
    error root.grpc unavailable error
    【ラズパイから実行したコマンド】
    $ source env/bin/activate

    お手数をおかけしますが、改善策など、ご存じでしたらアドバイスをお願い致します。

  26. Python の virtualenv で作った env 環境ということでしょうか? 標準的な bin/activate は grpc を使わないはずですが。状況が分からないのでエラーの原因も分かりません。

    なんらかの理由で bin/activate から grpc を使っているとして、 env 環境でだけ grpc の接続に失敗しているとすると、 grpc がプロキシを使うように設定されていないか(自動的に http_proxy 環境変数を参照するはずなので考えづらいですが)、 grpc が必要とする HTTP/2 にプロキシが対応していないのかもしれません。
  27. @ai16voice

    Questioner

    @uasi様
    お忙しい中、ご回答頂きありがとうございますm(__)m
    いつもありがとうございます。
    Python の virtualenv で作った env 環境です。
    Google Assistant Serviceを利用した音声認識に使用します。
    https://developers.google.com/assistant/sdk/guides/service/python/embed/install-sample
    gRPC のAPIをプロキシ環境下でのenv環境で使えるような設定が別途必要になりますでしょうか?
  28. プロキシ側に何らかの設定をすべきかもしれませんが、これ以上は分からないので回答できません。必要なら新しく質問を投稿してください。
  29. @ai16voice

    Questioner

    @uasi様
    いつもありがとうございます。
    承知いたしました。
    先ほど、新しく質問を投稿しました。
    ここまでお付き合いいただき、本当にありがとうございました。
    色々参考になることがたくさんありました。
    取り急ぎお礼まで。

Your answer might help someone💌