プロキシソフトウェア Squidをインストールした
ただし目的は、
スタンドアローンで動作するCentOSマシンのブラウザからhttpやhttpsで外部ネットワークへアクセスするときに、
同じマシンにインストールしたプロキシを経由させることである。
(他のマシンからのプロキシへのアクセスを受け付ける設定は考慮していない。)
■マシンの情報について
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-358.18.1.el6.x86_64 #1 SMP Wed Aug 28 17:19:38 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
■プロキシソフトウェアSquidのインストールを行った
○Squidの情報を表示させた
[root@localhost ~]# yum info squid
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.iij.ad.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
Available Packages
Name : squid
Arch : x86_64
Epoch : 7
Version : 3.1.10
Release : 19.el6_4
Size : 1.7 M
Repo : base
Summary : The Squid proxy caching server
URL : http://www.squid-cache.org
License : GPLv2 and (LGPLv2+ and Public Domain)
Description : Squid is a high-performance proxy caching server for Web clients,
: supporting FTP, gopher, and HTTP data objects. Unlike traditional
: caching software, Squid handles all requests in a single,
: non-blocking, I/O-driven process. Squid keeps meta data and especially
: hot objects cached in RAM, caches DNS lookups, supports non-blocking
: DNS lookups, and implements negative caching of failed requests.
:
: Squid consists of a main server program squid, a Domain Name System
: lookup program (dnsserver), a program for retrieving FTP data
: (ftpget), and some management and client tools.
○Squidのインストール
[root@localhost ~]# yum install squid
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package squid.x86_64 7:3.1.10-19.el6_4 will be installed
--> Processing Dependency: perl(DBI) for package: 7:squid-3.1.10-19.el6_4.x86_64
--> Running transaction check
---> Package perl-DBI.x86_64 0:1.609-4.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================================================================================
Package Arch Version Repository Size
========================================================================================================================================================================
Installing:
squid x86_64 7:3.1.10-19.el6_4 base 1.7 M
Installing for dependencies:
perl-DBI x86_64 1.609-4.el6 base 705 k
Transaction Summary
========================================================================================================================================================================
Install 2 Package(s)
Total download size: 2.4 M
Installed size: 7.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): perl-DBI-1.609-4.el6.x86_64.rpm | 705 kB 00:00
(2/2): squid-3.1.10-19.el6_4.x86_64.rpm | 1.7 MB 00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 4.9 MB/s | 2.4 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : perl-DBI-1.609-4.el6.x86_64 1/2
Installing : 7:squid-3.1.10-19.el6_4.x86_64 2/2
Verifying : 7:squid-3.1.10-19.el6_4.x86_64 1/2
Verifying : perl-DBI-1.609-4.el6.x86_64 2/2
Installed:
squid.x86_64 7:3.1.10-19.el6_4
Dependency Installed:
perl-DBI.x86_64 0:1.609-4.el6
Complete!
■Squidの設定ファイルを編集した
Squidの使用するアクセスポートを、8080に設定した。
[root@localhost ~]# vi /etc/squid/squid.conf
(略)
# Squid normally listens to port 3128
#http_port 3128
http_port 8080
(略)
■iptablesを設定した
ネットワークへProxyポートが開くので、iptablesを適切に設定し、起動しておく。
次の例では、CentOS 6.4 64bit版(デスクトップ用途)でデフォルトの設定から、
SSHへのアクセスルールを除いたものを用いていることがわかる。
ネットワークからProxyポートへの入力については、ステートフルインスペクションを利用して対策をしている。
Squidへのローカルプロセス(Firefoxなど)からのパケット入力に関する設定のポイントは、
loインターフェイスからの入力パケットのINPUTを許可していることである。
○IPv4のフィルタテーブルを表示させた
[root@localhost ~]# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
6 396 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- any any anywhere anywhere
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 5 packets, 572 bytes)
pkts bytes target prot opt in out source destination
○IPv6のフィルタテーブルを表示させた
[root@localhost ~]# ip6tables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
5552 8138K ACCEPT all any any anywhere anywhere state RELATED,ESTABLISHED
3545 255K ACCEPT ipv6-icmp any any anywhere anywhere
306 24480 ACCEPT all lo any anywhere anywhere
0 0 REJECT all any any anywhere anywhere reject-with icmp6-adm-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all any any anywhere anywhere reject-with icmp6-adm-prohibited
Chain OUTPUT (policy ACCEPT 12951 packets, 8673K bytes)
pkts bytes target prot opt in out source destination
■Squidを起動した
○次のコマンドで、設定ファイルが有効になるとともに、Squidが起動する
[root@localhost ~]# service squid start
squid を起動中: . [ OK ]
○開いているポートを確認できた
[root@localhost ~]# lsof -i -n -P | grep squid
squid 17487 squid 8u IPv6 1347315 0t0 UDP *:34227
squid 17487 squid 9u IPv4 1347316 0t0 UDP *:50600
squid 17487 squid 11u IPv6 1347318 0t0 TCP *:8080 (LISTEN)
◎Squid起動後に、設定ファイルの変更を有効化する方法
プロキシのアドレスやポートの変更時には、ブラウザの変更と再起動も忘れないようにする。
# squid -k reconfigure
■ブラウザ Firefox の設定を行った
○Firefoxがプロキシを利用するように設定した
下記の手順で設定後は、Firefoxを再起動する必要がある。
(編集)→(詳細)→(ネットワーク)→(接続設定)
手動でプロキシを設定する(M)
HTTPプロキシ(X):localhost
ポート(P):8080
■動作チェックを行った
設定しFirefoxの再起動後、
http、httpsプロトコルで外部ネットワークサイトに接続できるかチェックした。
○ステートフルインスペクションのテーブルを参照し、ローカルプロセスFirefoxからの通信が、
プロキシサーバを経由していることを確認した。
パケットがIPv6アドレス0000:0000:0000:0000:0000:0000:0000:0001 (ループバックアドレス)の55555ポートから、
あて先アドレス0000:0000:0000:0000:0000:0000:0000:0001 (ループバックアドレス)の8080ポートに、
到達したことにより、ステート管理テーブルにその情報が現れていることがわかる。
[root@localhost ~]# cat /proc/net/nf_conntrack | grep ipv6
(略)
ipv6 10 tcp 6 49 TIME_WAIT src=0000:0000:0000:0000:0000:0000:0000:0001 dst=0000:0000:0000:0000:0000:0000:0000:0001 sport=55555 dport=8080 src=0000:0000:0000:0000:0000:0000:0000:0001 dst=0000:0000:0000:0000:0000:0000:0000:0001 sport=8080 dport=55555 [ASSURED] mark=0 secmark=0 use=2
○あるいは、ブラウザから診断くんへアクセスして、プロキシ経由の通信になっているか確認する。
診断くん
(参考)
・Kulbir Saini / Squid Proxy Server 3.1 -Beginner's Guide / PACKT / Pages 308
< http://www.amazon.co.jp/Squid-Proxy-Server-3-1-Capabilities/dp/1849513902/ >