proxyなネットワーク環境でのクライアント設定あれこれ

# Proxyなネットワーク
職場などでは，LANとインターネットの接続がNATではなく，HTTP Proxyによる接続のみ提供されている場合があります．このようなネットワークではproxyを利用するように適切な設定を行う必用があります．
proxy必須の環境にいて，どうやって設定するんだったけ?と忘れてしまうことも多いので，情報をまとめてみました

# Linux
## curl
`~/.curlrc`に設定を記述する．
```
proxy=http://proxy.example.co.jp:8080
```
## wget
`~/.wgetrc`に設定を記述する．
```
http_proxy=http://proxy.example.co.jp:8080/
https_proxy=http://proxy.example.co.jp:8080/
```
## git
git configを実行して，設定を保存する．
```
$ git config --global http.proxy http://proxy.example.co.jp:8080
$ git config --global https.proxy http://proxy.example.co.jp:8080
```
## Python(pip)
pipでパッケージをダウンロードする場合もproxyの指定が必用
```
$ pip --proxy http://proxy.example.co.jp:8080
```

## bash
```
$ export http_proxy=http://proxy.example.co.jp:8080
$ export https_proxy=http://proxy.example.co.jp:8080
```
`~/.bashrc`に追加してもよい．
## R
### R Studio
[Configuring R to Use an HTTP or HTTPS Proxy](https://support.posit.co/hc/en-us/articles/200488488-Configuring-R-to-Use-an-HTTP-or-HTTPS-Proxy)

## apt
`/etc/apt/apt.conf.d/`に設定ファイル,例えば`99proxy`に以下を記述
する．
```
Acquire::http::Proxy "http://proxy.example.co.jp:8080";
```

## yum 
`/etc/yum/yum.conf`に以下を追加．
```
proxy=http://proxy.example.co.jp:8080
```
## systemdから起動するサービス
#### serviceファイルへの追記
systemdから起動されるサービスでproxyの設定を行いたい場合，serviceファイルに以下を追加する．
```
[Service]
Environment=http_proxy=http://proxy.example.co.jp:8080
Environment=https_proxy=http://proxy.example.co.jp:8080
```
#### serviceファイルの読込，リスタート
```
# systemctl daemon-reload
# systemctl restart XXXXX.service
```
# MacOS
システム設定 > ネットワーク > Ethernet > 詳細 にプロキシの設定がある．
##### 自動プロキシ検出
+ DHCPやDNSで自動プロキシ構成ファイル(PAC)が取得できる場合に有効
##### 自動プロキシ構成
+ 自動プロキシ構成ファイル(PAC)のURLを指定
##### Webプロキシ(HTTP)
+ プロキシサーバのURLを指定
##### Webプロキシ(HTTPS)
+ プロキシサーバのURLを指定．プロキシサーバとの通信をHTTPSで行う場合
##### SOCKSプロキシ
+ SOCKSプロキシを利用する場合に指定
##### 簡易ホスト名を除外
---
Ethernetを利用している場合でProxyの設定が必須のネットワークと不要なネットワークを行き来する場合，自動プロキシ設定であればネットワークを切り替えてもプロキシの設定を変更しなくてすむ．
Wi-Fiを利用している場合は，SSID毎にProxyの設定を行う．

# Windows
設定 > ネットワークとインターネット > プロキシ にプロキシの設定がある．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233756/abdbb93f-f00b-2362-c142-f614ad60a56f.png)

##### 自動プロキシ セットアップ
+ DHCPやDNSで自動プロキシ構成ファイル(PAC)が取得できる場合に有効
##### セットアップスクリプトを使う
+ 自動プロキシ構成ファイル(PAC)のURLを指定
##### 手動プロキシ セットアップ
+ プロキシサーバのURLを指定

# iPadOS
設定 > Wi-Fi でSSIDを選択し，ⓘをクリックして詳細を表示する．
HTTPプロキシ構成で設定する．
##### 手動
+ プロキシサーバのURLを指定
##### 自動
+ DHCPやDNSで自動プロキシ構成ファイル(PAC)が取得できる場合に有効．ただしiPadOSの場合はpacファイルのURLも指定した方が動作が安定している(気がする)

# Android
設定 > Wi-Fi でSSIDを選択し，詳細画面でプロキシを設定する．
##### 手動
+ プロキシサーバのURLを指定
##### 自動
+ DHCPやDNSで自動プロキシ構成ファイル(PAC)が取得できる場合に有効．Androidの場合もpacファイルのURLを指定した方が動作が安定している(気がする)

# Proxyの自動設定
Proxyの自動設定に関する情報. 
Proxyの例外やアクセス先によって利用するプロキシを変更するなど細かくプロキシを制御したい場合は，自動設定を行うことで可能になる．
+ [PACファイルについて](https://jpdsi.github.io/blog/internet-explorer-microsoft-edge/pac/)
+ [WPADについて](https://jpdsi.github.io/blog/internet-explorer-microsoft-edge/wpad/)
+ [自動プロキシ構成スクリプト (PAC) を使用したパフォーマンスの最適化](https://learn.microsoft.com/ja-jp/previous-versions/troubleshoot/browsers/connectivity-navigation/optimize-pac-performance)
+ [プロキシー自動設定ファイル](https://developer.mozilla.org/ja/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file)
+ [Web Proxy Auto-Discovery Protocol draft-cooper-webi-wpad-00.txt](https://datatracker.ietf.org/doc/html/draft-cooper-webi-wpad-00)