透過型proxyの構築まで~その2~
次に透過型proxyへの設定を行う。
考え方として、クライアントのデフォルトゲートウェイをproxyサーバに設定し、
80番ポートにアクセスしてきたらsquidの8080番ポートへポートフォワードしてやればよい、という方針。
まず、クライアントのデフォルトゲートウェイを設定するために、
DHCPサーバを構築する。
# vi /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0{
range dynamic-bootp 192.168.1.10 192.168.1.50;
option routers 192.168.1.3;
option domain-name "xxx.yyyy.zzz.jp";
option domain-name-servers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
}
# 最低限これくらいを設定しておけば良い。
# 当然、proxyサーバ自身は固定IPにしておく必要がある。
# nmcli c modify eth0 ipv4.method manual
# nmcli c modify eth0 ipv4.addresses 192.168.1.3/24
# nmcli c modify eth0 ipv4.gateway 192.168.1.1
# systemctl start dhcp
# systemctl enable dhcp
DHCPが正しく動作していることを確認したら、Squidを透過型に変更する。
http_port 8080 transparent
# systemctl restart squid
次にFirewallを設定する。ポートフォワードに関してもrich-ruleを使う方が分かりやすかった。過去、iptablesに慣れている人はそちらでどうぞ。
# firewall-cmd --permanent --add-masquerade #IPマスカレードを有効化
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source\
address="192.168.1.0/24" forward-port port="80" protocol="tcp" to\
-port="8080" to-addr="192.168.1.3"
# firewall-cmd --reload
# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcp dhcpv6-client samba squid ssh
ports:
masquerade: yes
forward-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.1.0/24" forward-portport="80" protocol="tcp" to-port="8080" to-addr="192.168.1.3"
クライアントを再起動する等して、DHCPによるデフォルトゲートウェイが変わっている事、Webブラウザのproxy設定を外してWebサイトへ接続できる事を確認する。
接続できたら、アクセス先がproxyサーバのアクセスログに記録されている事が確認できたら成功!
アクセスログ:/var/log/squid/access.log
また、HTTP以外のネットワーク通信ができる事も確認しておく。