Локальні мережі і internet

Локальні мережі та Internet

Для більшості стандартних клієнтських додатків (пакет Internet Explorer. Наприклад) можливостей традиційних проксі-серверів цілком вистачає. Але є додатки, які потребують тимчасово виступати в ролі сервера, навіть коли вони працюють на машинах користувачів. Наведу два приклади.

Більшість проксі-серверів є вузькоспеціалізованими і розраховані на конкретні прикладні протоколи (HTTP, FTP, RealAudio і т. Д.), Тобто для нових протоколів потрібні нові проксі-сервери ...

Весь описаний тут спектр проблем вирішується за допомогою Socks-серверів.

Як працює Socks5

Взагалі кажучи, багато хто з описаних проблем вирішуються просто шляхом відображення портів за допомогою Mapping-proxy (тема для окремої розмови), але Socks - більш раціональне засіб, яке не потребує на відміну від MAP знання тонкощів конкретних протоколів і додатків. Через Socks5 можна змусити працювати навіть додатки, які й гадки не мають про проксі! Приклад - вже згаданий FAR v1.5. Це "перенаправлення" через проксі робиться, наприклад, програмою SocksCapture (NEC). Багато сучасні програми самі вміють працювати через Socks. Приклади - Mirabilis ICQ, MS Internet Explorer, Netscape Navigator - хоча все з деякими застереженнями, про які пізніше.

Фактично Socks-сервер є програмно-керованим mapping-proxy, причому з описаним єдиним інтерфейсом. Все mapping-proxy так чи інакше програмно управляються, але під керівництвом адміністратора мережі (людини), і відображення статичні. А Socks-сервер управляється прикладними програмами, і відображення встановлюються, тільки коли вони потрібні, і на той час, поки вони потрібні.

Запити Socks добре узгоджуються з запитами, що посилаються програмами до інтерфейсу winsock, саме тому існує можливість "насильно" змусити будь-яку Internet-програму піти через Socks-сервер, навіть якщо вона сама не вміє. Для цього такі програми, як SocksCapture, перехоплюють звернення цієї програми до функцій wsock32.dll (і іншим реалізаціям winsock) і перетворять їх в запити до Socks-сервера непомітно для самої програми.

Socks4 і Socks5

ICQ - перше з популярних додатків, яке важко повноцінно використовувати в локальних мережах без наявності Socks5-сервера. На відміну від переважної більшості сучасних додатків, ICQ дуже широко використовує протокол UDP (майже для всіх своїх функцій, починаючи з реєстрації на сервері icq.mirabilis.com, закінчуючи передачею файлів), тому використання Socks5 напрошується само собою. Тим більше що ICQ сама пропонує використовувати Socks.

Тут треба зазначити, що ICQ98 використовує нову версію власного протоколів поверх UDP в порівнянні з недавніми випусками ICQ 1.113. Новий протокол набагато інтенсивніше використовує UDP. Тепер навіть при звичайному використанні інтерфейсу ICQ (відкриття, закриття його вікон, наприклад) на mirabilis відправляються UDP-пакети (невідомо для чого, можливо, збирають статистику активності використання), середній розмір пакетів теж збільшений. Так що є певний сенс продовжувати використовувати більш старі версії ICQ.

Socks і браузери

Браузери Explorer і Navigator в використанні Socks "блищать консерватизмом": використовується Socks4. UDP браузерам не потрібен, але таку корисну можливість Socks5, як порятунок від локального DNS-сервера, вони ігнорують явно даремно. На жаль, Socks4 і Socks5 не мають зворотної сумісності, і не всі Socks5-сервери можуть обробляти Socks4-запити, що посилаються браузерами.

Socks і SocksCapture

SocksCapture і подібні програми допоможуть вам приручити в локальній мережі більшість з тих програм, які не вміють працювати через проксі самостійно. Це забезпечується за рахунок перехоплення звернень цих програм до функцій winsock і спрямування цих викликів через Socks-сервер. SocksCapture дозволяє досить гнучко налаштовувати і зберігати мережеву конфігурацію цих програм: через який Socks-сервер її запускати, в якому режимі працювати з DNS і ін.

Socks-сервер запускається на шлюзовому комп'ютері, а SocksCapture є клієнтської по відношенню до нього програмою і повинен встановлюватися на кожному комп'ютері в локальній мережі.

Що не може робити Socks

Друге обмеження - коли клієнтська програма просить Socks-проксі виконати за нього серверну функцію (прийми для мене входить TCP-з'єднання), Socks-проксі не гарантує, що він буде "слухати" саме той номер порту, який хотів би слухати клієнт, так як на шлюзовий машині цей порт може бути вже зайнятий іншим сервером або іншим потоком Socks-сервера, що обслуговує іншого клієнта. Таким чином, майже неможливо організувати роботу, наприклад, Web-cервера, що знаходиться всередині локальної мережі, але приймає з'єднання через Socks-сервер, - так як зовнішній клієнт не заздалегідь знати, з яким портом з'єднуватися. Тобто через Socks-проксі клієнтську програму зможе бути сервером, але тільки тимчасовим і тільки після того, як ця пара - клієнт і сервер - вже встановили первинне з'єднання і можуть передати через нього номер порту для вторинного з'єднання. Цей номер призначається Socks-сервером і повідомляється Socks-клієнту. У такому режимі можуть працювати, наприклад, FTP-клієнти і ICQ. Для видачі постійних внутрішніх серверів "назовні" через проксі краще користуватися звичайним mapping-проксі з постійними відображеннями портів.

Де взяти ці програми

Дізнатися, як використовувати можливості Socks5 в своїх програмах, можна в RFC1928.

Схожі статті