Распечатать страницу
Главная \ База готовых работ \ Готовые работы по компьютерным дисциплинам \ Компьютерные системы и сети \ 3761. Лабораторна робота №11, Створення та налаштування шлюзу Інтернет

Лабораторна робота №11, Створення та налаштування шлюзу Інтернет

« Назад

Код роботи: 3761

Вид роботи: Лабораторна робота

Предмет: Комп’ютерні системи та мережі

Тема: №11, Створення та налаштування шлюзу Інтернет

Кількість сторінок: 14

Дата виконання: 2015

Мова написання: українська

Ціна: безкоштовно

Мета: Набути практичних вмінь та навиків при роботі та конфігуруванні Інтернет шлюзу під Лінукс та Windows на базі проксі-сервера Squid.

Короткі теоретичні відомості

SQUID – це програма, що одержує http/ftp запити клієнтів і по них звертається до ресурсів Інтернет. Застосування проксі-сервера (squid) дає можливість використовувати фіктивні IP-адреси у внутрішній мережі (Masquerading), збільшує швидкість обробки запиту при повторному звертанні (кешування), забезпечує додаткову безпеку. Нема рації встановлювати проксі на своїй домашній машині, тому що функції кешування виконує браузер. Проксі-сервер варто застосовувати лише в тому випадку, якщо у вашій мережі три-чотири комп'ютера, яким потрібний вихід в Інтернет. У цьому випадку запит від браузера до проксі-серверу обробляється швидше, ніж від проксі до ресурсів Інтернет, і в такий спосіб збільшується продуктивність. До того ж, ми можемо сміло установити розмір кеша в браузерах клієнтів рівним нулеві.

Squid - високопродуктивний кешуючий проксі-сервер для web-клієнтів, що підтримує FTP, gopher і HTTP об'єкти даних. На відміну від традиційного кешуючого ПО, Squid обслуговує всі запити як один неблокуємий процес вводу-виводу.

Squid зберігає індекс даних і особливо часто використовувані об'єкти в ОЗУ, кешує запити DNS, підтримує неблокуємі запити DNS і негативне кешування невдалих запитів.

Squid підтримує SSL, гнучкий контроль доступу і повне журналювання запитів. Використовуючи полегшений Internet Cache Protocol, Squid-кеші можуть працювати за принципом ієрархії, що дозволяє додатково зберігати смугу пропускання каналу.

Squid складається з основної серверної програми squid, програми обслуговування Доменної Служби Імен dnsserver, деяких програм використовуваних опціонально для зміни запиту і виконання аутентифікації, керування і клієнтських інструментів. Коли squid стартує, він запускає зазначений в конфігурації процесів dnsserver, кожний з яких може виконуватися самостійно, блокуючи запити Domain Name System (DNS). Це зменшує час чекання кешем відпрацювування DNS-запитів.

Squid виріс із заснованого ARPA проекту Harvest.

Кешування Internet-об'єктів.

Кешування Інтернет-об'єктів - це спосіб збереження запитаних Інтернет-об'єктів (даних доступних по протоколах HTTP, FTP і gopher) на системі, що ближче до ділянки, що формує запити на одержання об'єктів, чим до джерела їх утримуючого. Web-браузери можуть використовувати локальний кеш Squid у якості HTTP проксі-сервера, що зменшує час доступу і завантаження зовнішнього каналу.

Якими системами підтримується Squid

Це ПО розроблялося для застосування на різних сучасних Unix-системах, відомо, що Squid працює на наступних платформах

• Linux

• FreeBSD

• NetBSD

• BSDI

• OSF and Digital Unix

• IRIX

• SunOS/Solaris

• NeXTStep

• SCO Unix

• AIX

• HP-UX

• OS/2

• Windows 9x,NT,2000,XP

Встановлення та налаштування Squid під Лінукс.

Squid у вигляді rpm-пакету входить до складу дистрибутива RedHat 9.0 і автоматично інсталюється при виборі варіанту інсталяції Network OS. Перевірити, встановлений squid чи ні, можна за допомогою наступної rpm-команди:

rpm -q squid

Останню версію Squid можна завжди одержати на домашньому сайті Squid або его зеркалах. Squid можна проінсталювати за допомогою наступної rpm-команди:

rpm -ivh squid-2.3.STABLE4-10.i386.rpm

або розпакувати із вихідних кодів і перекомпілювати, але при цьому слід чітко встановити всі необхідні ключі.

Корисні ключі./configure (--help)

--prefix=/usr/local/squid (куди інсталювати архітектурно-залежні файли за умовчанням /usr/local/squid);

--enable-carp (Ввімкнути підтримку CARP, cache... routing protocol);

--enable-icmp (вимірювати шлях до кожного HTTP-серверу при запитах з допомогою ICMP);

--enable-delay-pools (управління обмеженням трафіку);

--enable-useragent-log (журналювати заголовок Useragent );

--Disable-wccp (Вимкнути Web Cache Coordination Protocol);

--enable-kill-parent-hack (допомагає зробити shutdown чисто);

--enable-snmp (Ввімкнути моніторинг SNMP );

--enable-arp-асl (ввести адресу ACL);

--enable-cachemgr-hostname=имя-хоста (cachemgr.cgi буде за умовчанням направлений на цей хост);

--enable-htcp (HTCP - варіант ICP по TCP);

--enable-forw-via-db (Enable Forw/Via database);

--Enable-cache-digests (Використання Cache Digests);

--enable-err-language=мова;

--enable-gnuregex (замість regex, погано працюючого в Linux);

--enable-poll (можна використовувати poll або select; poll швидше, але не на всіх платформах працює; звичайно вибір робиться автоматично.);

--Disable-poll

--disable-http-violations (ігнорувати всі рядки в конфігурації, які порушують стандарти HTTP);

--enable-ipf-transparent (дозволити підтримку transparent proxy для систем використовуючих IP-Filter - в Linux і без цього добре);

--Disable-ident-lookups

--disable-internal-dns (This prevents Squid from directly sending and receiving DNS messages, and instead enables old external 'dnsserver' processes);

--enable-truncate (обнуляти файли замість їх видалення: швидше, але вимагає багато inode; були проблеми, коли переповнювалася таблиця inode; напевно параметр minimum_object_size через це з'явився);

--enable-underscores (дозволяти підкреслення в іменах хостів, сподіваючись що резолвер їх не обрізатиме);

--enable-heap-replacement (використовувати поліпшені алгоритми заміщення кешу замість стандартного LRU);

--enable-dlmalloc (своя бібліотека malloc, не швидка але без memore leak);

--enable-splaytree (прискорення обробки ACL);

Ключі запуску squid

-a (порт для вхідних HTTP запитів);

-d (відладка на stderr);

-f ім'я-файлу-конфігурації;

-h (help);

-k

reconfigure (посилка сигналу HUP)

rotate (оновити журнали; USR1)

shutdown (TERM)

interrupt (shutdown без паузи; INT)

kill (навіть не закривши журнали; KILL)

debug (почати/закінчити повне трасування; USR2)

check (ZERO)

-s (level 0 debugging to syslog на додаток до файлу)

-u (порт для вхідних ICP запитів)

-v (надрукувати версію)

-z (створити дисковий кеш при першому запуску)

-D (не робити DNS-тест при запуску)

-F (відновлення після збою не у фоновому режимі)

-N (не ставати фоновим процесом)

-V (підтримка віртуальних хостів для режиму акселерації - аналогічно "httpd_accel_host virtual" в конфігураційному файлі)

-X (включити відладку при розборі конфігураційного файлу)

-Y (більш швидке відновлення після збоїв)

Конфігурування Squid

Поведінкою Squid'a можна управляти конфігураційними параметрами, вказаними в його конфігураційному файлі squid.conf; цей файл як правило розташовується в каталозі /etc/squid.

Перше, що треба змінити це http_port, який визначає адресу сокета, на якому Squid слухатиме клієнтські запити; за умовчанням це 3128, але може використовуватися будь-яке значення, вказане користувачем. Разом із значенням порту, можна задати IP-адресу машини, на якій працює Squid; його теж можна змінити: http_port 192.168.0.1:8080

Вищенаведеним оголошенням Squid прив’язується до IP-адреси 192.168.0.1 і порту 8080. Адреса порту може бути будь-якою, але треба бути упевненим, що ніякі інші додатки не використовують цей порт. Схожими конфігураційними рядками можна встановити порти запитів для інших сервісів.

Доступ.

За умовчанням, Squid не дає ніяких прав доступу клієнтам, а для того, щоб права були, необхідно модифікувати настройки управління доступом. Потрібно вказати правила, що дозволяють доступ. Прокрутіть файл squid.conf і введіть наступні рядки прямо за рядком http_acess deny all.

асl mynetwork 192.168.0.1/255.255.255.0

http_access allow mynetwork

mynetwork це асl-ім'я, а наступний рядок - це правило, вживане до даного асl тобто mynetwork. 192.168.0.1 описує адресу мережі маскою котра є 255.255.255.0. mynetwork дає ім'я групі машин в мережі, а правило -- дозволяє доступ клієнтам. Цих змін разом з установкою http_port'а достатньо для того, щоб пустити Squid в роботу. Після внесення змін Squid може бути запущений командою

service squid start

Зауваження:

Squid може бути запущений автоматично у момент завантаження системи, шляхом включення його в ntsysv або setup (System Service Menu). Після кожної зміни конфігураційного файлу, поточний процес Squid'a повинен бути зупинений і для того, щоб зміни набули чинності -- запущений знову. Ці кроки можуть бути виконані наступними командами:

Перед першим запуском слід створити кеш, для цього повинен бути створений каталог, зазначений в Squid.conf, і на нього слід встановити права та власника користувача squid.

Після цього слід виконати команду squid –z.

Конфігурація клієнтської машини

Оскільки запитам клієнта призначений певний порт проксі-сервера, клієнти повинні бути конфігуровані відповідним чином. Припустимо, що машини вже приєднані до мережі (причому з правильними IP-адресами) і можуть пінгувати Linux-сервер.

порядок виконання команд:

su -

apt-get install squid

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

http_port 3128 transparent

cache_dir ufs /var/spool/squid 4096 32 256

#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.10.0/24 # RFC1918 possible internal network

http_access allow localnet

memory_pools on

memory_pools_limit 50 MB

error_directory /usr/share/squid/errors/Russian-koi8-u

/usr/sbin/squid -z

/etc/init.d/squid restart

1. Файли журналів

Всі журнальні файли (log files) Squid'а знаходяться в каталозі /var/log/squid; там зберігається журнал кешування(cache.log), журнал доступу (access.log) і менеджера зберігання (store.log). Файл access.log містить інформацію про запити клієнтів, їх активності і береже запис для кожного HTTP і ICP запиту, одержаного проксі-сервером: IP-адреса клієнта, метод запиту, запитаний URL і т.д. Дані цього файлу можуть бути використані для аналізу інформації про доступ до Інтернету. Існує безліч програм таких як sarg, calamaris, Squid-Log-Analyzer, які можуть проводити аналіз даних і складати відповідні звіти в HTML-форматі. Звіт може будуватися щодо користувачів, відвіданих сайтів, IP-адрес і т.д.

Розташування журнальних файлів може бути змінено наступними опціями

cache_access_log Для access.log

cache_log Для cache.log

cache_store_log Для store.log (Управління зберіганням)

pid_filename Файл, PID Squid'a.

Методи аутентифікації

За умовчанням Squid дозволяє будь-якому користувачу дістати доступ до Інтернету без жодної перевірки його особи. Для того, щоб надати доступ до Інтернет, тільки користувачам має на це право (з будь-якої машини в мережі), Squid надає можливість аутентифікації за допомогою зовнішньої програми, яка вимагає вірного імені користувача і пароля. Це досягається за допомогою використовування ACL proxy_auth і програми аутентифікації authenticate_program, яка примушує користувача ввести ім'я і пароль, перш ніж надасть доступ до Мережі. Доступні декілька програм, які Squid може використовувати для перевірки автентичності:

Необхідно вказати програми аутентифікації за допомогою опції authenticate_program, заздалегідь переконавшися, що відповідна програма встановлена і правильно працює.

Зміни у файлі squid.conf тепер також повинні враховувати цю програму аутентифікації.

асl pass proxy_auth REQUIRED

асl mynetwork src 192.168.0.1/255.255.255.0

http_access deny !mynetwork

http_access allow pass

http_access deny all

This uses PAM authentication program and all users need to authenticate before асcessing Internet.

Дл я зміни процесу аутентифікації можуть використовуватися опції подібні authenticate_ttl і authenticate_ip_ttl.

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

Для установки проксі сервера будемо використовувати вже готовий сервер з ubuntu 14.04 та налаштованими службами 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

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

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

address192.168.1.104

netmask255.255.255.0

gateway192.168.1.1

auto eth1

iface eth1 inet static

address192.168.0.1

netmask255.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

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

Тепер, потрібно вказати мережу в якій працюватиме наш проксі сервер, для цього розкоментуємо рядок 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

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

http_access allow localnet

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

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

Теперь файл /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 Встановити та сконфігурувати проксі-сервер Squid під Linux для свого комп’ютера.

2 Виконати тестування роботи проксі –сервера

3 Оформити звіт.