Перейти до вмісту

Проксі-сервер

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Proxy server)

Шаблон:Проксі-сервер Проксі-сервер (від англ. proxy — «представник, уповноважений») — серверна програма, що діє як посередник між клієнтом, що запитує ресурс, і сервером, що надає цей ресурс, в комп'ютерних мережах[1]. Це слугує методом спрощення або контролю складності запиту, або надає додаткові переваги, такі як балансування навантаження, конфіденційність або безпека. Проксі-сервери були розроблені для додавання структури та інкапсуляції розподіленим системам[2]. Спочатку клієнт з'єднується з проксі-сервером і запитує який-небудь ресурс (наприклад, e-mail), розташований на іншому сервері. Потім проксі-сервер або підключається до вказаного сервера та отримує ресурс у нього, або повертає ресурс з власного кешу (у випадках, якщо проксі має свій кеш).

Використання

[ред. | ред. код]

Найчастіше проксі-сервери застосовуються для:

  • Забезпечення доступу з комп'ютерів локальної мережі в інтернет.
  • Кешування даних: якщо часто відбуваються звернення до одних і тих же зовнішніх ресурсів, то можна тримати їх копію на проксі-сервері та видавати за запитом, знижуючи тим самим навантаження на канал у зовнішню мережу і прискорюючи отримання клієнтом шуканої інформації.
  • Стиснення даних: проксі-сервер завантажує інформацію з інтернету і передає інформацію кінцевому користувачеві в стислому вигляді. Такі проксі-сервери використовуються в основному з метою економії зовнішнього трафіка.
  • Захист локальної мережі від зовнішнього доступу: наприклад, можна налаштувати проксі-сервер так, що локальні комп'ютери будуть звертатися до зовнішніх ресурсів тільки через нього, а зовнішні комп'ютери не зможуть звертатися до локальних взагалі (вони бачать тільки проксі-сервер).
    Див. також: NAT
  • Обмеження доступу з локальної мережі до зовнішньої: наприклад, можна заборонити доступ до певних вебсайтів, обмежити використання інтернету якимось локальним користувачам, встановлювати квоти на трафік або смугу пропускання, фільтрувати рекламу і віруси.
  • Анонімізації доступу до різних ресурсів. Проксі-сервер може приховувати відомості про джерело запиту або користувача. У такому разі цільовий сервер бачить лише інформацію про проксі-сервер, наприклад, IP-адресу, але не має можливості визначити дійсне джерело запиту. Існують також проксі-сервери спотворюючі, які передають цільовим серверам неправдиву інформацію про справжнього користувача.

Проксі-сервер, до якого може отримати доступ будь-який користувач мережі інтернет, називається відкритим[3].

Види проксі-серверів

[ред. | ред. код]

Прозорий проксі — схема зв'язку, при якій трафік, або його частина, перенаправляється на проксі-сервер неявно (засобами маршрутизатора). При цьому клієнт може використовувати всі переваги проксі-сервера без додаткових налаштувань, але з іншого боку, не має вибору.

Зворотний проксі — проксі-сервер, який на відміну від прямого, ретранслює запити клієнтів із зовнішньої мережі на один або декілька серверів, логічно розташованих у внутрішній мережі. Часто використовується для балансування мережевого навантаження між декількома вебсерверами і підвищення їх безпеки, граючи при цьому роль міжмережевого екрану на прикладному рівні[4][5].

Технічні подробиці

[ред. | ред. код]
Схематичне зображення проксі-сервера, де комп'ютер посередині діє як проксі-сервер між двома іншими.

Клієнтський комп'ютер має налаштування (конкретної програми або операційної системи), відповідно до якої всі мережеві з'єднання по деякому протоколу здійснюються не на IP-адресу сервера (ресурсу), що виділяється з DNS-імені ресурсу, або безпосередньо завдань, а на IP-адресу (і інший порт) проксі-сервера.

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

Розпізнавши дані запиту, перевіривши його коректність і дозвіл для клієнтського комп'ютера, проксі-сервер, не розриваючи з'єднання, сам відкриває нове мережеве з'єднання безпосередньо з ресурсом і робить той же самий запит. Отримавши дані (або повідомлення про помилку), проксі-сервер передає їх клієнтському комп'ютеру.

З цього випливають два основні обмеження звичайного проксі-сервера:

  1. Проксі-сервер повинен бути повнофункціональним сервером і клієнтом для кожного підтримуваного протоколу.
  2. Проксі-сервер може обслуговувати тільки ті мережеві протоколи, у запиті яких передається ім'я або IP-адреса ресурсу (не належить до прозорих проксі — вони отримують IP-адресу безпосередньо з перехопленого з'єднання).

В часи становлення Інтернету проксі-сервери були найпопулярнішим способом виходу в Інтернет з локальних мереж. Цьому сприяли такі обставини:

  • Основний протокол, що використовувався — http, який легко проксіюється;
  • Підтримка проксі більшістю браузерів і/або операційних систем;
  • Контроль доступу та облік трафіку по користувачам;
  • Проксі-сервер — це звичайна програма (а не системна), яка може працювати з мінімальними правами на будь-якій ОС з підтримкою мережі (стека TCP/IP);
  • Відсутність доступу в Інтернет по інших протоколах часто було більше перевагою, ніж недоліком.

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

Однак великого поширення набули прозорі проксі-сервери (протоколу http та деяких інших), в тому числі й ті, що входять до складу багатьох апаратних маршрутизаторів для доступу до інтернету, з метою збору статистики та контролю доступу до сайтів. Інші порти (протоколи) при цьому проходять через NAT.

Поширені проксі-сервери

[ред. | ред. код]

З відкритим кодом:

  • 3proxy (BSD, вільний, багатоплатформний, невеликий проксі-сервер);
  • GoProxy (GPLv3, високопродуктивний HTTP(S) проксі, SOCKS5 проксі, WEBSOCKET, TCP, UDP проксі-сервер, що підтримує проксі-ланцюжок, переадресацію nat в різних каналах, переадресацію TCP/UDP портів, переадресацію SSH, написаний на мові Go)[6];
  • glider (GPLv2, прямий проксі з підтримкою декількох протоколів)[7];
  • gost (MIT, простий тунель, написаний на Go)[8];
  • Envoy (проксі та комунікаційна шина L7, розроблена для великих сервіс-орієнтованих архітектур)[9];
  • Ergo Proxy — простий зворотний проксі, який слідує філософії Unix, для управління локальними доменами[10];
  • FlClash (багатоплатформний проксі-клієнт)[11];
  • mitmproxy(інші мови) (перехоплюючий інтерактивний проксі-сервер із підтримкою SSL/TLS для HTTP/1, HTTP/2 і WebSockets; go-mitmproxy — реалізація mitmproxy на мові Go)[12];
  • Nginx (BSD, вебсервер, що має режим роботи як reverse proxy і часто для цього використовується);
  • OpenChange Project — прозора (GPLv2) і портативна реалізація сервера Microsoft Exchange і протоколів Exchange для взаємодії з клієнтами Microsoft Outlook або серверами Microsoft Exchange[13];
  • Privoxy (проксі-інструмент із розширеними можливостями фільтрації інтернет-контенту для захисту конфіденційності);
  • Proxychains-ng(інші мови) (GPL, проксіфікатор);
  • Sōzu — HTTP реверсний проксі, побудований на Rust, який може обробляти тонкі зміни конфігурації під час виконання без перезавантажень і розроблений таким чином, щоб ніколи не зупинятися[14].
  • Squid (GPL, багатоплатформовий);
  • ssl-proxy (зворотний SSL-проксі з автогенерованими сертифікатами)[15];
  • TLS termination proxy (проксі-сервер завершення TLS)
  • TOR (BSD, багатоплатформовий).

Пропрієтарні:

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. Luotonen, Ari; Altis, Kevin (1994). World-Wide Web Proxies (PDF). Архів (PDF) оригіналу за 12 листопада 2021.
  2. Shapiro, Marc (May 1986). Structure and Encapsulation in Distributed Systems: the Proxy Principle. 6th International Conference on Distributed Computing Systems. Cambridge, MA, USA. с. 198—204. inria-00444651. Архів оригіналу за 26 грудня 2018. Процитовано 26 грудня 2018.
  3. Lyon, Gordon (2008). Nmap network scanning. US: Insecure. с. 270. ISBN 978-0-9799587-1-7.
  4. Proxy servers and tunneling. MDN Web Docs (англ.). Архів оригіналу за 26 листопада 2020. Процитовано 6 грудня 2020.
  5. 代表的なオープンソースのプロキシサーバー・リバースプロキシ. ネットの基礎知識&Windows/Linuxの快適術 (яп.). Процитовано 19 липня 2025.
  6. GoProxy. SourceForge (англ.). 11 червня 2025. Процитовано 19 липня 2025.
  7. glider. SourceForge (англ.). 14 серпня 2024. Процитовано 19 липня 2025.
  8. gost. SourceForge (англ.). 10 жовтня 2024. Процитовано 19 липня 2025.
  9. What is Envoy — envoy tag-v1.34.3 documentation. www.envoyproxy.io. Процитовано 19 липня 2025.
  10. Ergo Proxy. SourceForge (англ.). 14 червня 2024. Процитовано 20 липня 2025.
  11. FlClash: A multi-platform proxy client based on ClashMeta,simple and easy to use. AlternativeTo (англ.). Процитовано 19 липня 2025.
  12. go-mitmproxy. SourceForge (англ.). 28 червня 2024. Процитовано 19 липня 2025.
  13. OpenChange Project. SourceForge (англ.). 10 серпня 2023. Процитовано 20 липня 2025.
  14. Sōzu. SourceForge (англ.). 5 грудня 2024. Процитовано 20 липня 2025.
  15. ssl-proxy. SourceForge (англ.). 25 вересня 2024. Процитовано 19 липня 2025.
  16. Что такое ИКС Lite? - база знаний межсетевого экрана ИКС. doc.a-real.ru. Процитовано 19 липня 2025.

Посилання

[ред. | ред. код]