
鶴長 鎮一
2005/5/17
| テンプレート8 透過型プロキシの実現(ルータと同一サーバ) |
バックボーンの節約などを目的とした外部ネットへの接続リソースを抑える手段として、HTTPのプロキシサービスがあります。しかし、この方法はクライアント側に設定の煩わしさが付きまといます(注)。
| 注:一部のWebブラウザにはプロキシの自動設定機能があります。 |
DNATを使用すると、Webブラウザ側で設定を行わなくても強制的にプロキシサーバを使用させることができます。まずはサーバの追加投資が掛からない方法として、Linuxルータにプロキシサービスを実装した透過型プロキシを実現します。
■テンプレート8の想定環境
![]() |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
テンプレート8の表示(このウィンドウ) テンプレート8の表示(別ウィンドウ) テンプレート8(template08.sh)のダウンロード |
■テンプレート8の解説
iptablesの設定を行う前に、Linuxルータでプロキシサービスを起動しておきます。今回はSquidを使用し、squid.confを下記のように設定しています。
acl our_networks src 192.168.0.0/24 #Proxyを利用する内部ネットの定義 |
| squid.conf |
なお、Webブラウザでプロキシサーバを指定する方法で動作を確認できているとしても、設定によっては透過型プロキシとして動作しない場合もあります。
上記以外はデフォルト値を利用しており、サービスポートもTCP 3128のままです。shスクリプトにその旨を定義しておきます。
9 proxy_port='3128' |
LinuxルータでSquidを動作させるため、TCP 3128の解放が必要です。「eth1から入ってeth1へ出ていくパケットを無制限にする」などいろいろ方法はありますが、ここではsshの例を基に56、57行目を追加します。sshの50行目の設定は、サービスにかかわらず実行は1度でよいため、プロキシでは省いています。
56 iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -s $internal_ip -d $my_internal_ip --dport $proxy_port -j ACCEPT |
内部ネット各ホストのデフォルトルータがLinuxルータになっているため、外部へ出るパケットはすべてLinuxルータを経由します。そこで、パケットがLinuxルータを通る際に、ディスティネーションポートがTCP 80のものをLinuxルータのプロキシサービスポート(TCP 3128)に向けます。これで、ユーザーに意識させることなくプロキシサービスを利用させることができます。
67 iptables -t nat -A PREROUTING -i eth1 -s ! $my_internal_ip -p tcp --dport 80 -j DNAT --to-destination $my_internal_ip:$proxy_port |
| -A PREROUTING | PREROUTINGチェインの使用 | ||
| -j DNAT | DNAT(ディスティネーションアドレスの書き換え)の使用 | ||
| -s ! $my_internal_ip | ソースアドレスがLinuxルータの内部ネット側(eth1)アドレス以外のもの | ||
| --to-destination $my_internal_ip:$proxy_port | 書き換え先のディスティネーションアドレス(サービスポート番号付き) |
HTTP/HTTPS両サービスの透過型プロキシサーバを実現するには、ディスティネーションポートがTCP 443のパケットも考慮する必要があります。iptablesの設定については、ここで紹介したTCP 80の方法が参考になるでしょう。もちろん、プロキシサーバ側の実装も必要になります。
■改造のヒント:REDIRECTを使う方法
同じPREROUTINGチェインでも、REDIRECTを使った場合は次の1行のようになります。こちらでも透過型プロキシを実現できます。
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port $proxy_port |
| -j REDIRECT | REDIRECT(向け直し)の使用 | ||
| --to-port $proxy_port | REDIRECT先のポート |
「-j DNAT --to-destination」は、あて先としてIPアドレスとポート番号を指定できます。しかし、「-j REDIRECT」はあて先ポート番号しか変更できません。そのため、使えるオプションは「--to-port」のみになります。
|
4/6
|
|
||||||||||||
|
||||||||||||
| 連載 習うより慣れろ! iptablesテンプレート集 |
| Linux Squareフォーラム セキュリティ関連記事 |
| 連載:習うより慣れろ! iptablesテンプレート集(全4回) 初心者にとって、iptablesは難しい。そこで、学習の第1歩としてテンプレートを自分の環境に適応させることから始めよう |
|
| 連載:ゼロから始めるLinuxセキュリティ(全11回) 奥が深いセキュリティ対策の世界をゼロから解説。ホストレベルのセキュリティからファイアウォール、IDSの構築、ログ管理方法まで、システム管理者必見 |
|
| 特集:WebDAV時代のセキュリティ対策[前編] WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる |
|
| 特集:FreeS/WANによるIPSecの導入と運用[前編] LinuxでIPSecを利用するには、「FreeS/WAN」というIPSecスタックを用いることになる。まず、これをインストールすることから始めよう |
|
| 特集:Linux以外のIPSecスタックとの相互接続[前編] 別のOSや異なるIPSecスタックとの相互接続が可能なら、その用途は大幅に広がる。前編では、FreeBSDのKAMEと相互接続を試みる |
|
| 特集:sshでセキュアネットワーク サーバにリモートログインする場合は、暗号化して転送するsshを使おう。sshをサーバとクライアントにインストールすれば、インターネット上でも安全な通信が可能になる |
|
|
TechTargetジャパン
- クライアントがアクセスできる範囲を制限する (2012/2/10)
今回は、サーバ上のファイルの扱いに関係する設定項目について解説します - 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

