Linuxの運用と保守--- Squidを使用してプロキシキャッシュサービスをデプロイする

Squidサービスプログラムは、受信したユーザーリクエストに応じて、ウェブサイトのソースサーバーにページや写真などの必要なデータを要求し、サーバーから返されたデータをSquidサービスプログラムを実行しているサーバーに保存します。ユーザーが同じデータを再度要求すると、ストレージサーバーのローカルデータをユーザーに直接配信できるため、ユーザーの待ち時間が短縮されるだけでなく、Webサイトサーバーの負荷が軽減されます。

Squidサービスプログラムは、シンプルな構成、高効率、豊富な機能の特徴を備えており、HTTP、FTP、SSLなどの複数のプロトコルのデータキャッシングをサポートできます。コンテンツのフィルタリングとアクセス制御リスト(ACL)に基づくフィルタリングを実行できます。権限管理機能は、さまざまな条件に基づいて、ユーザーが脅威にさらされた、または不適切なWebサイトリソースにアクセスすることを禁止することもできるため、企業イントラネットのセキュリティを保護し、ユーザーのネットワークエクスペリエンスを向上させ、節約に役立ちます。ネットワーク帯域幅。

フォワードプロキシモードとは、ユーザーがSquidサービスプログラムを介してWebサイトページなどのリソースを取得できるようにし、アクセス制御リスト(ACL)機能に基づいてWebサイトへのユーザーアクセスを制限することを指します。特定のサービス方法は、標準プロキシモードと透明性。エージェンシーモード。標準のフォワードプロキシモードでは、サーバーにローカルにWebサイトのデータをキャッシュして、データリソースに再度アクセスする際の効率を向上させますが、ユーザーはインターネットを閲覧するときに、プロキシサーバーのIPアドレスとポート番号の情報をブラウザやその他のソフトウェアに入力する必要があります。それ以外の場合、デフォルトは「プロキシサービスを使用する」ではありません。透過的フォワードプロキシモードの役割は、基本的に標準のフォワードプロキシモードと同じですが、ユーザーがプロキシサーバーのIPアドレスとポート番号を手動で指定する必要がないため、このプロキシサービスは比較的透過的です。ユーザー。

リバースプロキシモードとは、複数のノードホストがWebサイトのデータをリバースキャッシュできるようにすることで、ユーザーアクセスを高速化することです。一般的に、テキストや画像などの静的リソースはWebサイトに多数読み込まれ、比較的安定したデータ情報です。ユーザーがWebサイトページでこれらの静的リソースへのアクセス要求を開始すると、Squidを使用できます。 service応答するプログラムによって提供されるリバースプロキシモード。さらに、リバースプロキシサーバーにユーザーがアクセスしたい静的リソースがある場合、これらのキャッシュされた静的リソースはユーザーに直接送信されます。これにより、ユーザーのWebサイトへのアクセス速度が向上するだけでなく、Webサイトサーバーがある程度の負荷圧力。

相互に通信できるようにするには、両方の仮想マシンをホストオンリーモードに設定し、新しく追加したネットワークカードデバイスをブリッジモードに選択する必要があります。そうしないと、2つの仮想マシンが外部ネットワークにアクセスできません。

pingコマンドを使用して、Squidサーバーが外部ネットワークにアクセスできることを確認します

[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=128 time=5.98 ms
64 bytes from 14.215.177.38: icmp_seq=2 ttl=128 time=5.85 ms
64 bytes from 14.215.177.38: icmp_seq=3 ttl=128 time=6.36 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 5.853/6.065/6.362/0.234 ms
[root@localhost ~]#

Squidサーバープログラムをインストールする

[root@localhost ~]# yum install squid
已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 squid.x86_64.7.3.3.8-26.el7 将被 安装
--> 正在处理依赖关系 perl(DBI),它被软件包 7:squid-3.3.8-26.el7.x86_64 需要
--> 正在处理依赖关系 perl(Digest::MD5),它被软件包 7:squid-3.3.8-26.el7.x86_64 需要
--> 正在处理依赖关系 libecap.so.2()(64bit),它被软件包 7:squid-3.3.8-26.el7.x86_64 需要
--> 正在检查事务
---> 软件包 libecap.x86_64.0.0.2.0-9.el7 将被 安装
---> 软件包 perl-DBI.x86_64.0.1.627-4.el7 将被 安装
--> 正在处理依赖关系 perl(RPC::PlClient) >= 0.2000,它被软件包 perl-DBI-1.627-4.el7.x86_64 需要
--> 正在处理依赖关系 perl(RPC::PlServer) >= 0.2001,它被软件包 perl-DBI-1.627-4.el7.x86_64 需要
---> 软件包 perl-Digest-MD5.x86_64.0.2.52-3.el7 将被 安装
--> 正在处理依赖关系 perl(Digest::base) >= 1.00,它被软件包 perl-Digest-MD5-2.52-3.el7.x86_64 需要
--> 正在检查事务
---> 软件包 perl-Digest.noarch.0.1.17-245.el7 将被 安装
---> 软件包 perl-PlRPC.noarch.0.0.2020-14.el7 将被 安装
--> 正在处理依赖关系 perl(Net::Daemon) >= 0.13,它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Compress::Zlib),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Net::Daemon::Log),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在处理依赖关系 perl(Net::Daemon::Test),它被软件包 perl-PlRPC-0.2020-14.el7.noarch 需要
--> 正在检查事务
---> 软件包 perl-IO-Compress.noarch.0.2.061-2.el7 将被 安装
--> 正在处理依赖关系 perl(Compress::Raw::Bzip2) >= 2.061,它被软件包 perl-IO-Compress-2.061-2.el7.noarch 需要
--> 正在处理依赖关系 perl(Compress::Raw::Zlib) >= 2.061,它被软件包 perl-IO-Compress-2.061-2.el7.noarch 需要
---> 软件包 perl-Net-Daemon.noarch.0.0.48-5.el7 将被 安装
--> 正在检查事务
---> 软件包 perl-Compress-Raw-Bzip2.x86_64.0.2.061-3.el7 将被 安装
---> 软件包 perl-Compress-Raw-Zlib.x86_64.1.2.061-4.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package                      架构        版本                   源        大小
================================================================================
正在安装:
 squid                        x86_64      7:3.3.8-26.el7         yum      2.6 M
为依赖而安装:
 libecap                      x86_64      0.2.0-9.el7            yum       20 k
 perl-Compress-Raw-Bzip2      x86_64      2.061-3.el7            yum       32 k
 perl-Compress-Raw-Zlib       x86_64      1:2.061-4.el7          yum       57 k
 perl-DBI                     x86_64      1.627-4.el7            yum      802 k
 perl-Digest                  noarch      1.17-245.el7           yum       23 k
 perl-Digest-MD5              x86_64      2.52-3.el7             yum       30 k
 perl-IO-Compress             noarch      2.061-2.el7            yum      260 k
 perl-Net-Daemon              noarch      0.48-5.el7             yum       51 k
 perl-PlRPC                   noarch      0.2020-14.el7          yum       36 k

事务概要
================================================================================
安装  1 软件包 (+9 依赖软件包)

总下载量:3.9 M
安装大小:12 M
Is this ok [y/d/N]: y
Downloading packages:
--------------------------------------------------------------------------------
总计                                               6.3 MB/s | 3.9 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : libecap-0.2.0-9.el7.x86_64                                 1/10 
  正在安装    : perl-Digest-1.17-245.el7.noarch                            2/10 
  正在安装    : perl-Digest-MD5-2.52-3.el7.x86_64                          3/10 
  正在安装    : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                4/10 
  正在安装    : perl-Net-Daemon-0.48-5.el7.noarch                          5/10 
  正在安装    : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                 6/10 
  正在安装    : perl-IO-Compress-2.061-2.el7.noarch                        7/10 
  正在安装    : perl-PlRPC-0.2020-14.el7.noarch                            8/10 
  正在安装    : perl-DBI-1.627-4.el7.x86_64                                9/10 
  正在安装    : 7:squid-3.3.8-26.el7.x86_64                               10/10 
yum/productid                                            | 1.6 kB     00:00     
  验证中      : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                 1/10 
  验证中      : perl-Net-Daemon-0.48-5.el7.noarch                          2/10 
  验证中      : perl-Digest-MD5-2.52-3.el7.x86_64                          3/10 
  验证中      : perl-PlRPC-0.2020-14.el7.noarch                            4/10 
  验证中      : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                5/10 
  验证中      : perl-Digest-1.17-245.el7.noarch                            6/10 
  验证中      : 7:squid-3.3.8-26.el7.x86_64                                7/10 
  验证中      : libecap-0.2.0-9.el7.x86_64                                 8/10 
  验证中      : perl-DBI-1.627-4.el7.x86_64                                9/10 
  验证中      : perl-IO-Compress-2.061-2.el7.noarch                       10/10 

已安装:
  squid.x86_64 7:3.3.8-26.el7                                                   

作为依赖被安装:
  libecap.x86_64 0:0.2.0-9.el7                                                  
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7                                  
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7                                   
  perl-DBI.x86_64 0:1.627-4.el7                                                 
  perl-Digest.noarch 0:1.17-245.el7                                             
  perl-Digest-MD5.x86_64 0:2.52-3.el7                                           
  perl-IO-Compress.noarch 0:2.061-2.el7                                         
  perl-Net-Daemon.noarch 0:0.48-5.el7                                           
  perl-PlRPC.noarch 0:0.2020-14.el7                                             

完毕!
[root@localhost ~]# 

インストールが完了したら、Squidサービスプログラムを再起動します

[root@localhost ~]# systemctl restart squid
[root@localhost ~]# systemctl enable squid
Created symlink from /etc/systemd/system/multi-user.target.wants/squid.service to /usr/lib/systemd/system/squid.service.
[root@localhost ~]# systemctl enable squid
[root@localhost ~]# 

フォワードプロキシ

Windows 7システムで任意のブラウザーを開き、次の操作を実行します

SquidサーバーのIPアドレスを入力します

これで、ユーザーはSquidサービスプログラムが提供するプロキシサービスを使用してオンラインに接続できます。

Squidサービスプログラムは、デフォルトで3128、3401、4827などのポート番号を使用します。人々が「ひったくられる」のを防ぐために、デフォルトのポート番号を他の値に変更して、ある程度の保護を実現できます。/ etcディレクトリの下にあるSquidサービスプログラムと同じ名前のディレクトリで構成ファイルを見つけ、Squidサービスプログラムのプロキシサービスポート(http_portパラメータ)を新しい値に変更します。

[root@localhost ~]# vim /etc/squid/squid.conf

Squidサービスプログラムを再起動します

[root@localhost ~]# systemctl restart squid
[root@localhost ~]# systemctl enable squid
[root@localhost ~]#

SElinuxドメインのSquidサーバープログラムの許可リストに新しいポート番号を追加します

[root@localhost ~]# semanage port -l | grep squid_port_t
squid_port_t                   tcp      3128, 3401, 4827
squid_port_t                   udp      3401, 4827
[root@localhost ~]# semanage port -a -t squid_port_t -p tcp 10086
[root@localhost ~]# semanage port -l | grep squid_port_t
squid_port_t                   tcp      10086, 3128, 3401, 4827
squid_port_t                   udp      3401, 4827
[root@localhost ~]# 

ACLアクセス制御

日常業務では、会社のオフィスコンピュータは通常、会社の内部ゲートウェイサーバーを介してインターネットにアクセスします。Squidサービスプログラムが会社のネットワークゲートウェイサーバーとして展開されると、Squidサービスプログラムのアクセス制御リスト(ACL)機能がその役割を果たします。指定されたポリシー条件に基づいて、データをキャッシュしたり、ユーザーアクセスを制限したりできます。

IPアドレスが192.168.168.129のクライアントのみが、サーバー上のSquidサービスプログラムによって提供されるプロキシサービスを使用でき、他のすべてのホストプロキシ要求は禁止されています。

[root@localhost ~]# vim /etc/squid/squid.conf

Squidサービスプログラムを再起動します

[root@localhost ~]# systemctl restart squid

IPアドレスが許可されたポリシーに準拠していないため、アクセス要求は拒否されます

URLにbaiduキーワードを含むWebサイトにすべてのクライアントがアクセスすることを禁止します

[root@localhost ~]# vim /etc/squid/squid.conf

Squidサービスプログラムを再起動します

[root@localhost ~]# systemctl restart squid

クライアントがそれぞれbaiduキーワードを使用してWebサイトにアクセスしたときとbaiduキーワードを使用せずにWebサイトにアクセスしたときの結果

すべてのクライアントが特定のWebサイトにアクセスできないようにします

すべてのクライアントがbaiduキーワードを含むURLにアクセスすることを禁止することに加えて、誤ったブロックを回避するために、クライアントが特定のURLにアクセスすることを禁止することもできます。

[root@localhost ~]# vim /etc/squid/squid.conf

実験効果をより明確にするために、HTTPプロトコルとHTTPSプロトコルを比較します。

従業員は、企業ネットワーク内で特定のサフィックスが付いたファイルをダウンロードすることを禁じられています

企業ネットワークでは、企業ネットワークの高速帯域幅を使用してリソース(曲、映画など)をプライベートにダウンロードする人が常にいます。すべてのユーザーが.rarまたは.avi、.mp3にアクセスすることを禁止することによっておよびその他のサフィックスファイルの要求は、リソースのダウンロードを続行できないようにする可能性があります

[root@localhost ~]# vim /etc/squid/squid.conf

Squidサービスプログラムを再起動します

[root@localhost ~]# systemctl restart squid

リバースプロキシ

原則は、最初にWebサイトオリジンサーバーに対して開始されたユーザー要求の一部を、処理のためにSquidサーバーのキャッシュノードに渡すことです。しかし、このテクノロジーの欠点も明らかです。誰かがドメイン名とサーバーを有名なWebサイトにリバースプロキシすると、理論的には、ユーザーがこのドメイン名にアクセスすると、その有名なWebサイトも表示されます。同じコンテンツ。そのため、現在多くのWebサイトでリバースプロキシ機能がデフォルトで禁止されています。CDN(コンテンツ配信ネットワーク)サービスが有効になっているWebサイトでも、この種の盗難を回避できます。

[root@localhost ~]# vim /etc/squid/squid.conf
………………省略部分输出信息………………
57 
58 # Squid normally listens to port 3128
59 http_port 你的桥接网卡IP地址:80 vhost
60 cache_peer 网站源服务器IP地址 parent 80 0 originserver
61 
………………省略部分输出信息………………
[root@localhost ~]# systemctl restart squid

 

おすすめ

転載: blog.csdn.net/C_huid/article/details/107035766