Неравенство естественным образом приводит к материализации высшего класса, опошлению среднего и озверению низшего.

Микола, я домашню страныцю сделал! ...

Проект Hangover для запуска Windows-приложений на системах ARM64 c Linux и Android
Mon, 18 Feb 2019 10:12:19 +0300

В Firefox 67 будет изменён интерфейс about:config и интегрировано дополнение Firefox Monitor
Mon, 18 Feb 2019 07:47:39 +0300

Выпуск почтового клиента Geary 0.13
Sun, 17 Feb 2019 19:21:57 +0300

Выпуск распределённой системы управления версиями Mercurial 4.9
Sun, 17 Feb 2019 12:00:23 +0300

Новая версия Cygwin 3.0, GNU-окружения для Windows
Sun, 17 Feb 2019 11:09:05 +0300

Релиз платформы для конфиденциального обмена сообщениями RetroShare 0.6.5
Sun, 17 Feb 2019 02:29:32 +0300

Релиз композитного менеджера Compiz 0.9.14.0
Sat, 16 Feb 2019 22:48:27 +0300

Выпуск Debian 9.8
Sat, 16 Feb 2019 20:56:19 +0300

В Chrome появится поддержка ссылок на отдельные слова и фразы в тексте
Sat, 16 Feb 2019 10:48:24 +0300

Развитие Fedora Atomic Host прекращено в пользу проекта Fedora CoreOS
Sat, 16 Feb 2019 09:59:34 +0300

Выпуск Wine 4.2
Sat, 16 Feb 2019 09:32:13 +0300

Уязвимость в библиотеке MatrixSSL
Fri, 15 Feb 2019 10:32:12 +0300

Выпуск Ubuntu 18.04.2 LTS c обновлением графического стека и ядра Linux
Fri, 15 Feb 2019 09:04:40 +0300

Представлен новый интерфейс браузера Opera
Fri, 15 Feb 2019 07:53:42 +0300

Обновление PostgreSQL с устранением серьёзных проблем с fsync
Thu, 14 Feb 2019 20:08:22 +0300

Выпуск системного менеджера systemd 241
Thu, 14 Feb 2019 17:54:26 +0300

Выпуск Cilium 1.4, сетевой системы для Linux-контейнеров, основанной на BPF
Thu, 14 Feb 2019 11:34:53 +0300

Критическая уязвимость в WordPress-плагине "Simple Social Buttons"
Thu, 14 Feb 2019 10:39:08 +0300

Выпуск GnuPG 2.2.13
Thu, 14 Feb 2019 10:16:58 +0300

Выпуск поискового сервера Xapiand 0.9
Wed, 13 Feb 2019 21:47:29 +0300

Уязвимость в snapd, позволяющая получить root-привилегии в системе
Wed, 13 Feb 2019 10:59:21 +0300

Обновление Firefox 65.0.1 и Tor Browser 8.0.6
Wed, 13 Feb 2019 10:02:48 +0300

Релиз рабочего стола KDE Plasma 5.15
Tue, 12 Feb 2019 17:18:08 +0300

Опубликована техника скрытия вредоносного кода в анклавах Intel SGX
Tue, 12 Feb 2019 14:44:14 +0300

Выпуск виртуальной машины HHVM 4.0 с прекращением поддержки PHP
Tue, 12 Feb 2019 11:41:34 +0300

Релиз PyPy 7.0, реализации Python, написанной на языке Python
Tue, 12 Feb 2019 09:28:32 +0300

Фонд свободного ПО опубликовал финансовый отчёт по итогам 2017 года
Tue, 12 Feb 2019 08:52:52 +0300

Уязвимость в runc и LXC, затрагивающая Docker и другие системы контейнерной изоляции
Mon, 11 Feb 2019 23:26:14 +0300

В состав OpenBSD добавлена собственная реализация rsync
Mon, 11 Feb 2019 20:24:20 +0300

NVIDIA открыла код StyleGAN, генератора лиц на основе машинного обучения
Mon, 11 Feb 2019 10:26:46 +0300

Новая версия почтового сервера Exim 4.92
Mon, 11 Feb 2019 08:49:18 +0300

Обновление пакета с ядром для Ubuntu привело к проблемам с загрузкой на некоторых ноутбуках
Mon, 11 Feb 2019 08:25:02 +0300

Google представил механизм Adiantum для быстрого шифрования накопителей
Sun, 10 Feb 2019 22:52:09 +0300

Выпуск файлового менеджера Double Commander 0.9.0
Sun, 10 Feb 2019 14:00:23 +0300

Раскрыты детали новой атаки на различные реализации TLS
Sun, 10 Feb 2019 10:33:08 +0300

Бета-выпуск дистрибутива OpenMandriva Lx 4
Sun, 10 Feb 2019 09:17:29 +0300

FreedomEV - открытая надстройка для информационной системы автомобилей Tesla
Sat, 09 Feb 2019 23:25:16 +0300

В SUSE/openSUSE будет отключено автоопределение нетипичных файловых систем
Sat, 09 Feb 2019 09:45:28 +0300

Релиз Chrome OS 72
Sat, 09 Feb 2019 09:17:23 +0300

Проект GTK+ объявил о переименовании в GTK
Fri, 08 Feb 2019 19:31:46 +0300

NAT IPtables
NAT - трансляция сетевого адреса

IP-адреса являются дефицитным ресурсом. У провайдера может быть /16-адрес (бывший класс В), дающий возможность подключить 65 534 хоста. Если клиентов становится больше, начинают возникать проблемы. Хостам, подключающимся к Интернету время от времени по обычной телефонной линии, можно выделять IP-адреса динамически, только на время соединения. Тогда один /16-адрес будет обслуживать до 65 534 активных пользователей, и этого, возможно, будет достаточно для провайдера, у которого несколько сотен тысяч клиентов. Когда сессия связи завершается, IP-адрес присваивается новому соединению. Такая стратегия может решить проблемы провайдеров, имеющих не очень большое количество частных клиентов, соединяющихся по телефонной линии, однако не поможет провайдерам, большую часть клиентуры которых составляют организации.

Дело в том, что корпоративные клиенты предпочитают иметь постоянное соединение с Интернетом, по крайней мере в течение рабочего дня. И в маленьких конторах, например туристических агенствах, состоящих из трех сотрудников, и в больших корпорациях имеются локальные сети, состоящие из некоторого числа компьютеров. Некоторые компьютеры являются рабочими станциями сотрудников, некоторые служат веб-серверами. В общем случае имеется маршрутизатор ЛВС, соединенный с провайдером по выделенной линии для обеспечения постоянного подключения. Такое решение означает, что с каждым компьютером целый день связан один IP-адрес. Вообще-то даже все вместе взятые компьютеры, имеющиеся у корпоративных клиентов, не могут перекрыть имеющиеся у провайдера IP-адреса. Для адреса длины /16 этот предел равен, как мы уже отмечали, 65 534. Однако если у поставщика услуг Интернета число корпоративных клиентов исчисляется десятками тысяч, то этот предел будет достигнут очень быстро.

Проблема усугубляется еще и тем, что все большее число частных пользователей желают иметь ADSL или кабельное соединение с Интернетом. Особенности этих способов заключаются в следующем:

а) пользователи получают постоянный IP-адрес;

б) отсутствует повременная оплата (взимается только ежемесячная абонентская плата).

Пользователи такого рода услуг имеют постоянное подключение к Интернету. Развитие в данном направлении приводит к возрастанию дефицита IP-адресов. Присваивать IP-адреса «на лету», как это делается при телефонном подключении, бесполезно, потому что число активных адресов в каждый момент времени может быть во много раз больше, чем имеется у про­вайдера.

Часто ситуация еще больше усложняется за счет того, что многие пользователи ADSL и кабельного Интернета имеют дома два и более компьютера (например, по одному на каждого члена семьи) и хотят, чтобы все машины имели выход в Интернет. Что же делать — ведь есть только один IP-адрес, выданный провайдером! Решение таково: необходимо установить маршрутизатор и объединить все компьютеры в локальную сеть. С точки зрения провайдера, в этом случае семья будет выступать в качестве аналога маленькой фирмы с несколькими компьютерами. Добро пожаловать в корпорацию Пупкиных!

Проблема дефицита IP-адресов отнюдь не теоретическая и отнюдь не относится к отдаленному будущему. Она уже актуальна, и бороться с ней приходится здесь и сейчас. Долговременный проект предполагает тотальный перевод всего Интернета на протокол IPv6 со 128-битной адресацией. Этот переход действительно постепенно происходит, но процесс идет настолько медленно, что затягивается на годы. Видя это, многие поняли, что нужно срочно найти какое-нибудь решение хотя бы на ближайшее время. Такое решение было найдено в виде метода трансляции сетевого адреса, NAT (Network Address Translation), описанного в RFC 3022. Суть его мы рассмотрим позже, а более подробную информа­цию можно найти в (Butcher, 2001).

Основная идея трансляции сетевого адреса состоит в присвоении каждой фирме одного IP-адреса (или, по крайней мере, небольшого числа адресов) для интернет-трафика. Внутри фирмы каждый компьютер получает уникальный IP-адрес, используемый для маршрутизации внутреннего трафика. Однако как только пакет покидает пределы здания фирмы и направляется к провайдеру, выполняется трансляция адреса. Для реализации этой схемы было создано три диапазона так называемых частных IP-адресов. Они могут использоваться внутри компании по ее усмотрению. Единственное ограничение заключается в том, что пакеты с такими адресами ни в коем случае не должны появляться в самом Интернете. Вот эти три зарезервированных диапазона:

10.0.0.0                                                                                                                                                                                                     - 10.255.255.255/8      (16 777 216 хостов)

172.16.0.0                                                                                                                                                         - 172.31.255.255/12    (1 048 576 хостов)

192.168.0.0        -192.168.255.255/16   (65 536 хостов)

Работа метода трансляции сетевых адресов показана на нжеследующей схеме. В пределах территории компании у каждой машины имеется собственный уникальный адрес вида 10.x.y.z. Тем не менее, когда пакет выходит за пределы владений компании, он проходит через NAT-блок, транслирующий внутренний IP-адрес источника (10.0.0.1 на рисунке) в реальный IP-адрес, полученный компанией от провайдера (198.60.42.12 для нашего примера). NAT-блок обычно представляет собой единое устройство с брандмауэром, обеспечивающим безопасность путем строго отслеживания входящего и исходящего -трафика компании. NAT-блок может быть интегрирован с маршрутизатором компании.

Мы до сих пор обходили одну маленькую деталь: когда приходит ответ на запрос (например, от веб-сервера), он ведь адресуется 198.60.42.12. Как же NAT-блок узнает, каким внутренним адресом заменить общий адрес компании? Вот в этом и состоит главная проблема использования трансляции сетевых адресов. Если бы в заголовке IP-пакета было свободное поле, его можно было бы использовать для запоминания адреса того, кто посылал запрос. Но в заголовке остается неиспользованным всего один бит. В принципе, можно было бы создать такое поле для истинного адреса источника, но это потребовало бы изменения IP-кода на всех машинах по всему Интернету. Это не лучший выход, особенно если мы хотим найти быстрое решение проблемы нехватки IP-адресов.

На самом деле произошло вот что. Разработчики NAT подметили, что большая часть полезной нагрузки IP-пакетов — это либо TCP, либо UDP. Оба формата имеют заголовки, содержащие номера портов источника и приемника. Номера портов представляют собой 16-разрядные целые числа, показывающие, где начинается и где заканчивается TCP-соединение. Место хранения номеров портов используется в качестве поля, необходимого для работы NAT.

Когда процесс желает установить TCP-соединение с удаленным процессом, он связывается со свободным TCP-портом на собственном компьютере. Этот порт становится портом источника, который сообщает TCP-коду информацию о том, куда направлять пакеты данного соединения. Процесс также определяет порт назначения. Посредством порта назначения сообщается, кому отдать пакет на удаленной стороне. Порты с 0 по 1023 зарезервированы для хорошо известных сервисов. Например, 80-й порт используется веб-серверами, соответственно, на них могут ориентироваться удаленные клиенты. Каждое исходящее сообщение TCP содержит информацию о порте источника и порте назначения. Вместе они служат для идентификации процессов на обоих концах, использующих соединение.

Проведем аналогию, которая несколько прояснит принцип использования портов. Допустим, у компании есть один общий телефонный номер. Когда люди набирают его, они слышат голос оператора, который спрашивает, с кем именно они хотели бы соединиться, и подключают их к соответствующему добавочному телефонному номеру. Основной телефонный номер является аналогией IP-адреса компании, а добавочные на обоих концах аналогичны портам. Для адресации портов используется 16-битное поле, которое идентифицирует процесс, получающий входящий пакет.

С помощью поля Порт источника мы можем решить проблему отображения адресов. Когда исходящий пакет приходит в NAT-блок, адрес источника вида 192.168.c.d заменяется настоящим IP-адресом. Кроме того, поле Порт источника TCP заменяется индексом таблицы перевода NAT-блока, содержащей 65 536 записей. Каждая запись содержит исходный IP-адрес и номер исходного порта. Наконец, пересчитываются и вставляются в пакет контрольные суммы заголовков TCP и IP. Необходимо заменять поле Порт источника, потому что машины с местными адресами 10.0.0.1 и 10.0.0.2 могут случайно пожелать воспользоваться одним и тем же портом (5000-м, например). Так что для однозначной идентификации процесса отправителя одного поля Порт источника оказывается недостаточно.

Когда пакет прибывает на NAT-блок со стороны провайдера, извлекается значение поля Порт источника заголовка TCP. Оно используется в качестве индекса таблицы отображения NAT-блока. По найденной в этой таблице записи определяются внутренний IP-адрес и настоящий Порт источника TCP. Эти два значения вставляются в пакет. Затем заново подсчитываются контрольные суммы TCP и IP. Пакет передается на главный маршрутизатор компании для нормальной доставки с адресом вида 192.168.y.z.

В случае применения ADSL или кабельного Интернета трансляция сетевых адресов может применяться для облегчения борьбы с нехваткой адресов. Присваиваемые пользователям адреса имеют вид 10.x.y.z. Как только пакет покидает пределы владений провайдера и уходит в Интернет, он попадает в NAT-блок, который преобразует внутренний адрес в реальный IP-адрес провайдера. На обратном пути выполняется обратная операция. В этом смысле для всего остального Интернета провайдер со своими клиентами, использующими ADSL и кабельное :оединение, представляется в виде одной большой компании.

Хотя описанная выше схема частично решает проблему нехватки IP-адресов, многие приверженцы IP рассматривают NAT как некую заразу, распространяющуюся по Земле. И их можно понять.

Во-первых, сам принцип трансляции сетевых адресов никак не вписывается в архитектуру IP, которая подразумевает, что каждый IP-адрес уникальным образом идентифицирует только одну машину в мире. Вся программная структура Интернета построена на использовании этого факта. При трансляции сетевых адресов получается, что тысячи машин могут (и так происходит в действительности) иметь адрес 10.0.0.1.

Во-вторых, NAT превращает Интернет из сети без установления соединения в нечто подобное сети, ориентированной на соединение. Проблема в том, что NAT-блок должен поддерживать таблицу отображения для всех соединений, проходящих через него. Запоминать состояние соединения — дело сетей, ориентированных на соединение, но никак не сетей без установления соединений. Если NAT-блок ломается и теряются его таблицы отображения, то про все TCP-соединения, проходящие через него, можно забыть. При отсутствии трансляции сетевых адресов выход из строя маршрутизатора не оказывает никакого эффекта на деятельность TCP. Отправляющий процесс просто выжидает несколько секунд и посылает заново все неподтвержденные пакеты. При использовании NAT Интернет становится таким же восприимчивым к сбоям, как сеть с коммутацией каналов.

В-третьих, NAT нарушает одно из фундаментальных правил построения многоуровневых протоколов: уровень k не должен строить никаких предположений относительно того, что именно уровень k + 1 поместил в поле полезной нагрузки. Этот принцип определяет независимость уровней друг от друга. Если когда-нибудь на смену TCP придет ТСР-2, у которого будет другой формат заголовка (например, 32-битная адресация портов), то трансляция сетевых адресов потерпит фиаско. Вся идея многоуровневых протоколов состоит в том, чтобы изменения в одном из уровней никак не могли повлиять на остальные уровни. NAT разрушает эту независимость.

В-четвертых, процессы в Интернете вовсе не обязаны использовать только TCP или UDP. Если пользователь машины А решит придумать новый протокол транспортного уровня для общения с пользователем машины В (это может быть сделано, например, для какого-нибудь мультимедийного приложения), то ему придется как-то бороться с тем, что NAT-блок не сможет корректно обработать поле Порт источника TCP.

В-пятых, некоторые приложения вставляют IP-адреса в текст сообщений. Получатель извлекает их оттуда и затем обрабатывает. Так как NAT не знает ничего про такой способ адресации, он не сможет корректно обработать пакеты, и любые попытки использования этих адресов удаленной стороной приведут к неудаче. Протокол передачи файлов, FTP (File Transfer Protocol), использует именно такой метод и может отказаться работать при трансляции сетевых адресов, если только не будут приняты специальные меры. Протокол интернет-телефонии Н.323 также обладает подобным свойством. Можно улучшить метод NAT и заставить его корректно работать с Н.323, но невозможно же дорабатывать его всякий раз, когда появляется новое приложение.

В-шестых, поскольку поле Порт источника является 16-разрядным, то на один IP-адрес может быть отображено примерно 65 536 местных адресов машин. На самом деле это число несколько меньше: первые 4096 портов зарезервированы для служебных нужд. В общем, если есть несколько IP-адресов, то каждый из них может поддерживать до 61 440 местных адресов.

Эти и другие проблемы, связанные с трансляцией сетевых адресов, обсуждаются в RFC 2993. Обычно противники использования NAT говорят, что решение проблемы нехватки IP-адресов путем создания временной заплатки только мешает процессу настоящей эволюции, заключающемуся в переходе на IPv6. Но если вернутся в реальность, то мы увидим, что в большинстве случаев NAT - это просто незаменимая вещь, особенно для малых офисов с числом компьютеров от нескольких штук до нескольких десятков. NAT можно реализовать собственными силами в OS Linux используя IPTables.

НОВОСТИ: Выпуск распределённой системы управления версиями Mercurial 4.9 Sun, 17 Feb 2019 12:00:23 +0300

Доступен релиз распределённой системы управления версиями Mercurial 4.9. Код Mercurial написан на языке Python (требующие высокой производительности части оформлены в виде модулей на Си или Rust) и распространяется под лицензией GPLv2+. Среди проектов, использующих Mercurial, можно выделить следующие: Mozilla, OpenOffice.org, OpenSolaris, NetBeans, OpenJDK, Nginx, Xine и W3C.

???????@Mail.ru Opera Firefox INFOBOX - хостинг Google Chrome