(0)目次&概説
(1) 記事の目的
(2) プロキシの基礎知識
(2-1) プロキシとは?
(2-2) なぜプロキシが必要?
(2-2-1) 特定コンテンツの許可(OUT)
(2-2-2) 特定コンテンツのブロック(IN)
(2-2-3) 匿名性の保持
(2-2-4) 帯域の節約
(3) リバースプロキシとは
(3-1) リバースプロキシとは?
(3-2) なぜリバースプロキシが必要?
(3-2-1) 負荷分散
(3-2-2) 攻撃に対する防御機能
(3-2-3) キャッシングによるWebサーバ負荷削減
(3-2-4) SSL負荷の軽減
(4) Windowsにおけるプロキシ(Win10の例)
(4-1) Windowsプロキシの調べ方(コマンド)
(4-2) Windowsプロキシの設定
(5) Linuxにおけるプロキシ
(6) ブラウザのプロキシ設定比較
(6-1) ブラウザ別バージョン情報
(6-2) ブラウザ比較結果
(6-3) おまけ:ブラウザ別プロキシ設定画面を開く方法
(6-3-1) Chrome
(6-3-2) Edge
(6-3-3) IE
(6-3-4) Firefox
(1) 記事の目的
プロキシの基礎的な知識を把握し、OSやブラウザにおける基本的な設定概要についても把握する事。
(2) プロキシの基礎知識
(2-1) プロキシとは?
(2-2) なぜプロキシが必要?
(2-2-1) 特定コンテンツの許可(OUT)
・特に会社や学校など組織においては、ファイアウォール等で外部サイトに接続出来ないように制限しているケースが多いですが、そうした場合もプロキシサーバにてフィルタルールを設定し、プロキシを経由する事でアクセスを許可する事ができます。
(2-2-2) 特定コンテンツのブロック(IN)
(2-2-3) 匿名性の保持
(2-2-4) 帯域の節約
・プロキシサーバはネット上のトラフィック(送受信データ/信号の量/密度)を圧縮したり、インターネットのウェブページやファイルをキャッシュしたりする事が出来ます。
・またウェブサイトが自身のクライアント端末に到達する前に広告を除外して連携する事も可能です(帯域の節約に貢献する)
(図221)
(3) リバースプロキシとは
(3-1) リバースプロキシとは?
・通常のプロキシとは逆に、リバースプロキシは1つ以上のWebサーバの前に立ち、外部(クライアント)から来るリクエストに対してインターセプトし、クライアントの代理としてWebサーバにリクエストを送り、レスポンスを受け取ります。
・両者は構造的には似ていますが目的が明確に異なっており、プロキシサーバは意味合いとしては「クライアントを外部から守る」目的で、リバースプロキシは「Webサーバを外部から守る」目的です。
(3-2) なぜReverse Proxyが必要?
(3-2-1) 負荷分散
リバースプロキシ流入するトラフィックを各サーバに分配する事によって負荷分散を実現する事ができます。
(3-2-2) 攻撃に対する防御機能
サーバ本体のIPアドレスが隠せるため、外部から直接アクセスされる事を防ぎ、Ddos攻撃などを抑止する事ができます。Ddos攻撃はDistributed Denial of Service Attackの略で、サーバに対して非常に高負荷を掛ける事でリソースを使い果たさせたり、サーバクラッシュさせたりして、オンラインサービスを利用不可に追い込む攻撃手法の一つです。
(3-2-3) キャッシングによるWebサーバ負荷削減
背後のWebサーバのコンテンツをキャッシュする事で、Webサーバの負荷を下げる事が出来ます。もしキャッシュされたページに対する問い合わせが来た場合は、Webサーバに問い合わせる事なく、自身にて静的ページを返却する事が出来る(Webサーバの負荷を下げる)
(3-2-4) SSL負荷の軽減
もしSSL方式による暗号化を実施している場合、SSLの終始点としての役割を果たす事が出来ます。具体的にはSSLの暗号化によって生じる負荷をWebサーバではなくProxyサーバにて引き取る事が出来ます。
SSLとはインターネットにおいてブラウザとWebサーバの間の送受信の通信を暗号化する方式です。例えば氏名、生年月日、住所やクレジットカードの情報などの個人情報を保護(盗聴や改竄防止)します。HTTPSプロトコルはHTTPプロトコルをSSL方式で暗号化したプロトコルで、URLの先頭が「https://」になっています。
(図321)リバースプロキシ
(4) Windowsにおけるプロキシ(Win10の例)
・プロキシの設定はイーサネット(TCP/IP規格、LANケーブル等)に接続した時やWiFiでネットワークに接続した時に有効になります。
(4-1) Windowsプロキシの調べ方(コマンド)
次のコマンドを実行します。
> netsh winhttp show proxy
実行結果(例)
※プロキシなしの場合
C:\WINDOWS\system32>netsh winhttp show prox 現在の WinHTTP プロキシ設定: 直接アクセス (プロキシ サーバーなし)。
(図411)
(4-2) Windowsプロキシの設定
ここで設定した内容はIE、GoogleChrome、Firefoxなどのブラウザを始めとして、「OSのプロキシ設定に従う」と設定されているアプリ全てにて適用されます。
(4-2-1) 設定画面の開き方
①Windowsの「設定」画面を開きます
(図421)①
②メニューから「プロキシ」を開きます。
(図421)②
(4-2-2) 手動プロキシ(プロキシサーバを使う)
・手動でプロキシサーバのIPアドレス(orホスト名)とポート番号を指定して有効化する方法です。
・またプロキシを「使わない」アドレスも指定する事ができ、例えば「AAA.local」といった自身の端末内のアドレスに対して、わざわざプロキシが使われないように除外設定を行う事もできます。
(図422)
(4-2-3) 自動プロキシ(セットアップスクリプト)
・プロキシ設定のためのスクリプトを使うための設定です。
・スクリプトのパス(アドレス≒URL)を指定する事で、スクリプトを利用するようになります。
・設定するパスについては企業や学校等の組織によって指定されているか、組織にて自動で設定されているケースが多い。
・スクリプトは「PACファイル」(Proxy Auto Configuration)と呼ばれ、下記はその最小単位(Proxy)のサンプルです。
・意味合いとしては、基本全てのページの閲覧を指定したサーバ名×ポート番号のプロキシを介するように指示しており、もしプロキシが応答に失敗した場合は直接接続を行うようになる。
function FindProxyForURL(url, host) { return "PROXY [ProxyServerName/IP]:[Port]; DIRECT"; }
(図423)
(4-2-4) 自動プロキシ(設定を自動的に検出する)
・WPADプロトコルはプロキシ設定の自動化を行うためのプロトコルで、ネットワーク内の多数のクライアント端末のプロキシ設定を集中管理、自動設定する際に企業などの組織で利用されています。
(5) Linuxにおけるプロキシ
LinuxのProxyの設定は適用する対象の種類によって、設定の方法が異なります。例えば「wget」や「curl」といったクライアントプログラムの場合、非シェルプロセスの場合、シェルプロセスの場合などで異なります。下表はその種類別の設定方法を書いた表です。
(表)
一時的 (環境変数) |
# export http_proxy=http://[Server Name]:[Port]/ | ・wgetやcurlといったコマンドラインプログラムに適用される |
恒久的:非シェルプロセス | # echo “http_proxy=http://[Server Name]:[Port]/” > /etc/environment | ・CentOS7やRHEL系OSで「永続的」に設定する際は左記コマンドで「/etc/environment」を編集 |
恒久的:シェルプロセス (bashやsh) |
# echo “export http_proxy=http://[Server Name]:[Port]/” > /etc/profile.d/http_proxy.sh | ・CentOS7やRHEL系OSで「永続的」に設定する際は左記コマンドで「/etc/profile.d/」を編集 |
(6) プロキシ設定のブラウザ別比較
下表は主要ブラウザ+Windowsについてプロキシ設定機能の比較を行った表になります。ブラウザに関してはバージョンによって仕様が大きく変わる部分があるため、比較を取ったバージョンについても記載します。
(6-1) ブラウザ別バージョン情報
Chrome | 83.0.4103.97 |
Edge | 83.0.478.54 |
IE | 11.900.18362.0 |
Firefox | 77.0.1 |
(6-2) ブラウザ比較結果
設定項目 | OS | Chrome | Edge | IE | Firefox | 備考 |
自動 ∟自動検出 |
〇 | – (*注1) |
– (*注1) |
〇 | 〇 | |
自動 ∟システム(OS)に従う |
- | 〇 | 〇 | - | 〇 | (*注1)ChromeとEdgeは筆者環境ではOS(Windows)の設定に従う形式でした(Windowsのプロキシ設定画面に遷移する) |
自動 ∟セットアップスクリプト (自動構成スクリプト) |
〇 | – (*注1) |
– (*注1) |
〇 | 〇 | |
手動 ∟プロキシ設定 |
〇 | – (*注1) |
– (*注1) |
◎ | ◎ | ・アドレス/ポートを指定可能 ・ローカルアドレスには適用しない設定が可能 ・プロキシを適用しないアドレスの指定が可能 ・IEはHTTP/FTP/Secure/Socksなど個別の詳細設定が可能 ・FirefoxもHTTP/HTTPS/FTP/Socksなど個別設定が可能 |
(6-3) おまけ:ブラウザ別プロキシ設定画面を開く方法
(6-3-1) Chrome
↓
↓
⇒OS(Windows 10)のプロキシ設定画面が開きます(Chrome独自のプロキシ設定はなく、完全にOS設定に従うように見える)
>目次にもどる
(6-3-2) Edge
↓
⇒OS(Windows 10)のプロキシ設定画面が開きます(Edge独自のプロキシ設定はなく、完全にOS設定に従うように見える)
(6-3-3) IE
↓
↓
(6-3-4) Firefox
↓
↓