Установка і настройка SQUID3 проксі сервера, на базі Ubuntu Server 14.04.1



Продовжуємо цикл статей з налаштуванням сервера ubuntu 14.04.1, сьогодні на черзі встановлення та налаштування squid3 - проксі сервера для ubuntu server. Якщо ви ще не знаєте що таке проксі-сервер, спробую описати одним реченням. Проксі-сервер - це комп'ютер, який обробляє запити клієнтських комп'ютерів при зверненні до мережі інтернет.

З допомогою проксі сервера, можна не тільки надати централізований доступ до інтернету, але і лімітувати його, закривати доступ до певних сайтів, відкривати доступ тільки до дозволених сайтів, кеш статичні дані (css, картинки, банери...) і багато іншого.

Для установки проксі сервера я буду використовувати вже готовий сервер з ubuntu 14.04.1 і налаштованими службами DHCP і DNS. І так, приступимо.

Відкриваємо доступ до інтернету для комп'ютерів в локальній мережі

Для початку нам потрібно відкрити повний доступ до інтернету для всіх комп'ютерів в нашій локальній мережі. Для цього скористаємося NATом. NAT - технологія дозволяє пускати весь мережевий трафік через одну адресу. Тобто всі запити до інтернету в локальній мережі будуть оброблятися саме сервером.

Створимо файл з налаштуваннями


sudo touch /etc/nat

Внесемо в цей фал наступне:


#!/bin/sh #Включаємо форвардінг пакетів echo 1 > /proc/sys/net/ipv4/ip_forward #Дозволяємо трафік на lo iptables-A INPUT-i lo-j ACCEPT #Дозволяємо доступ з внутрішньої мережі назовні iptables-A FORWARD-i eth1-o eth0-j ACCEPT #Включаємо NAT iptables-t nat-A POSTROUTING-o eth0-s 192.168.0.0/24-j MASQUERADE #Дозволяємо відповіді із зовнішньої мережі iptables-A FORWARD-i eth0-m state --state ESTABLISHED,RELATED-j ACCEPT #Забороняємо доступ ззовні у внутрішню мережу iptables-A FORWARD-i eth0-o eth1-j REJECT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

#!/bin/sh
#Включаємо форвардінг пакетів
echo 1 > /proc/sys/net/ipv4/ip_forward
#Дозволяємо трафік на lo
iptables-A INPUT-i lo-j ACCEPT
#Дозволяємо доступ з внутрішньої мережі назовні
iptables-A FORWARD-i eth1-o eth0-j ACCEPT
#Включаємо NAT
iptables-t nat-A POSTROUTING-o eth0-s 192.168.0.0/24-j MASQUERADE
#Дозволяємо відповіді із зовнішньої мережі
iptables-A FORWARD-i eth0-m state --state ESTABLISHED,RELATED-j ACCEPT
#Забороняємо доступ ззовні у внутрішню мережу
iptables-A FORWARD-i eth0-o eth1-j REJECT

Збережемо файл і привласнимо йому права на виконання:


sudo chmod x /etc/nat

Додамо запуск NATа (рядок post-up /etc/nat) в файл з мережевими налаштуваннями:


sudo nano /etc/network/interfaces

ваш файл повинен виглядати так:


auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.104 netmask 255.255.255.0 шлюз 192.168.1.1 auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 post-up /etc/nat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.104
netmask 255.255.255.0
шлюз 192.168.1.1
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
post-up /etc/nat

Зберігаємо, закриваємо і перезавантажуємо сервер:


sudo reboot

У такому вигляді, все готово для роздачі інтернету комп'ютерів в мережі. Якщо зараз включити клієнтський комп'ютер, він отримає IP адресу від DHCP сервера, а також отримає установки шлюзу (192.168.0.1), відповідно повинен з'явиться інтернет. Якщо інтернет з'явився, рухаємося далі, якщо ні, перевіряємо що зробили не так.

Установка і настройка Squid3

Тепер нам потрібно встановити Squid3 - сам проксі сервер. У статті описані базові налаштування, для більш поглибленої налаштування, раджу почитати документацію по squid.

Встановлюємо пакет squid3
sudo aptitude install squid3

Після установки відкриємо файл /etc/squid3/squid.conf


sudo nano /etc/squid3/squid.conf

В першу чергу знайдемо рядок http_port 3128 і додамо до неї значення intercept і IP адреса сервера, щоб вийшло ось так:


http_port 192.168.0.1:3128 intercept

1

http_port 192.168.0.1:3128 intercept

Це робиться для того, щоб у подальшому нам не доводилося налаштовувати проксі сервер на всіх клієнтських машинах (проксі буде прозорим).

Тепер, потрібно вказати мережа, в якій буде працювати наш проксі сервер, для цього раскомментируем рядок acl localnet src 192.168.0.0/16 # RFC1918 possible internal network і вкажемо префікс маски мережі 24 замість 16 (так як у нас маска 255.255.255.0). У підсумку строку повинна виглядати так:


acl localnet src 192.168.0.0/24 # RFC1918 possible internal network

1

acl localnet src 192.168.0.0/24 # RFC1918 possible internal network

дозволяємо доступ до проксі з внутрішньої мережі, расскомментировав рядок


http_access allow localnet

1

http_access allow localnet

Тепер налаштуємо кешування. Потрібно знайти рядок cache_dir ufs /var/spool/squid3 100 16 256, розкоментувати її і поміняти значення на такі:


cache_dir ufs /var/spool/squid3 2048 16 256

1

cache_dir ufs /var/spool/squid3 2048 16 256

Далі расскомментируем рядок maximum_object_size 4 MB, тим самим вкажемо максимальний розмір кешувального об'єкта.

Раскомментируем рядок maximum_object_size_in_memory 512 KB, тим самим вказуємо максимальний обсяг режим об'єкта в пам'яті.

Раскомментируем рядок cache_mem 256 MB і замінимо занчение з 256 на 1024, тим самим вказуємо допустимий обсяг пам'яті.

Ось ми і налаштували кешування, кешування повинно знизити навантаження на канал і збільшити швидкість відкриття сторінок. Кеша при перезавантаження сервера.

Тепер включимо ведення логів, для цього раскомментируем рядок access_log daemon:/var/log/squid3/access.log squid і додамо нижче logfile_rotate 31(лог-файли будуть зберігатися 31 день, після буде замінено самі старі).

На цьому базове налаштування squid3 можна завершити. Перезапустим squid3


sudo service squid3 restart

Тепер проксі сервер налаштований і запущений, але для того щоб трафік користувачів йшов саме через нього, потрібно загорнути весь http-трафік на squid. Для цього додаємо в /etc/nat рядок:


# Загортаємо http проксі iptables-t nat-A PREROUTING-i eth1 ! -d 192.168.0.0/24-p tcp-m multiport --dport 80,8080-j DNAT --to 192.168.0.1:3128

1
2

# Загортаємо http проксі
iptables-t nat-A PREROUTING-i eth1 ! -d 192.168.0.0/24-p tcp-m multiport --dport 80,8080-j DNAT --to 192.168.0.1:3128

Собствеенно тепер мій файл /etc/nat має такий вигляд:


#!/bin/sh #Включаємо форвардінг пакетів echo 1 > /proc/sys/net/ipv4/ip_forward #Дозволяємо трафік на lo iptables-A INPUT-i lo-j ACCEPT #Дозволяємо доступ з внутрішньої мережі назовні iptables-A FORWARD-i eth1-o eth0-j ACCEPT #Включаємо NAT iptables-t nat-A POSTROUTING-o eth0-s 192.168.0.0/24-j MASQUERADE #Дозволяємо відповіді із зовнішньої мережі iptables-A FORWARD-i eth0-m state --state ESTABLISHED,RELATED-j ACCEPT #Забороняємо доступ ззовні у внутрішню мережу iptables-A FORWARD-i eth0-o eth1-j REJECT # Загортаємо http проксі iptables-t nat-A PREROUTING-i eth1 ! -d 192.168.0.0/24-p tcp-m multiport --dport 80,8080-j DNAT --to 192.168.0.1:3128

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

#!/bin/sh
#Включаємо форвардінг пакетів
echo 1 > /proc/sys/net/ipv4/ip_forward
#Дозволяємо трафік на lo
iptables-A INPUT-i lo-j ACCEPT
#Дозволяємо доступ з внутрішньої мережі назовні
iptables-A FORWARD-i eth1-o eth0-j ACCEPT
#Включаємо NAT
iptables-t nat-A POSTROUTING-o eth0-s 192.168.0.0/24-j MASQUERADE
#Дозволяємо відповіді із зовнішньої мережі
iptables-A FORWARD-i eth0-m state --state ESTABLISHED,RELATED-j ACCEPT
#Забороняємо доступ ззовні у внутрішню мережу
iptables-A FORWARD-i eth0-o eth1-j REJECT
# Загортаємо http проксі
iptables-t nat-A PREROUTING-i eth1 ! -d 192.168.0.0/24-p tcp-m multiport --dport 80,8080-j DNAT --to 192.168.0.1:3128

Якщо ви зробили все як написано в статті, значить у вас буде повністю робочий проксі сервер. У наступних статтях я напишу як встановити контент - фільтр Dansguardian і як зробити black list для додавання заборонених сайтів.

Якщо залишилися питання, ласкаво просимо в коментарі.

via