Подержанный автомобиль - прекрасное средство для поездки в автосервис и обратно.

В реанимацию привозят раненого с ножом, торчащим между лопатками. Врач спрашивает: ...

Выпуск открытого 4G-стека srsLTE 18.09
Tue, 16 Oct 2018 13:59:48 +0300

Firefox, Chrome, Edge и Safari прекратят поддержку TLS 1.0 и TLS 1.1
Tue, 16 Oct 2018 09:09:56 +0300

Проект KDE получил пожертвование размером 300 тысяч долларов
Mon, 15 Oct 2018 19:32:24 +0300

Открытый проект Bro переименован в Zeek из-за негативной коннотации
Mon, 15 Oct 2018 14:31:08 +0300

Выпуск http-сервера lighttpd 1.4.51
Mon, 15 Oct 2018 11:59:04 +0300

BiscuitOS - дистрибутив с первыми версиями ядра Linux
Sun, 14 Oct 2018 20:59:57 +0300

Выпуск DNS-сервера KnotDNS 2.7.3
Sun, 14 Oct 2018 19:24:07 +0300

Выпуск операционной системы MidnightBSD 1.0
Sat, 13 Oct 2018 19:53:00 +0300

Выпуск Wine 3.18
Sat, 13 Oct 2018 13:41:56 +0300

Пятое обновление прошивки UBports, пришедшей на смену Ubuntu Touch
Sat, 13 Oct 2018 13:10:53 +0300

Google опубликовал Oboe, С++-библиотеку для обработки звука
Fri, 12 Oct 2018 13:15:40 +0300

Релиз системы обнаружения атак Snort 2.9.12.0
Fri, 12 Oct 2018 10:55:19 +0300

Разработчики Mozilla отложили прекращение доверия к сертификатам Symantec
Fri, 12 Oct 2018 09:25:48 +0300

Организация Linux Foundation выпустила LTSI-ветку на базе ядра Linux 4.14
Fri, 12 Oct 2018 08:52:28 +0300

Выпуск Mozilla Things Gateway 0.6, шлюза для умного дома и IoT-устройств
Thu, 11 Oct 2018 21:24:22 +0300

Доступна децентрализованная видеовещательная платформа PeerTube 1.0
Thu, 11 Oct 2018 14:08:26 +0300

В продуктах Juniper исправлены 22 уязвимости
Thu, 11 Oct 2018 11:38:02 +0300

В Ghostscript выявлены две новые критические уязвимости
Thu, 11 Oct 2018 11:10:33 +0300

Компания Microsoft присоединилась к инициативе по защите Linux от патентных претензий
Wed, 10 Oct 2018 19:00:13 +0300

Опубликованы результаты аудита системы обновления Firefox
Wed, 10 Oct 2018 11:32:02 +0300

Доступен web-браузер Min 1.8
Wed, 10 Oct 2018 10:56:54 +0300

Выпуск дистрибутива Proxmox Mail Gateway 5.1
Wed, 10 Oct 2018 10:18:41 +0300

В Fedora 30 решено поставлять по умолчанию сборку Firefox на базе Wayland
Wed, 10 Oct 2018 08:39:46 +0300

Релиз коммуникационной платформы Asterisk 16 и дистрибутива FreePBX 15
Wed, 10 Oct 2018 00:03:30 +0300

Bloomberg раскрыл источник сведений о шпионском чипе в платах Supermicro
Tue, 09 Oct 2018 21:41:10 +0300

В GNOME 3.32 будет прекращена поддержка глобального меню
Tue, 09 Oct 2018 20:21:29 +0300

Релиз рабочего стола KDE Plasma 5.14
Tue, 09 Oct 2018 16:31:21 +0300

Для Linux представлена система динамической отладки BPFtrace (DTrace 2.0)
Tue, 09 Oct 2018 14:02:10 +0300

DoS-уязвимость в Net-SNMP
Tue, 09 Oct 2018 13:53:03 +0300

Влияние несущественных изменений кода на производительность при использовании GCC
Tue, 09 Oct 2018 08:53:30 +0300

Основан проект GoodFORM, который продолжит развитие свободных модулей к СУБД Redis
Mon, 08 Oct 2018 23:13:17 +0300

Google закрывает социальную сеть Google+
Mon, 08 Oct 2018 22:10:38 +0300

Выпуск СУБД Firebird 3.0.4
Mon, 08 Oct 2018 21:56:23 +0300

Новые уязвимости в маршрутизаторах MikroTik и TP-Link
Mon, 08 Oct 2018 11:24:35 +0300

Вышел Calculate Linux 18
Sun, 07 Oct 2018 14:33:14 +0300

В Firefox будет добавлена поддержка формата изображений WebP
Sun, 07 Oct 2018 10:37:39 +0300

Microsoft открывает часть кода игры Minecraft: Java Edition
Sun, 07 Oct 2018 10:02:26 +0300

83% изученных беспроводных маршрутизаторов содержат неисправленные уязвимости
Sat, 06 Oct 2018 22:58:33 +0300

Выпуск дистрибутива NixOS 18.09, использующего пакетный менеджер Nix
Sat, 06 Oct 2018 21:13:05 +0300

Калифорнийский законопроект делает скрытое использование ботов нелегальным
Sat, 06 Oct 2018 14:33: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.

НОВОСТИ: Компания Microsoft присоединилась к инициативе по защите Linux о ... Wed, 10 Oct 2018 19:00:13 +0300

Организация Open Invention Network (OIN), ставящая перед собой цель защиты экосистемы Linux от патентных претензий, объявила о присоединении компании Microsoft к числу участников OIN, которые обязуются не выдвигать патентные претензии и безвозмездно разрешают использовать некоторые запатентованные технологии в проектах, связанных с экосистемой Linux. В качестве своего вклада в общее дело компания Miсrosoft передала участникам OIN право на использование более 60 тысяч своих патентов.

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