Рассмотрим прозрачное проксирование http-траффика с использованием протокола wccp2, прокси-сервера squid3, debian 7.5.
В GNS3 собрал следующую схему:
Подробно, как настраивать интерфейсы маршрутизатора, виртуальных машин, можно прочитать в статье Дмитрия.
В схеме: fa0/1 маршрутизатора, XP, DEBIAN находятся в одной подсети 10.0.0.0/25
XP (клиент): 10.0.0.100
DEBAIN: 10.0.0.50
Fa 0/1: 10.0.0.1
Fa 0/0: 192.168.100.133 – интерфейс для выхода в интернет. Он у меня в бридже с реальным интерфейсом, который имеет доступ в Интернет из виртуализации.
Суть задачи: заставить хосты в подсети проксировать http трафик прозрачно.
Как это работает: между squid и cisco создается GRE-туннель, в который перенаправляется проксируемый трафик с роутера. Этот трафик из туннеля заворачивается на порт squid. Дальше squid проксирует трафик и отдает его маршрутизатору и клиенту.
Настройка всей цепи крайне проста.
Для squid подойдет эта простейшая конфигурация:
visible_hostname wccp-proxy.sahalin.local
wccp2_router 10.0.0.1
wccp2_forwarding_method 1
wccp2_return_method 1
wccp2_service standard 0 password=cisco
http_port 3128 transparent
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/25
acl Safe_ports port 80
acl Safe_ports port 443
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access allow localhost
http_access allow localnet
http_access deny all
cache_dir ufs /var/squid/cache 1024 16 256
refresh_pattern . 0 20% 4320
Запрещалки допиливаются потом.
Настраиваем циско. Касательно этой темы, нас интересуют строки, отмеченные полужирным шрифтом.
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname 2691
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip wccp web-cache redirect-list WCCP_Redirect password cisco
ip cef
!
!
!
!
no ip domain lookup
ip auth-proxy max-nodata-conns 3
ip admission max-nodata-conns 3
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
log config
hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface FastEthernet0/0
ip address 192.168.100.134 255.255.255.0
ip nat outside
ip virtual-reassembly
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 10.0.0.1 255.255.255.128
ip wccp web-cache redirect in
ip nat inside
ip virtual-reassembly
duplex auto
speed auto
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.168.100.2
!
!
no ip http server
no ip http secure-server
ip nat pool nat-1 192.168.100.134 192.168.100.134 netmask 255.255.255.0
ip nat inside source list 10 pool nat-1 overload
!
ip access-list standard WCCP_redirect
deny 10.0.0.50
permit 10.0.0.0 0.0.0.128
!
access-list 10 permit 10.0.0.0 0.0.0.255
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
line vty 0 4
login
!
!
end
После всего, сам подымается туннель. Соответствующие строки можем увидеть в консоли циско.
В debian смотрим следующее:
#Iptunnel show
Должно показать:
gre0: gre/ip remote any local any ttl inherit nopmtudisc
если такая строка есть, то никакой второй туннель, как пишут в статьях подымать отдельно не надо (iptunnel add бла бла)
Назначим ему адресок для порядка, из другой подсети.
#ifconfig gre0 10.2.0.50 up
Запишем сразу параметр в /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 10.0.0.50
netmask 255.255.255.128
gateway 10.0.0.1
auto gre0
iface gre0 inet static
address 10.2.0.50
netmask 255.255.255.128
Поставьте tcpdump, послушайте трафик на интерфейсе gre0. Попробуйте открыть что-нибудь в браузере на клиенте.
Если трафик есть, значит осталась самая малость – завернуть его на прокси squid.
А делается это так:
#iptables –t nat –A PREROUTING –i gre0 –p tcp –dport 80 –j REDIRECT –to-ports 3128
Теперь должны уже страницы открываться, писаться логи в сквиде /var/log/squid3/access.log
by Menpavel
Comments: