Ubuntu NAT + DHCP + Squid Прозрачный Кэширующий Прокси-Сервер

Дата публикации: 18-11-2011 | Автор: MelfisFettel | Рубрика: Ubuntu Server

SQUID + NATВ этой статье поднимем сервер позволяющий использовать общий доступ в интернет для сети организации. Для этого я буду использовать Ubuntu Server 10.04. Преимущества маршрутизатора на Linux очевидны. Это низкие требования к железу и бесплатность программного обеспечения. В данном случае я рассмотрю настройку прозрачной маршрутизации с использованием одного сетевого интерфейса на маршрутизаторе (так же приведу листинги для двух интерфейсов). Для достижения наших целей я использую iptables, dnsmasq и Прокси-Сервер SQUID.

Начальная настройка

Для начала введем в консоль команду

1
Ifconfig
Ifconfig

Из ответа сервера видно, что у меня есть только один сетевой интерфейс eth0. Он подключен к общему свитчу и имеет адрес 192.168.138.10.


SQUID настройка прозрачного прокси сервера

Для того что бы настроить сетевые интерфейсы отредактируйте файл /etc/network/interfaces

1
nano  /etc/network/interfaces
nano  /etc/network/interfaces


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

где:

address – адрес вашего сетевого интерфейса (У меня это 192.168.138.10)
netmask – маска сети (У меня 255.255.255.0)
network – адрес сети (Мой 192.168.138.0)
broadcast – броадкаст адрес сети (У меня 192.168.138.255)
gateway – шлюз через который этот компьютер выходит в интернет (Мой 192.168.138.140)
dns -nameservers – адрес DNS сервера (Для моего сервера это 192.168.138.140)

То есть для моей сети я использую шлюз 192.168.138.140 с DNS сервером 192.168.138.140, и мой сервер доступен в локальной сети по адресу 192.168.138.10.
Так же загляните в /etc/resolv.conf и укажите там ваши DNS сервера. (DNS провайдера или шлюза интернет.)

1
nameserver 192.168.138.140
nameserver 192.168.138.140

Моя сеть выглядит следующим образом:


настройка SQUID

То есть мой сервер на данный момент имеет доступ в интернет. Теперь раздадим его для компьютеров в локальной сети.

Перед установкой какого либо программного обеспечения я советую выполнять

1
2
sudo apt-get update
sudo apt-get upgrade
sudo apt-get update
sudo apt-get upgrade

Что бы обновить списки пакетов и сами пакеты.

Настройка NAT

Настройка NAT Ubuntu Linux

Для начала нужно создать сам файл с настройками NAT. (Вместо username вставьте имя пользователя в каталоге которого будет хранится файл с настройками iptables. В принципе расположение файла не имеет значения. Если хотите, можете его расположить в любой директории вашего сервера.)

1
2
sudo touch /home/username/transparent_nat
sudo nano /home/username/ transparent_nat
sudo touch /home/username/transparent_nat
sudo nano /home/username/ transparent_nat

Запишем в него следующие инструкции:

1
2
3
4
5
6
7
8
9
10
#!/bin/sh
# При использовании одного сетевого интерфейса eth0 для доступа в локальную сеть и интернет.
# Включаем пересылку пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward
# Разрешим проход трафика на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT
# Включаем NAT. Замените 192.168.138.0 на адрес своей сети
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.138.0/24 -j MASQUERADE 
#!/bin/sh
# При использовании одного сетевого интерфейса eth0 для доступа в локальную сеть и интернет.
# Включаем пересылку пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward
# Разрешим проход трафика на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT
# Включаем NAT. Замените 192.168.138.0 на адрес своей сети
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.138.0/24 -j MASQUERADE 

Или вариант для настройки, если используется несколько сетевых карт. В этом листинге предполагается что интерфейс eth0 смотрит в сеть интернет, а eth1 в локальную сеть.

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
# При использовании нескольких сетевых интерфейсов.  eth0 – интернет, eth1 - локальная сеть.
# Включаем пересылку пакетов.
echo 1 > /proc/sys/net/ipv4/ip_forward
# Разрешим проход трафика на loopback-интерфейсе.
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем доступ из внутренней сети наружу.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 
# Включаем NAT. Замените 192.168.138.0 на адрес своей сети.
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.138.0/24 -j MASQUERADE 
# Запретим доступ из внешней сети во внутреннюю.
iptables -A FORWARD -i eth0 -o eth0 -j REJECT
#!/bin/sh
# При использовании нескольких сетевых интерфейсов.  eth0 – интернет, eth1 - локальная сеть.
# Включаем пересылку пакетов.
echo 1 > /proc/sys/net/ipv4/ip_forward
# Разрешим проход трафика на loopback-интерфейсе.
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем доступ из внутренней сети наружу.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 
# Включаем NAT. Замените 192.168.138.0 на адрес своей сети.
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.138.0/24 -j MASQUERADE 
# Запретим доступ из внешней сети во внутреннюю.
iptables -A FORWARD -i eth0 -o eth0 -j REJECT

Так как настройки iptables не сохраняются после перезагрузки системы, сделаем наш скрипт исполняемым:

1
sudo chmod +x /home/username/transparent_nat
sudo chmod +x /home/username/transparent_nat

И добавим его в конец файла /etc/network/interfaces добавив туда вот такую инструкцию:

1
post-up /home/username/transparent_nat
post-up /home/username/transparent_nat

то есть Ваш /etc/network/interfaces теперь будет выглядеть вот так:


Настройка прозрачного прокси SQUID

Перезапускаем сеть:

1
sudo /etc/init.d/networking restart
sudo /etc/init.d/networking restart

Для того что бы не менять каждый раз имена DNS серверов на клиентских компьютерах, установим на наш сервер простой DNS: Dnsmasq.

Установка Dnsmasq

Для установки пакета выполним команду:

1
sudo apt-get install dnsmasq
sudo apt-get install dnsmasq

Теперь нужно что бы наш DNS принимал DNS запросы из внутренней сети предприятия. Для этого откроем /etc/dnsmasq.conf. Найдем в нем строку

1
#listen-address=
#listen-address=

И заменим ее на:

1
listen-address=127.0.0.1, 192.168.138.10 #Указав адрес интерфейса смотрящего в локальную сеть.
listen-address=127.0.0.1, 192.168.138.10 #Указав адрес интерфейса смотрящего в локальную сеть.

Сохраняем изменения и перезапускаем наш DNS:

1
sudo /etc/init.d/dnsmasq restart 
sudo /etc/init.d/dnsmasq restart 

Для того что бы у пользователей появился интернет достаточно в настройках их подключения к локальной сети указать Шлюз: IP — адрес вашего сервера, DNS — адрес вашего сервера. Но ходить на каждый компьютер не удобно, по этому настроим DHCP сервер для автоматической раздачи настроек Вашей локальной сети.

Настраиваем DHCP

На самом деле мы уже установили DHCP сервер в составе пакета dnsmasq. Теперь его осталось только настроить. Снова открываем /etc/dnsmasq.conf, и находим там строку

1
# dhcp-range=192.168.0.50,192.168.0.150,12h
# dhcp-range=192.168.0.50,192.168.0.150,12h

Заменим эту строку вот такой (Укажем диапазон раздаваемых адресов от 192.168.138.11 до 192.168.138.100. Маска подсети 255.255.255.0. Для Вашей сети установите свой диапазон адресов.)

1
dhcp-range=192.168.138.11,192.168.138.100,255.255.255.0,12h
dhcp-range=192.168.138.11,192.168.138.100,255.255.255.0,12h

Адреса DNS сервера и шлюза будут подставлены автоматически из системных настроек вашего сервера. Перезапустим dnsmasq:

1
sudo /etc/init.d/dnsmasq restart
sudo /etc/init.d/dnsmasq restart

Теперь Ваш сервер не только раздает интернет для локальной сети, но и раздает IP адреса и настройки сети, теперь достаточно подключить новую машину в сеть и она будет иметь доступ в интернет без настроек вручную.

Кэширующий прокси-сервер Squid

Установка SQUID на Ubuntu 10.04

Теперь установим прокси-сервер SQUID. Для чего это нужно? SQUID — это кэширующий прокси сервер, он позволит снизить долю потребляемого трафика для клиентов Вашей локальной сети. Мы не будем создавать ограничения для пользователей или запрещать кому-либо доступ.

Установим сам SQUID командой:

1
sudo apt-get install squid
sudo apt-get install squid

и тут же его остановим

1
sudo /etc/init.d/squid stop
sudo /etc/init.d/squid stop

Для настройки SQUID отредактируем его конфигурационный файл /etc/squid/squid.conf

Найдите строку

1
#http_port 3128 
#http_port 3128 

И измените ее на:

1
http_port 3128 transparent
http_port 3128 transparent

теперь ищем строку

1
# cache_dir ufs /var/spool/squid 100 16 256
# cache_dir ufs /var/spool/squid 100 16 256

И меняем ее на:

1
cache_dir ufs /var/spool/squid 4096 32 256 
cache_dir ufs /var/spool/squid 4096 32 256 

теперь укажем список внутренних сетей для нашего прокси. Ищем вот такие строки:

1
2
3
acl localnet src 10.0.0.0/24 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src 10.0.0.0/24 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

Так как тут нет нашей сети, мы можем создать новую строку, либо раскоментировать и изменить уже существующую. Для начала закомментируем уже существующие строки поставив знак # перед ними. Теперь создадим вот такую строку (Для Вашей сети адрес может отличаться):

1
acl localnet src 192.168.138.0/24
acl localnet src 192.168.138.0/24

Теперь нужно разрешить доступ к прокси SQUID из нашей локальной сети. Найдите строку и раскоментируйте или допишите в случае ее отсутствия:

1
http_access allow localnet
http_access allow localnet

Заодно чуть ниже проверьте, что бы строка http_access deny all была закоментирована. Иначе может случится так что вообще никто не будет иметь доступа к Вашему SQUID.

Снимем комментарии со строк:

1
2
memory_pools on
memory_pools_limit 50 MB
memory_pools on
memory_pools_limit 50 MB

Эти строки определяют лимит использования памяти сервером SQUID.

Зададим язык для вывода ошибок пользователям. Найдите строку:

1
error_directory /usr/share/squid/errors/en
error_directory /usr/share/squid/errors/en

раскоментируйте ее или замените на

1
error_directory /usr/share/squid/errors/ru
error_directory /usr/share/squid/errors/ru

Сохраняем конфигурационный файл и выходим из редактора. Теперь нужно построить кэш для SQUID сервера. Введите команду:

1
sudo /usr/sbin/squid –z
sudo /usr/sbin/squid –z

В ответ Вы должны получить вот такой вывод:


Кэширующий прокси сервер SQUID

Теперь запустим наш прокси-сервер SQUID:

1
sudo /etc/init.d/squid start
sudo /etc/init.d/squid start

Теперь прописав в настройках соединения браузера на пользовательской машине адрес вашего прокси-сервера SQUID и порт 3128 вы должны получить доступ в интернет. Но это опять же неудобно так как снова придется ходить от компьютера к компьютеру и прописывать адрес прокси-сервера вручную. Эту проблему можно решить так же при помощи iptables. Все что нужно сделать это “завернуть” порты 80 и 8080 на порт вашего прокси SQUID 3128. Для этого допишем в наш файл /home/username/transparent_nat который мы создали в начале статьи вот такую конструкцию:

1
2
#Заворачиваем порты 80 и 8080 на порт SQUID 3128
iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.138.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.138.10:3128
#Заворачиваем порты 80 и 8080 на порт SQUID 3128
iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.138.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.138.10:3128

Теперь Ваш сервер готов.

Примечание! Для того что бы посмотреть список адресов выданных Ваши DHCP сервером можно использовать команду:

1
cat /var/log/syslog | grep DHCPOFFER
cat /var/log/syslog | grep DHCPOFFER

Анализаторы логов Вашего SQUID сервера вы можете найти и скачать по адресу http://www.squid-cache.org/Scripts/.

Понравилась статья? Расскажи друзьям:


Комментариев (33)

Проблема такая. У нас старый админ всё настроил и всё работает. Но когда мы подключаем в сеть новую машину на ней не появляется интернет, пинги идут, а доступ к открытию страниц запрещён, что делать?

Вероятнее всего у вас проблема с ACL. Попробуйте назначить компьютеру IP адрес с машины на которой уже работает интернет и проверить. Если заработает то что то неверно с ACL. Так же не попробуйте указать явно для браузера адрес и порт прокси сервера.

Скажите пожалуйста, вышеуказанная прозрачная настройка squid’a для всех протоколов (ftp, pop, smtp, icq и прочее) или же только для http?

Помогите, плиз. Всё сделал по Вашей инструкции, но проблема с «заворотом» портов. После того как добавляю эту строку и пытаюсь перезапустить сетевые интерфейсы пишет RTNETLINK answers: File exists.
И не в какую. Сетевая карта одна.

На данный момент не могу сказать точно, нахожусь в командировке. Скорее всего у вас используется два шлюза? Проблема в том что система не может переписать конфигурационный файл. Попробуйте с начала сбросить все маршруты и вернутся к дефолтным настройкам, и повторить конфигугирование.

dnsmasq ставит свой dhcp в обязательном опрядке? только что поставил и провозился с конфигом isc-dhcp. Не хотелось бы сносить. Можно оставить dnsmasq+isc-dhcp?

Мне нра) хорошая идея.

Добрый день, делаю все по вашей инструкции (|Ubuntu 12.04), проблема такая. Все настроил все сделал (1 часть, без прокси), подключаюсь, DHCP работает, все раздает, пинги не идут, но ip-шники сайтов вижу, пингуется порт локалки, но не пингуется шлюз….так же в этой версии убунты нельзя ничего сохранить в /etc/resolv.conf, поэтому добавил dns-nameserver в /etc/network/interfaces в eth1 который смотрит на локалку, не помогло….подскажите в чем может быть проблема….

Похоже что то не верно либо с iptables, либо с Dnsmasq. Попробуйте еще раз перепроверить все что Вы сделали. Где то ошибочка. (Для того что бы сохранились изменения в /etc/resolv.conf, выполните в консоли sudo nano /etc/resolv.conf. Вероятнее всего у Вас не хватает прав.)

Начиная с данной версии ubuntu /etc/resolv.conf изменить нельзя. все деляется через nm

Да, действительно с Ubuntu 12.04 все настройки делаются через Network Manager, все можно прописать в /etc/network/interfaces, добавив туда dns-nameservers, dns-search и dns-domain.

Добрый день! Очень интересный материал. У меня есть вопрос. Есть казначейская программа «Континент-АП» для защищенного соединения с ними. Я раньше не использовал прокси-сервер, а на новой работе он стоит. Сервер Ubuntu версия 7.04, Прокси-сервер SQUID версия 2.6.
Так вот нужно сделать так, что бы Континент-АП заработал. В инструкции Континент-АП написано (Внимание! Доступ через прокси-сервер абонентский пункт не поддерживает.
В случае работы через прокси-сервер необходимо настроить трансляцию адресов (NAT) по перечисленным в таблице портам.).
Я вот не знаю, стоит у меня NAT или нет и как это проверить?
И будет ли работать эта программа через пробросы портов ?
Ссылка на инструкцию Континет-АП и порты:
http://narod.ru/disk/64044364001.6af09fa9941426836b596668a2964011/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%9A%D0%BE%D0%BD%D1%82-%D0%90%D0%9F.RTF.html

Да, работать через NAT будет. Просто пробросьте необходимые Вам порты. К сожалению сейчас не могу Вам помочь. Очень много работы. :( Но если Вы посмотрите, в статье указано как «завернуть» порты на SQUID. Или сделайте прозрачный NAT.

Я зашел в каталог /usr/sbin/там есть:
IPTABLES
IPTABLES-SAVE
IPTABLES-RESTORE

При выполнении открывается пустой файл:
sudo nano /usr/sbin/iptables
При выполнении открывается иероглифы:
sudo nano /usr/sbin/iptables-save
sudo nano /usr/sbin/iptables-restore

Как мне добавить такое правило?

#!/bin/sh

IPTABLES=/usr/sbin/iptables

# ВНИМАНИЕ! СЛЕДУЮЩИЕ ПЕРЕМЕННЫЕ НЕОБХОДИМО ИЗМЕНИТЬ
# Внешний интерфейс (интернетовский):
IF_INET=»eth0″
# Внутренний интерфейс (в локальной сети):
IF_LOC=»eth1″
# Интернетовский IP-адрес:
IP_INET=»213.210.100.106″
# IP-адрес машины в локальной сети, на которой запускается PORTCHECK.EXE:
IP_LOC=»192.168.1.16″
# Адрес локальной подсети с маской подсети
# (в данном случае маска 24 бита, что эквивалентно 255.255.255.0):
NET_LOC=»192.168.1.0/24″

#
$IPTABLES -P INPUT DROP; $IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT; $IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP; $IPTABLES -F FORWARD
$IPTABLES -t nat -F

$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

### NAT
#
# PortCheck для Континент АП: исходящие пакеты
$IPTABLES -t nat -A POSTROUTING -s $NET_LOC -o $IF_INET -p tcp —dport 4439 -j SNAT —to-source $IP_INET
$IPTABLES -t nat -A POSTROUTING -s $NET_LOC -o $IF_INET -p tcp —dport 4443 -j SNAT —to-source $IP_INET
$IPTABLES -t nat -A POSTROUTING -s $NET_LOC -o $IF_INET -p tcp —dport 4440 -j SNAT —to-source $IP_INET
$IPTABLES -t nat -A POSTROUTING -s $NET_LOC -o $IF_INET -p udp —dport 4440 -j SNAT —to-source $IP_INET
$IPTABLES -t nat -A POSTROUTING -s $NET_LOC -o $IF_INET -p 250 -j SNAT —to-source $IP_INET
# PortCheck для Континент АП: входящие пакеты
$IPTABLES -t nat -A PREROUTING -d $IP_INET -i $IF_INET -p tcp —dport 4439 -j DNAT —to-destination $IP_LOC
$IPTABLES -t nat -A PREROUTING -d $IP_INET -i $IF_INET -p tcp —dport 4443 -j DNAT —to-destination $IP_LOC
$IPTABLES -t nat -A PREROUTING -d $IP_INET -i $IF_INET -p tcp —dport 4440 -j DNAT —to-destination $IP_LOC
$IPTABLES -t nat -A PREROUTING -d $IP_INET -i $IF_INET -p udp —dport 4440 -j DNAT —to-destination $IP_LOC
$IPTABLES -t nat -A PREROUTING -d $IP_INET -i $IF_INET -p 250 -j DNAT —to-destination $IP_LOC

### INPUT
#
# Откроем порты для подключения изнутри:
$IPTABLES -A INPUT -i $IF_LOC -j ACCEPT
# Разрешаем относительные соединения
$IPTABLES -A INPUT -i $IF_INET -m state —state ESTABLISHED,RELATED -j ACCEPT
# для пингов
$IPTABLES -A INPUT -i $IF_INET -p icmp -j ACCEPT
# PortCheck для Континент АП
$IPTABLES -A INPUT -i $IF_INET -p tcp —dport 4439 -j ACCEPT
$IPTABLES -A INPUT -i $IF_INET -p tcp —dport 4443 -j ACCEPT
$IPTABLES -A INPUT -i $IF_INET -p tcp —dport 4440 -j ACCEPT
$IPTABLES -A INPUT -i $IF_INET -p udp —dport 4440 -j ACCEPT
$IPTABLES -A INPUT -i $IF_INET -p 250 -j ACCEPT

### FORWARD
#
$IPTABLES -A FORWARD -i $IF_LOC -o $IF_INET -j ACCEPT
$IPTABLES -A FORWARD -i $IF_INET -o $IF_LOC -m state —state ESTABLISHED,RELATED -j ACCEPT
# PortCheck для Континент АП
$IPTABLES -A FORWARD -d $NET_LOC -p tcp —dport 4439 -j ACCEPT
$IPTABLES -A FORWARD -d $NET_LOC -p tcp —dport 4443 -j ACCEPT
$IPTABLES -A FORWARD -d $NET_LOC -p tcp —dport 4440 -j ACCEPT
$IPTABLES -A FORWARD -d $NET_LOC -p udp —dport 4440 -j ACCEPT
$IPTABLES -A FORWARD -d $NET_LOC -p 250 -j ACCEPT

Все что начиная с #!/bin/sh запишите в любой файл, и сделайте его исполняемым. после чего выполните.

Все сделал по Вашей инструкции,все работает, но периодически на компьютере не определяется ip выдает 169…

А у меня 3 сетевых карты, 1 сетевуха смотрит в интернет, вторая в локалку, надо подцепить третью, это корпоративка…..и что бы она раздавала тоже в локалку…… Я это решил аппаратно, но хотелось бы все сделать на одном сервере!!!! Как быть в данном случае??? Решения пока ни где не нашёл!!!

Создайте правило при помощи iptables и пользуйтесь на здоровье.

Хм, вы предлагаете завернуть на прокси только порты 80 и 8080, а как быть с зашифрованными соединениями? Завернуть и 443?

iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 443 -s 192.168.0.0/24 -j REDIRECT —to-ports 3128 Измените Адреса сетевой карты, и адрес сети на Ваши. И обзательно в конфиге сквида http_port 3128 transparent

Ребята я немного занимался линуксом ранее а сейчас прижало на конторе нужно ставить серв на нет вместо виндового… и такая трабла… есть одна сетевая карта «внешняя» работает на 172.16.х.х IP вторая карта «внутренняя» локальная работает на 10.0.0.1 и 20.0.0.1 IP по обеим внутренним нужно шейпить скорость и прописать маршрутизацию на оба IP шника … как можно… что не делал не получаеться…(((( помогите пожалуйста… буду очень признателен…

Замечательная статья-)))
Но у меня почему-то порты не завернулись на squid я изменил правила. iptables -t nat -A PREROUTING -i eth1 -p tcp —dport 80 -j DNAT —to 10.100.0.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 80 -j REDIRECT —to-port 3128
iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -p icmp -m icmp -j MASQUERADE Тут 3 правила, два для заворота на squid и одно последнее для того что-бы пинг проходил через сервер. Последнее правило можно и не писать но в этом случае команда ping ya.ru не будет работать, для меня это важно.

Добрый день, а можно как то заставить squid кэшировать файлы обновлений антивируса, exeшники и т.п., я у себя в настройках выставил средний размер файла 100 Мб, в конфиге прописал:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern -i \.gif$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.png$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.jpg$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.jpeg$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.pdf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.zip$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.tar$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.gz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.tgz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.exe$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.prz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.ppt$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.inf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.swf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mid$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.wav$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mp3$ 43200 100% 43200 override-lastmod override-expire
# example lin deb packages
#refresh_pattern (\.deb|\.udeb)$ 129600 100% 129600
refresh_pattern . 0 20% 4320

Странички кэшируются но вот как раз большие файлы нет, размер кэша выставлен в 16 Гб

Я бы вообще не стал кэшировать большие файлы. Попробуйте в конфиге указать параметр:
maximum_object_size ХХХХХ KB (Где ХХХХ максимальный размер файла).
Для касперского, я бы при обновлении антивируса на сервере, сохранял бы обновленные сигнатуры в папку (Там есть такая возможность.), а обновления для клиентов внутри локальной сети, делал бы из этой папки. Ну еще для управления антивирусом Kaspersky Administration Kit.

У меня для инте используется Мегафон 3G поэтому для меня кэширование больших файлов необходимо, так как в сети 20 компов и нужно обновлять антивирус и Windows соответственно. Этот параметр я уже менял но что то не вижу чтобы он кэшировал.

Статейка хорошая. А скажите, другие порты тоже завернуть можно? Торренты скажем, ФТП, и.т.п.

Дело в том что, торренты могут работать на разных портах как по tcp, так и по udp, по этому использовать прокси для торрентов на мой взгляд плохая идея. Лучше всего просто пробросить диапазон портов через iptables, или сделать полностью прозрачный NAT как описано выше. Все что будет идти на порты 80 и 8080 Вашего прокси, будет заворачиваться на squid, а остальное будет сразу пробрасываться в интернет.

Здравствуйте, а точно скрипт остановки называется /etc/init.d/squid stop а не /etc/init.d/squid3 stop ?

Доброго времени суток! Спасибо за статью! Все сделал, все прекрасно, кроме одного но — дошел до заворота портов — не проходит команда

Bad argument ’192.168.0.0/24′ Try iptables — or iptables —help for more inf

Подскажите что сделать, уже всю голову сломал

Спасибо!

Попробуйте изменить строку iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.138.0/24 -p tcp -m multiport —dport 80,8080 -j DNAT —to 192.168.138.10:3128

на

iptables -t nat -A PREROUTING -i eth0 ! -d 192.168.138.0/24 -p tcp -m multiport —dport 80,8080 -j DNAT —to 192.168.138.10:3128

и должно все заработать.

То есть по сути заменить …-d !… на …! -d…

Доброго времени суток. Я в ubuntu совсем новичок!Прошу помощи. Я работаю в учебном заведении и имею платный интернет для учителей и бесплатный для учеников. Хочу настроить прокси так, что бы от одного Ip из двух LAN лан карт выдавало два разных сигнала!

Возможно ли вообще сделать такое?

Обсудить