Когда-то давно я уже задавал вопрос, но на него мне не смогли ответить, ну что ж ....
Попробуем разобраться "что есть что" и какие у кого плюсы.
Все описанное ниже это только мое представление о реальном мире, и оно не претендует на 100% адекватность.
Прошу прощения если ввел кого в заблуждение. В последующем изучу предметную область более полно и статья будет более полной и точной.
И тот и другой метод предназначен для одного и тоже действия: позволяет другим компьютерам получить доступ к сети интернет не имея отдельного подключения к интернету на каждом компьютере.
Proxy
Отдельное приложение которое позволяет другим компьютерам подключаясь на определенные порты одного компьютера, с использованием определенного протокола "проксирования" получить доступ к сети интернет.
Имеется довольно большой выбор программ-proxy, как бесплатных, так и платных и вообще кучу разновидностей лицензирования (в плоть до ограничения в бесплатной версии количества фильтров/пользователей).
Большинство программ поддерживает следующие протоколы: HTTP(S)-Proxy, Socks v4, Socks v5.
HTTP-Proxy - это самый первый протокол (на сколько я знаю). Не предназначен для работы с цепочкой прокси, и не во всех случаях отрабатывает корректно.
Socks - тут могу сказать только то что данный протокол стал бинарным, в отличии от текстового HTTP-proxy, что усложняет его использование (чаще проверку) утилитами командной строки, типа telnet, но ускоряет его работу в целом. Он так же предназначен для работы с цепочками прокси, и в целом работает более надежно.
Виды прокси хорошо расписаны в [04].
Плюсы:
- Простая установка, чаще всего и настройка тоже простая.
- Множество моделей авторизации пользователей:
- по логину и паролю (plain text, список логинов и паролей храниться где-тов настройках прокси)
- по IP-адресу
- NTLM/ActiveDirectory
- специальным клиентским приложением, которое в отдельных случаях, может туннелировать клиентские запросы через прокси
- При наличии возможности кеширования данных в прокси, есть возможность экономить внешний траффик и ускорить отдачу контента пользователям.
- Возможность установки на машине без интернета для реализации доступа к внешним ресурсам с использованием прокси верхнего уровня. Например для переброски портов 110, 25 и т.п. с локальной машины на внешний сервер, для доступа почтовых програм к серверу почты. Вообще в установке прокси на локальной машине есть свои плюсы (нет необходимости при изменении настроек прокси верхнего уровня перенастраивать эти параметры в куче мест, достаточно изменить параметры локального прокси) и минусы (Firewall-ы такие коннекты не очень отлавливают, значит он не сможет определить наличие вируса, и не сможет заблокировать приложение которому не хотелось бы давать выход в инет).
- Можно контролировать кто куда ходил (по логам), а так же заблокировать доступ к определенным сайтам (по именам, IP, или по более сложным правилам, в зависимости от возможностей прокси).
- Обеспечение безопасности внутренней сети от атак извне, за счет того что с наружи видна только машина на которой размещен прокси, хотя в случае получения административного доступа на машине с прокси взломщик получит доступ и к компьютерам во внутренней сети.
- Повышение анонимности в сети, так как внутри HTTP-запроса чаще всего содержится информация об оригинальном расположении пользователя (IP) и об его окружении (OS, версия браузера). Прокси сервер может информацию подменять или указывать информацию о своем положении.
- Использование цепочек прокси для повышения анонимности (за счет снижения скорости).
- Большинство программ имеет возможность шейпинга запросов пользователей (разделение скорости канала по приоритетам, без единоличного захвата всей пропускной способности канала одним пользователем).
- Все программы использующие прокси должна уметь работать через прокси. Многие программы этого не умеют (почтовые программы, игры и так далее)
- Необходимость явно указывать прокси в тех программах которые умеют использовать прокси
- Необходимость использовать Соксификаторы (программы перехватывающие вызову WinSock API и перенаправляющие их вызовы через прокси) для тех программ которые не умеют работать нативно с прокси, но это помогает не во всех случаях.
- Создавать отдельные правила для Port Mapping-а для тех программ для которых не помог пункт 3. При этом, например, для доступа на pop.mail.ru:110 и pop.list.ru:110, нужно прописать на прокси два правила на разные порты, которые будут разруливать потоками данных на разные конечные сервера.
NAT
Эта технология гораздо проще с точки зрения пользователей.
Но сами программы реализующие данный алгоритм более сложны с точки зрения понимания (ИМХО), и вообще менее распространены (по крайней мере под платформу Windows). Как выяснилось это из-за того что этот протокол вообще не очень-то хорош, для программ, и вообще является временной мерой после выполнения разграничения IP-адресов на группы, часть из которых относиться к внутренним (например, 192.168.*.* и 172.16.*.*), так как пакеты направленные на IP-относящийся к группе внутренних не может быть туда доставлен так как этот адес может использоваться (и используется) в очень многих сетях [03].
Это тоже отдельное приложение-сервис на компьютере подключенном к интернету, но схема работы тут уже другая и в простых случаях не требует установки дополнительного ПО или дополнительной конфигурации на стороне пользователя.
В протоколе TCP/IP есть понятие "шлюза по умолчанию", которы используется если система не не может передать указанный пакет ни по одному из локальных сетевых интерфейсов. В этом случае этот пакет отправляется на затребованный IP, но при этом у него указывается мак-адрес шлюза.
Таким образом этот пакет обрабатывается сетевым интерфейсом на компьютере с NAT, специальной программой которая знает куда шел пакет (поле IP из пришедшего пакета) и знает кто его отправлял, он перенаправляет пакет на указанный адрес и ответ возвращает обратно пользователю.
Таким образом на компьютере пользователя достаточно настроить "шлюз по умолчанию" и адрес DNS-сервера.
Плюсы:
- Очень простая настройка на компьютере пользователя: достаточно настроить "шлюз по умолчанию" и адрес DNS-сервера.
- Большинство программ (использующих простой протокол) без проблем работают в интернете, без дополнительных настроек, так как преобразование DNS-имени в IP-адрес и отправку пакета через шлюз осуществляет сама Windows
- Необходимость установки и настройки DNS-сервера, так как компьютер пользователя должен сначала разрешить DNS-мя в IP адрес, а после этого понять что он не может его отправить с текущими сетевыми интерфейсами.
- Практически полная не возможность работы программ в протоколах которых используется обратное подключение от сервера к клиенту, по переданному в запросе IP адресу, или просто порту, так как подмена адреса на машине с NAT не подзволяется (в общем случае) подменить этот IP в самом пакете, так как NAT не знает специфики протокола (опять же в общем случае, для некоторых простых протоколов, например FTP, NAT может изменять содержимое, в большинстве случаем, например Oracle, это не возможно).
- Авторизация по клиентов только IP.
- Бесплатные программы найти очень сложно, пока я вообще не смог найти нормальной программы под Windows, кроме какой-то древней, которую нормально поставить на XP не смог.
Выводы
Как выяснилось, в инете и так довольно много статей по этому поводу, причем довольно качественных. Но не смотря на это мне хочеться открыть эту информацию для граждан нашего сообщества.
Надеюсь что что-то полезное из этого поста вы все таки узнали :)
Я например понял что переходить с Proxy на NAT не имеет смысла, так как внем тоже не все столь радужно, и по большому счету хорошо только то что ничего настраивать на клиенте не нужно, все типа и так работает,но с кучей ограничений :(, хотя для работы HTTP(S), POP, SMTP, ICQ (ну может передача файлов может не работать) проблем вроде как ни каких, но вот игры в Интернете в таком случае могут и не работать.
Так что будем думать в сторону программ перенаправляющих запросы через прокси, таких как Permeo Security Driver.
Если что где не так или не понятно - пишите, я исправлю/поведу до ума :)
Есть идея написать пост по стеку TCP/IP и потому как вообще пашут приложения в сети и инет вообще. Есть идеи как это все оформить? :)
Источники
Википедия:
- [01] Socks
- [02] Прокси-сервер
Статьи:
- [03] Что такое NAT и почему он вам НЕ нужен
- [04] Как скрыть NAT от провайдера
- [05] Что такое прокси сервер
Дополнительно:
February 3 2008, 11:29:52 UTC 4 years ago
ужос! А крестиком они вышивать почему не умеют? :)
Sharing - шаринг тогда уж :)
February 3 2008, 12:55:50 UTC 4 years ago
Шейпинг траффика - это ограничение скорости отдачи траффика пользователю на основании некоторых правил. В простейшем случае - просто определенному пользователю выдается канал определенной широны.
Как пишется оригинальный термин (на английском) я пока не скажу, ибо пока не знаю, но сам термин верен.
February 3 2008, 12:58:35 UTC 4 years ago
February 3 2008, 13:28:31 UTC 4 years ago
Anonymous
February 29 2008, 07:54:36 UTC 4 years ago
1. Через нат все игры отлично работают.
2. Настраивать на клиентах не надо, DHCP помогает :)
3. Прокси тем более не дает возможности играть и если не настроено автоматическое заворачивание 80 и 443 портов на прокси, то бегать по клиентам придется
February 29 2008, 08:41:19 UTC 4 years ago
Фактическая неточность - Необходимость установки и настройки DNS-сервера - оно не надо для NAT.
Кстати, а чем отличаются DNAT от SNAT? И как они реализуются в никсах? А то винда для большинства пользователей какая-то сложная, непонятная и нелогичная...
February 29 2008, 13:04:00 UTC 4 years ago
А кто тогда разрешает имена сайтов в их IP? Со стороны клиентского софта работае идет так (на сколько я это понимаю): Программа собирается соедениться с неким сайтом (www.site.ru) и запрашивает у системы его IP-адрес, этот адрес разрешается системой в IP (тут должен использоваться DNS-сервер), после этого клиентское приложение говорит WinSock соедениться с этим IP, так как система не может соедениться сама, то запрос передается на шлюз по-умолчанию, который NAT-ом разруливает работу.
Может NAT позволяет так же прозрачно обратиться к внешним DNS-серверам, но тут я точно не знаю. Может знаете вы?
А тут извините, Никсы практически не знаю и помочь не могу.
P.S.
Я еще сам не все знаю, и много почерпнул во время поиска информации :)
February 29 2008, 13:33:52 UTC 4 years ago
А тут извините, Никсы практически не знаю и помочь не могу.
Да собственно мне и не надо, я как бы сам знаю про сие. И не только про сие :))))))
Я еще сам не все знаю, и много почерпнул во время поиска информации :)
Во-во. Оно и заметно. Прежде чем-нить делиться стоит самому разобраться.
February 29 2008, 08:42:18 UTC 4 years ago
February 29 2008, 13:10:39 UTC 4 years ago
Но пока кроме продуктов работающих на сетевом уровне и заворачивающих почти весь траффик на прокси пока вариантов не нашел. Из таких приложением на вскидку могу назвать:
1. Microsoft Firewall Client для ISA
2. Permeo Security Driver
3. WideCap
4. UserGate Client для UserGate
Все в общем-то платные (клиенты поставляются с серверной частью и входят в его стоимость).
Варианты 1 и 4 используют специфику работы своей серверной части для авторизации и заворачивания траффика.
February 29 2008, 13:35:40 UTC 4 years ago
Anonymous
February 29 2008, 16:30:37 UTC 4 years ago
Ответ
Первое: NAT появился относительно недавно, как технология. прочие прокси-методы разработаны давно. socks v(4,5) разработанный компанией NEC изначально был закрытым. HTTP-Proxy так и называется потому что в его основе лежит протокол HTTP.Второе: NAT никак не связан с "внутренними" адресами. Для понимания IP адресации Вам необходимо покурить RFC1918. Шлюз(маршрутизатор) в понимании IP как раз и служит для диспетчером который знает где какие сети находятся. Для функционирования NAT вовсе не обязательно прописывать машину с запущенным сервисом NAT как шлюз по умолчанию на рабочей станции, вполне достаточно того что маршрутизатор будет знать куда отсылать пакеты на неизвестные ему сети.
Третье: "и вообще менее распространены (по крайней мере под платформу Windows)" Наверное ipnathlp.dll вроди как из штатной поставки Windows XP ещё не выкидывали ... Так называемый Internet Connection Sharing был заявлен ещё в Windows 2000 (http://www.smart-soft.ru/?page=ics)
Четвёртое: "Я например понял что переходить с Proxy на NAT не имеет смысла" Ну это если вас всё устраивает то да :) NAT плох не сам по себе, а тем что он убого реализован в Windows :) По одному уроду обо всей семье не судят.
Рассмотренный Вами случай с переадресацией 110 порта давно легко решается во всех OS кроме ... да, да кроме Windows.
P.S.: "Есть идея написать пост по стеку TCP/IP и потому как вообще пашут приложения в сети и инет вообще. Есть идеи как это все оформить? :)"
Да есть одно предложение - бросайте Вы это гиблое дело. Не нужно дезинформировать сообщество своим непониманием. Технический писатель из Вас вышел ... причём давно и далеко.
Жилкин Сергей a.k.a. robot12
March 1 2008, 06:08:16 UTC 4 years ago
Re: Ответ
+1Абсолютно безграмотный пост. И эти люди называют себя админами.
March 2 2008, 15:31:13 UTC 4 years ago
Re: Ответ
Абсолютно безграмотный ответ - администратором я себя не называл.March 2 2008, 15:37:12 UTC 4 years ago
Re: Ответ
Да.. Вас уместнее называть генератором бреда.. Ибо большей чуши я никогда не читал. Вы бы хоть взяли себе за труд ознакомиться с предметом..March 2 2008, 16:08:07 UTC 4 years ago
Re: Ответ
Вникал до написания, и буду вникать еще - по направленям указанным в адекватных ответах.
March 2 2008, 15:41:02 UTC 4 years ago
Re: Ответ
Спецификация NAT была предложена в мае 1994 г., как временное решение. Описана она была в RFC1631.
Не брошу, ибо хочу изучить как оно в действительности работет.
Anonymous
February 29 2008, 16:32:51 UTC 4 years ago
NAT это НЕ proxy :) Они на работают на РАЗНЫХ уровнях.
April 9 2008, 04:11:13 UTC 4 years ago
May 26 2009, 20:44:46 UTC 3 years ago
+ Без проблем настраивается билинг
+ Кэширование
+ Квотирование и фильтрация траффика
- Не все приложения имеют возможность работать через прокси
NAT
+ За НАТом сидеть безопасней, если грамотно выставить правила для портов.
+ Легче настроить проброс портов внешнего интерфеса на внутрениие
+ Большое распространение среди бытовых приборов (модемы, роутеры)
- Билинг нормально настраивается только в *nix-ах.
- Меньше возможностей для авторизации пользователей
Прошу сильно не критиковать, т.к. сугубо мое мнение )))