web-dev-qa-db-ja.com

CentOS 6.7をSquidプロキシサーバーとして構成する:この問題を解決するにはどうすればよいですか?

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ボックスをプロキシサーバーとして構成しているときに、次の構成を行いました。

  1. Yumを更新し、Squidをインストールしました

  2. 以下に示すように/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リンクローカル(直接接続された)マシン


    。(他の行は今のところ同じままです)

  3. Squidプロキシを開始しました:

    #service squid start#chkconfig squid on

  4. /etc/sysctl.confファイルを次のように編集しました

    net.ipv4.ip_forward = 1

  5. / etc/sysconfig/iptables-configファイルを編集しました

    次の行で「no」を「yes」に変更しました:そして保存しました

    IPTABLES_SAVE_ON_STOP = "yes" IPTABLES_SAVE_ON_RESTART = "yes"

  6. 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

  7. Dhcpサーバーをインストールしました(yum install dhcp)

  8. Selinuxを無効にしました:

    #setenforce 0
    #vim/etc/sysconfig/selinux and chandge;
    SELINUX =強制する
    SELINUX =無効

  9. / etc/sysconfig/dhcpdファイルを編集して追加しました。

    DHCPDARGS = eth1

  10. /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;
    }

  11. Dhcpサーバーを起動しました

    #service dhcpd start
    #chkconfig dhcpd on

  12. フィルタリングサイト/ルール/ファイル拡張をに追加した後、
    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

    。(他のルールは変更されていません)

  13. 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とポートを追加せずにインターネットにアクセスできます。)

この問題を修正するのを手伝っていただけませんか。

ありがとうございました。

1
Anoma

どうもありがとうございました。 eth1のゲートウェイIPを削除しました。また、iptablesのルールを変更しました。

  1. まず、すべてのiptableルールをクリーンアップしました。

    #iptables -F
    #iptables -X
    #iptables -t nat -F
    #iptables -t nat -X
    #iptables -t mangle -F
    #iptables -t mangle -X

    1. そして、次のルールを追加しました。

      #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

  2. これに加えて、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

これで、プロキシサーバーは正常に機能します。

0
Anoma