Установка кэширующего WEB сервера Squid на Ubuntu 16.04

squid3
Сегодня установим и настроим кэширующий WEB сервер Squid на Ubuntu 16.04, также разберем настройку NAT на Ubuntu Server.
Squid является кэширующим прокси-сервером для Web-приложений с поддержкой протоколов HTTP, HTTPS, FTP, и т.д. Используя squid, Вы уменьшите пропускную способность и сократите время отклика интернет страниц путем кэширования и повторного использования часто запрашиваемые веб-страницы. Squid работает на большинстве доступных операционных систем, включая Windows, и распространяется под лицензией GNU GPL.

Установка squid на Ubuntu 16.04

Итак, для работы squid установим пакет из репозитория Ubuntu.

sudo apt install squid3

После установки пакета приступим к редактированию конфигурационного файла

Настройка squid на Ubuntu 16.04

Параметры сервера:
• Сеть 192.168.0.0
• Маска 255.255.255.0
• IP-адрес 192.168.0.1
• Порт 3128
Файл конфигурации squid.conf в Ubuntu 16.04 располагается по пути /etc/squid/squid.conf, отредактируйте его в соответствии с моим листингом:

 sudo nano /etc/squid/squid.conf

Пример файла squid.conf

### Разрешаем доступ только из своей сети
acl localnet src 192.168.0.0/24
acl SSL_ports port 443 # SSL
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https skype
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

### HTTP доступ
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all 

### Порт и IP адрес прокси-сервера, а также делаем его прозрачным (transparent если не написать то прописываем у клиента прокси-сервер вручную)
http_port 192.168.0.1:3128 transparent 

### Допустимый объем памяти
cache_mem 512 MB 

### Максимальный объем кэшированного объекта в памяти
maximum_object_size_in_memory 512 KB 

### Максимальный и минимальный размер кэшируемого файла
maximum_object_size 60 MB
minimum_object_size 2 KB 

### Директория кэша размер кэша=4Mb Кол-во папок первого уровня=32 и второго=256
cache_dir ufs /var/spool/squid 4096 16 256 

### Делаем прокси анонимным (прячем внутренние IP-адреса)
via off
forwarded_for delete

### Записываем логи и храним их 31 день
access_log daemon:/var/log/squid/access.log squid
logfile_rotate 31

coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

Настройка NAT в Ubuntu 16.04

Далее нам надо создать правило iptables, а также включить перенаправление пакетов из одной сетевой карточки в другу и присвоить статический IP адрес карточки которая смотрит в локальную сеть.

Первое: смотрим какие у нас есть интерфейсы командой ifconfig -a. У меня на Ubuntu Server 16.04 в локальную сеть смотрит интерфейс с названием enp0s8, а в интернет enp0s3. Присвоим интерфейсу enp0s8 статический IP адрес, а также заранее укажем путь для запуска скрипта с правилами iptables. Для этого откроим в редакторе файл interfaces:

sudo nano /etc/network/interfaces

Отредактируем его в соответствии с моим листингом:

auto lo
iface lo inet loopback

auto enp0s8
iface enp0s8 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

post-up /etc/nat   # Запись для запуска NAT

Второе: создадим правило iptables и включить перенаправление пакетов. Для этого в Директории /etc создадим файл с именем nat

sudo touch /etc/nat

Откроем его для редактирования

sudo nano /etc/nat

добавим в него следующий листинг

Пример файл NAT для перенаправления трафика через Squid

#!/bin/sh
# Включаем форвардинг (перенаправление) пакетов 
echo 1 > /proc/sys/net/ipv4/ip_forward

# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем трафик на enp0s3 -интерфейсе
iptables -A INPUT -i enp0s3 -j ACCEPT

# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT

# Включаем NAT
iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.0.0/24 -j MASQUERADE

# Разрешаем ответы из внешней сети
iptables -A FORWARD -i enp0s3 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i enp0s3 -o enp0s8 -j REJECT

# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i enp0s8 ! -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128

Дальше остается только перезагрузить компьютер и все должно заработать.

sudo reboot

Для проверке все ли работает на машине_2 (у меня на Windows_7) подключенной к интерфейсу enp0s8 сервера, надо вручную прописать IP адрес из Вашей сети в моем случае я прописываю из сети 192.168.0.0 (например 192.168.0.2) и проверяю есть ли на машине_2 интернет.
На этом все!

Видео урок по установке squid

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Установка кэширующего WEB сервера Squid на Ubuntu 16.04
Пожалуйста оцените эту статью

8
Оставить комментарий

avatar
4 Цепочка комментария
4 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
4 Авторы комментариев
SYSadminАлексейДмитрийdog Авторы недавних комментариев
  Подписаться  
новее старее большинство голосов
Уведомление о
Алексей
Гость
Алексей

Скажите, а HTTPS он тоже контролирует?

Дмитрий
Гость
Дмитрий

Олег Большущее спасибо!!!! Благодаря твоей настройке все работает отлично!! Спасибо за помощь в настройке

dog
Гость
dog

Kanaet, spb. A kak s ssl nastroit? $to-to nikak ne poimu.

Петр
Гость
Петр

Привет.
Если я правильно понимаю, то в инструкции не хватает настроек второго (точнее первого) сетевого адаптера enp0s3

Меню

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Рейтинг@Mail.ru