웹사이트 검색

Linux에서 Squid Cache 및 Cisco 라우터를 사용하여 웹 트래픽을 제어하는 방법


네트워크에서 중요한 작업 중 하나는 직원의 웹 서핑 트래픽을 제어하고 관리하는 것입니다. 이 문제를 처리할 수 있는 솔루션이 많이 있으며, 가장 좋은 솔루션 중 하나는 Linux 시스템에서 오징어 캐시를 사용하는 것입니다. Squid는 한 네트워크에서 다른 네트워크로의 웹 트래픽 흐름(예: LAN에서 인터넷으로)을 검사, 제한 및 캐시할 수 있습니다.

클라이언트의 웹 요청을 오징어 시스템으로 리디렉션하는 방법에는 몇 가지가 있습니다. 이 문서에서는 WCCP 프로토콜을 사용하여 CISCO 라우터에서 오징어 캐시 시스템으로 웹 트래픽을 리디렉션하는 방법을 보여줍니다.

아래 그림은 기본 시나리오의 예입니다.

위 그림에서 볼 수 있듯이 모든 클라이언트의 웹 트래픽은 먼저 Cisco 라우터(기본 게이트웨이)로 이동한 다음 라우터가 자동으로 패킷을 Squid 시스템으로 리디렉션합니다. 이제 Squid가 해당 역할을 수행할 수 있습니다. 주요 역할은 다음과 같습니다. 웹 콘텐츠 캐싱, 도메인, 시간 간격, IP 주소, 파일 크기 등에 따라 액세스를 제한합니다.

우리는 두 가지 주요 단계로 이 시나리오의 구성을 검토합니다. 먼저 Squid와 Linux를 설치 및 구성한 다음 WCCP 프로토콜을 사용하여 웹 트래픽 패킷을 Squid로 리디렉션하도록 라우터를 구성해야 합니다.

테스트 환경

이 시나리오에서는 CENTOS 6.5를 LINUX 서버로 사용하고 Cisco 2691을 라우터 시스템으로 사용합니다.

Operating System: CENTOS 6.5
Application: Squid
Router: Cisco 2691

1단계: 오징어 캐시 설치

Squid는 CENTOS의 기본 저장소에서 사용할 수 있습니다. 먼저 Lovely yum 명령을 사용하여 Squid를 설치한 다음 서비스를 시작하고 마지막으로 Squid 서비스 자동 시작을 설정합니다.

yum -y install squid
service squid start
chkconfig squid on

2단계: 오징어 캐시 준비

이제 centos 운영 체제의 일부 기본 동작을 변경해야 합니다. 패킷 전달을 활성화하고 역방향 경로 필터(RPF)를 비활성화해야 하며, centos가 투명한 전달자 역할을 할 수 있도록 패킷 전달을 활성화해야 합니다(예: 라우터).

더 자세히 설명하겠습니다. 트래픽이 centos에 들어오면 소스 및 대상 주소가 있습니다. 예를 들어 클라이언트가 브라우저에 www.example.com을 입력하면 http 요청 패킷이 생성되고 클라이언트 시스템의 소스 IP 주소(예: 192.168.1.20)와 example.com 서버의 대상 IP 주소(예: 2.2.2.2)가 있습니다.

따라서 centos가 패킷을 수신하면 centos IP 주소가 패킷의 대상 주소가 아니기 때문에 잘못된 패킷으로 감지합니다. 보안상의 이유로 centos는 패킷을 삭제하지만 우리는 squid에서 투명 모드로 작동하기를 원합니다. 우리는 패킷 전달 포션을 활성화하여 이 상황을 Centos에 알립니다.

다음으로 우리는 Centos가 Squid 머신에서 액세스할 수 없는 패킷이나 Squid 머신의 동일한 서브넷에 있는 IP 주소가 없는 패킷을 허용하도록 역방향 경로 필터링을 비활성화해야 합니다.

nano /etc/sysctl.conf
net.ipv4.ip_forward = 1 #set to 1 for enable the packet forwarding feature
net.ipv4.conf.default.rp_filter = 0 # set to 0 for disable the reverse path filter behavior

다음으로 CENTOS 시스템에 GRE 인터페이스를 생성해야 합니다. 무엇을 위해?? 더 설명하겠습니다. WCCP 프로토콜은 GRE 터널을 통해 작동합니다. 이는 라우터와 Squid 사이의 언어가 GRE이므로 Centos에는 De-GRE 인터페이스가 필요하다는 의미입니다. GRE 패킷을 캡슐화합니다.

/etc/sysconfig/network-script/ifcfg-gre0” 경로에 GRE 인터페이스에 대한 구성 파일을 생성해야 합니다.

ifcfg-gre0 구성 파일에 아래 코드를 입력하세요.

DEVICE=gre0
BOOTPROTO=static
IPADDR=10.0.0.2         #unused ip address in your network
NETMASK=255.255.255.252
ONBOOT=yes
IPV6INIT=no

GRE 인터페이스를 생성한 후 네트워크 서비스를 다시 시작해야 합니다.

service network restart

3단계: 오징어 캐시 구성

우리는 라우터에서 WCCP 패킷을 받아들이는 오징어에게 알려야 합니다. /etc/squid/squid.conf 파일에 아래 코드를 입력하세요.

http_port 3128 intercept                 # Define SQUID listening port
wccp2_router 192.168.1.254          #ip address of the router
wccp2_forwarding_method gre
wccp2_return_method gre
wccp2_service standard 0

구성 파일을 저장하고 오징어 서비스를 다시 시작하십시오.

service squid restart

Squid는 3128 포트에서 패킷을 수신하지만 패킷의 대상 포트 번호는 80이므로 대상 포트 803128<로 변경합니다., CENTOS 통합 방화벽(iptable이라는 이름)에 NAT 규칙을 만들어야 합니다.

iptables -t nat -A PREROUTING -i gre0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE

4단계: Cisco 라우터 구성

먼저 Cisco 라우터에서 WCCP를 활성화해야 합니다.

R1(config)# ip wccp version 2
Then we must use an ACL for introducing SQUID cache machine to router
R1(config)# ip access-list standard SQUID-MACHINE
R1(config-std-nacl)# permit host 192.168.1.10

다음으로 두 가지 다른 목적을 위해 또 다른 액세스 목록을 정의합니다. 먼저 WCCP 프로토콜에 의한 리디렉션에서 SQUID 트래픽을 제외해야 합니다(그렇지 않으면 무한 루프에 빠집니다!!). 두 번째로 정의합니다. WCCPSQUID를 통과하려는 LAN 트래픽.

R1(config)#ip access-list LAN-TRAFFICS
R1(config-ext-nacl)#deny ip host 192.168.1.10 any                            #Prevent SQUID to get in loop
R1(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 any equal www           #define LAN Traffics

액세스 목록을 만든 후에는 라우터에서 WCCP 프로토콜을 구성해야 합니다.

R1(config)# ip wccp web-cache redirect-list LAN-TRAFFIC group-list SQUID-MACHINE

모든 것이 최종 단계로 준비되었습니다. WCCP 구성을 사용하여 트래픽을 리디렉션해야 하는 인터페이스/인터페이스를 라우터에 알려야 합니다.

R1(config)#interface fastEthernet 0/0
R1((config-if)# ip wccp web-cache redirect in

요약

이제 ROUTER(기본 게이트웨이인 TCP 포트 80)에서 직원의 웹 서핑 패킷(TCP 포트 80에 있음)을 리디렉션하는 시나리오에 따라 더 나은 이해를 위해 모든 명령과 텍스트를 몇 줄로 요약할 시간입니다. 클라이언트)는 WCCP 프로토콜을 사용하여 오징어 캐시 머신으로 향합니다.

이러한 모든 프로세스는 자동으로 수행되었으며 클라이언트 측에는 추가 구성이 없습니다. 따라서 LAN의 웹 트래픽에 대한 정책을 제어하고 설정할 수 있습니다. 예를 들어 제한된 시간 내에 웹 서핑 액세스 권한을 얻고, 최대 다운로드 크기를 제한하고, 맞춤형 블랙리스트 및 화이트리스트를 정의하고, 인터넷 활동 사용에 대한 전체 보고서를 생성할 수 있습니다.

이 시나리오에서 흥미로운 사실 중 하나는 오징어 기계가 다운될 때 라우터가 이 문제를 감지하고 패킷 리디렉션을 중지하여 네트워크에서 가동 중단 시간 없이 즐길 수 있다는 것입니다.

본 글과 관련하여 질문이 있으신 경우 아래 댓글창을 통해 답변을 남겨주세요.