2007/04/18

Установка Debian-маршрутизатора с возможностями прозрачного proxy-сервера

1. Установить Debian 4.0 (Etch). Описание тестировалось на netinstall-дистрибутиве, eth0 - локальная сеть 192.168.1.0/24, eth1 - внешний интерфейс. Данная версия Debian содержит Squid 2.6.5, а для этой версии несколько изменились настройки для прозрачного proxy.

2. Создать скрипт /etc/network/if-up.d/00-firewall следущего содержания:

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

#
# удалить все действующие правила
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Всегда принимать трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешить соединения, которые инициированы изнутри (eth0)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешить доступ из LAN-сети к внешним сетям
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Запретить forward извне во внутреннюю сеть
iptables -A FORWARD -i eth1 -o eth1 -j REJECT

# Включить forward
echo 1 > /proc/sys/net/ipv4/ip_forward

3. Установить proxy-сервис squid, перед этим удостоверившись, что в файле /etc/hosts указан fqdn-имя для данного сервера, иначе squid будет ругаться.

apt-get install squid

4. Поправить конфигурационный файл squid'а - /etc/squid/squid.conf

http_port 127.0.0.1:3128
http_port 192.168.1.254:3128 transparent
cache_mgr admin@example.com
acl office src 192.168.1.0/24

5. Добавить в /etc/network/if-up.d/00-firewall строки для того, чтобы была возможность использовать squid прозрачно (transparent)

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 3128

После этого перегрузить для чистоты эксперимента сервер и попробовать обратиться с внутренней сети к какому-нибудь внешнему сайту. Если всё хорошо, то сайт должен открыться как и прежде, а в логах squid (/var/log/squid/access.log) должны появиться соответствующие записи.

Ссылки:

  1. Setting up a simple Debian gateway
  2. Transparent proxies via Squid
  3. Accelerator Mode - Squid User's Guide

1 comment:

corpix said...

Спасибо!Как раз то, что было нужно.