2つのNIC(eth0とeth1)を備えたCentOS6.7で実行されているPCをSquidプロキシサーバーとして使用しています。 eth0(赤のインターフェース/192.168.0.2/24)はルーター(192.168.0.1/24)に物理的に接続され、eth1(緑のインターフェース/192.168.1.1/24)はLANに接続されています。
eth0:
Connect automatically
Method = Manual
Address = 192.168.0.2
Mask = /24
GW = 192.168.0.1
DNS = 8.8.8.8, 8.8.4.4
eth1:
Connect automatically
Method = Manual
Address = 192.168.1.1
Mask = /24
GW = 192.168.0.2
DNS = 8.8.8.8, 8.8.4.4
CentOSボックスをプロキシサーバーとして構成しているときに、次の構成を行いました。
Yumを更新し、Squidをインストールしました
以下に示すように/etc/squid/squid.confファイルを編集しました。
#
#推奨される最小構成:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 :: 1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 :: 1
#ローカルネットワークからのアクセスを許可するルールの例。
#ブラウジングする場所から(内部)IPネットワークを一覧表示するように調整します
# 許可されるべきです
#acl localnet src 10.0.0.0/8#RFC1918可能な内部ネットワーク
#acl localnet src 172.16.0.0/12#RFC1918可能な内部ネットワーク
acl localnet src 192.168.1.0/24#RFC1918可能な内部ネットワーク
#acl localnet src fc00 ::/7#RFC4193ローカルプライベートネットワーク範囲
#acl localnet src fe80 ::/10#RFC 4291リンクローカル(直接接続された)マシン
。
。
。(他の行は今のところ同じままです)
Squidプロキシを開始しました:
#service squid start#chkconfig squid on
/etc/sysctl.confファイルを次のように編集しました
net.ipv4.ip_forward = 1
/ etc/sysconfig/iptables-configファイルを編集しました
次の行で「no」を「yes」に変更しました:そして保存しました
IPTABLES_SAVE_ON_STOP = "yes" IPTABLES_SAVE_ON_RESTART = "yes"
Iptablesのルールを次のように変更しました。
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -t filter -D INPUT -j REJECT --reject-with icmp-Host-prohibited
#iptables -t filter -D FORWARD -j REJECT --reject-with icmp-Host-prohibited
#iptables -t filter -A INPUT -p tcp --dport 3128 -j ACCEPT
#iptables -A INPUT -j REJECT --reject-with icmp-Host-prohibited
#iptables -A FORWARD -i eth1 -p tcp --dport 443 -d www.facebook.com -j DROP
#iptables -A FORWARD -i eth1 -p tcp --dport 443 -d www.youtube.com -j DROP
#service iptables save
#chkconfig iptables on
#service iptables restart
Dhcpサーバーをインストールしました(yum install dhcp)
Selinuxを無効にしました:
#setenforce 0
#vim/etc/sysconfig/selinux and chandge;
SELINUX =強制する
SELINUX =無効
/ etc/sysconfig/dhcpdファイルを編集して追加しました。
DHCPDARGS = eth1
/etc/dhcp/dhcpd.confファイルを次のように編集しました。
#DHCPサーバー構成ファイル。
#/ usr/share/doc/dhcp */dhcpd.conf.sampleを参照
#「man5dhcpd.conf」を参照
#
権威;
サブネット192.168.1.0ネットマスク255.255.255.0 {
範囲192.168.1.50192.168.1.220;
option domain-name-servers 8.8.8.8、8.8.4.4;
#option domain-name "centos.local"
オプションルーター192.168.1.1;
オプションブロードキャストアドレス192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}
Dhcpサーバーを起動しました
#service dhcpd start
#chkconfig dhcpd on
フィルタリングサイト/ルール/ファイル拡張をに追加した後、
a。)/ etc/squid/acls.txt
b。)/ etc/squid/adult.txtおよび
c。)/ etc/squid/badsites.txtファイル/etc/squid/squid.confファイルを変更しました。
。
。(ステップ2で変更された上記のルール)
。
#
#ここに独自のルールを挿入して、クライアントからのアクセスを許可します
#
visible_hostname cetos-server.local
acl social dstdomain -i "/etc/squid/acls.txt"
acl badsites dstdomain -i "/etc/squid/badsites.txt"
acl adult url_regex -i "/etc/squid/adult.txt"
acl非稼働時間SMTWHFS18:00-23:59
acl非稼働時間SMTWHFS00:00-06:00
http_accessは機能しないことを拒否します
http_accessはソーシャルを拒否します
http_reply_accessはbadsitesを拒否します
http_reply_accessは成人を拒否します
#少なくとも次の行を使用することをお勧めします。
hierarchy_stoplist cgi-bin?
#以下のコメントを外して調整し、ディスクキャッシュディレクトリを追加します。
cache_dir ufs/var/pool/squid 10240 16256
。
。(他のルールは変更されていません)
Squid、dhcpd、iptablesを再起動しました:
#chkconfig squid on
#service squid restart
#chkconfig iptables on
#service iptables restart
#chkconfig dhcpd on
#service dhcpd restart
これが行われると、プロキシは非常にうまく機能します。 LAN内のPCは、プロキシサーバー(192.168.1.1ポート:3128)を経由せずにインターネットにアクセスできません。
だが、
問題:
CentOSマシンを再起動すると、上記のすべての構成がまだ存在し、Squid、DHCP、およびiptablesが(マシンの再起動前に実行されていたため)正しく実行されているにもかかわらず、LAN内のPCで次のことが可能になります。そのPCにプロキシ設定なしでインターネットにアクセスすることが追加されます。 (例:192.168.1.155/24のPCは、システムプロキシ設定にプロキシサーバーのIPとポートを追加せずにインターネットにアクセスできます。)
この問題を修正するのを手伝っていただけませんか。
ありがとうございました。
どうもありがとうございました。 eth1のゲートウェイIPを削除しました。また、iptablesのルールを変更しました。
まず、すべてのiptableルールをクリーンアップしました。
#iptables -F
#iptables -X
#iptables -t nat -F
#iptables -t nat -X
#iptables -t mangle -F
#iptables -t mangle -X
そして、次のルールを追加しました。
#modprobe ip_conntrack
#modprobe ip_conntrack_ftp
#iptables -P INPUT DROP
#iptables -P OUTPUT ACCEPT
#iptables -A INPUT -i lo -j ACCEPT
#iptables -A OUTPUT -o lo -j ACCEPT
#iptables -A INPUT -i $ INTERNET -m state --state ESTABLISHED、RELATED -j ACCEPT
#iptables --table nat --append POSTROUTING --out-interface $ INTERNET -j MASQUERADE
#iptables --append FORWARD --in-interface $ LAN_IN -j ACCEPT
#iptables -A INPUT -i $ LAN_IN -j ACCEPT
#iptables -A OUTPUT -o $ LAN_IN -j ACCEPT
#iptables -t nat -A PREROUTING -i $ LAN_IN -p tcp --dport 80 -j DNAT --to $ SQUID_SERVER:$ SQUID_PORT
#iptables -t nat -A PREROUTING -i $ INTERNET -p tcp --dport 80 -j REDIRECT --to-port $ SQUID_PORT
#iptables -A INPUT -j LOG
#iptables -A INPUT -j DROP
これに加えて、YouTubeとFacebookをブロックするために、www.youtube.comとwww.facebook.comへの着信リクエストをポート443からsquidサーバー(つまり192.168.1.1:3128)に転送しました(以下で説明します)。ここでは、squidプロキシで上記の2つのサイトをすでにブロックしているため、LAN内の誰も上記の2つのサイトにアクセスできません。
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -d www.facebook.com -j DNAT --to 192.168.1.1:3128
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -d www.youtube.com -j DNAT --to 192.168.1.1:3128
これで、プロキシサーバーは正常に機能します。