Документ создан: 11.02.2010

Прозрачный прокси-сервер

Захотелось мне сделать дома так, чтобы все домашние хосты, пытающиеся выйти в интернет по http, ходили туда через прокси (squid). Потратив немного времени, нашёл решение, но для начала опишу ситуацию.

Имеем squid_host – компьютер под управлением kubunut 8.04, который выступает в роли шлюза. На нём два интерфейса: eth0 смотрит в сеть провайдера, а eth1 смотрит во внутреннюю сеть. На этом хосте поднят и работает прокси-сервер Squid 2.6.STABLE18.

В данной ситуации настройка прозрачного прокси (transparent proxy) свелась к трём шагам:

  1. Добавить правило:
    sudo iptables -t nat -I PREROUTING 1 -i eth1 -s ! squid_host -p tcp --dport 80 -j DNAT --to-destination squid_host:3128
  2. исправить squid.conf, добавив против http_port директиву "transparent":
    http_port 3128 transparent
  3. перегрузить прокси-сервер
    sudo /etc/init.d/squid restart

Естественно, правило из п.1 должно каким-то образом добавляться при старте компьютера. У меня имеется стартовый скрипт, который добавляет все правила iptables, включая указанное в п.1.

 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate