
第4回 natテーブルを利用したLinuxルータの作成・2
(DNATで透過型プロキシサーバを実現)
鶴長 鎮一
2010/3/11
テンプレート8 |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| テンプレート8の表示(このウィンドウで開く) テンプレート8の表示(別ウィンドウで開く) テンプレート8(template08.sh)のダウンロード |
■テンプレート8の解説
HTTPプロキシサーバをさらに効率よく稼働させるには、Linuxルータから分離し、専用サーバを用意します。Linuxルータとプロキシサーバを分離しても、透過型プロキシサーバとして稼働させることはできます。テンプレート7をベースに、HTTPプロキシサーバを分離した場合の設定を解説します。
なおプロキシサーバは内部ネットに設置されるものとし、外部ネットの不特定多数のユーザーから利用されないよう、適切にアクセス制御が行われているものとします。
3〜9行目で環境に合わせた値を設定します。プロキシサーバのIPアドレスとポート番号を6、7行目で定義します。
6 proxy_port='3128' |
Linuxルータとプロキシサーバが同一だったテンプレート7では、クライアントがLinuxのルータのHTTPプロキシサービスを利用できるよう、LinuxルータのTCP 3128番に対するアクセスを許可しました。しかし今回はLinuxルータとHTTPプロキシサーバが分離しているため、その必要はありません。
テンプレート7と大きく異なるのは、透過型プロキシを実現している59〜61行目です。
59 iptables -t nat -A PREROUTING -i eth1 -s ! $proxy_ip -p tcp --dport 80 -j DNAT --to $proxy_ip:$proxy_port |
内部ネットからLinuxルータに入ってくるパケットのうち、ディスティネーション(あて先)ポートがTCP 80番であるHTTPサービスのパケットをDNATで変換します(59行目)。HTTPプロキシサーバにパケットが転送されるよう、ディスティネーションアドレスやポート番号をプロキシサーバのものに書き換えます。なおHTTPプロキシサーバ自身がWebサーバにアクセスできるよう、サーバ発のパケットに関しては、ディスティネーションアドレス/ポートを書き換えないようにします。
59行目だけでも透過型プロキシが成立しそうですが、実際には60、61行目が必要になります。
今回、HTTPリクエストを送出するクライアントは、デフォルトルータであるLinuxルータへパケットを送っているため、レスポンスパケットもLinuxルータから送られてくることを期待しています。59行目だけでは、レスポンスパケットはプロキシサーバから戻され、クライアントは意図しないサーバからレスポンスパケットを受け取ることになります。従ってこのままではパケットの送受信が成立しません。
そこで、クライアントから出たHTTPリクエストに対するレスポンスが、Linuxルータから戻るように、60行目を追加します。LinuxルータからHTTPプロキシサーバへ送信されるパケットを変換し、ソースIPアドレスをクライアントのアドレスからLinuxルータのアドレスに書き換えます。これでプロキシサーバはHTTPリクエストに対するレスポンスをLinuxルータへ戻すようになります。レスポンスを受け取ったLinuxルータはクライアントへ転送します。
Linuxルータを挟んで、クライアントとHTTPプロキシサーバとの間でパケットが転送されるよう、61行目でパケットの転送(FORWARD)を許可します。
次回予告
以上、iptablesのDNATを使った透過型プロキシサーバの構築方法を解説しました。前回紹介したSNATとIPマスカレードを組み合わせれば、高機能なLinuxルータとして活用できます。さらにDHCPサーバやDNSサーバも同時に稼働させれば、市販のブロードバンドルータに劣らない仕組みが構築できます。
次回は、外部ネットからLinuxルータの内部ネットに限定的にアクセスできる「DMZ」を可能にする方法や、サーバの負荷を分散する方法を解説します。
3/3 |
|
||||||
|
||||||
| 連載 習うより慣れろ! 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 -

