Пробивка отверстий: Пробивка отверстий в металле: особенности технологии

alexxlab | 03.10.1999 | 0 | Разное

Содержание

Пробивка отверстий в металле: особенности технологии

Пробивка отверстий в металле является одним из методов перфорации. За счет высокой производительности, относительной простоты выполнения и отличного результата он пользуется высокой популярностью.

Суть технологии

Чаще всего осуществляется пробивка отверстий в листовом металле толщиной 0,5–4 миллиметра, так как из-за особенностей конструкции используемого станка работа с трубами и более толстыми листами практически невозможна.

Сам процесс осуществляется с использованием пуансона – пробойника, изготовленного из твердых сплавов, и матрицы – перфорированной «подложки», на которой размещается заготовка. Пуансоны могут иметь разнообразные формы, что дает возможность нанесения перфорации различных видов.

Получаемые перфорированные листы могут использоваться в самых различных сферах и выступать деталями металлической мебели, каркасов рекламных конструкций, защитными кожухами и решетками.

Методы

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

Ручной

В данном случае используются специализированные пресс-ножницы. Они могут иметь различный принцип действия: механический, пневматический или гидравлический, но результат будет всегда одинаков.

Процесс выглядит следующим образом:

  • Производится разметка заготовки – керном размечаются центры будущих отверстий.
  • Размеченный лист вручную перемещается по станине пресс-ножниц до совпадения разметки с центром пуансона.
  • Производится запуск пресса – пуансон выдавливает часть металла из заготовки, оставляя ее в матрице.

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

Автоматизированный

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

Современные станки также называют револьверными, так как они имеют вращающийся барабан, в котором установлены пуансоны различных форм и размеров. В зависимости от программы они автоматически сменяют друг друга без участия человека и остановки работы. Подобная конструкция позволяет производить до 1500 отверстий в минуту.

В отличие от ручного метода, лист-заготовка закрепляется на столе специальными зажимами, которые производят ее перемещение в плоскости согласно внесенной программе. При этом во время работы головка пресса сначала прижимает металлический лист специальным прижимным кольцом, обеспечивающим фиксацию рабочей области, а затем использует соответствующий пуансон.

Благодаря использованию поворотного инструмента станок также может использоваться для осуществления перфорации сложной формы. Кроме того, он обладает дополнительным функционалом и может производить пуклевку, формовку и неполную пробивку, что существенно расширяет возможности изготовления.

Особенности

Как и другие технологии, пробивка отверстий в листовом металле имеет определенные преимущества и недостатки.

К плюсам можно отнести:

  • Высокую скорость производства с использованием станка с ЧПУ.
  • Высокие показатели точности – до 0,05 миллиметра.
  • Возможность ручной пробивки на небольших производствах практически без потери качества.

Присутствуют и минусы:

  • Небольшой диапазон допустимых значений толщины заготовки.
  • На толщинах, близких к максимальным, по краям отверстия могут образоваться неровности и заусенцы, требующие дополнительной обработки.

Несмотря на перечисленные недостатки, пробивка отверстий в металле пользуется стабильно высоким спросом в самых различных сферах производства и не спешит уступать другим методам перфорации.

Пробивка отверстий в профиле на заказ в Москве

Множеством предприятий специализирующихся на машиностроении, а также на производстве мебельной продукции, и различных видов оборудования, предназначенного для работы на объектах торговли и складах, используется пробивка отверстий в профиле и трубах.

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

Такие станки можно использовать как в промышленных масштабах, так и в частном порядке – пробивка отверстий в профиле на заказ осуществляется, если предпринимателю требуется обработать, к примеру, только одну партию продукции.

Пробивка отверстий в профиле и различные виды станков

Разновидности станков для пробивки отверстий:

  1. пробивной станок, осуществляющий не только пробивку, но также и штамповку изделий, вырубку углов, разрезание. Такой станок также содержит конвейерную ленту и профилегибочные машины;
  2. станок для пробивки отверстий в рулонном материале;
  3. станок для пробивки полосового материала;
  4. станок для автоматической пробивки труб;
  5. устройство, предназначенное для вырубки углов, а также резки плоского и профилированного листового металла;
  6. станок для высечения торцов двух видов профилей: прямоугольного и круглого;
  7. также существуют гидравлические прессы и штампы, предназначенные для резки и штампования листового металла.

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

Пробивка отверстий в профиле в Москве производится различными предприятиями. При их выборе необходимо ориентироваться на спектр предоставляемых услуг, ассортимент станков предприятия, и качество выполнения заказа.

Подготовка к процессу пробивки начинается с проектировочных  работ, в ходе которых воспроизводится требуемый технический рисунок. Далее, следуя намеченному плану и требованиям заказчика, выполняется процесс пробивки. Все действия обязательно должны соответствовать установленным нормам безопасности.

На процесс пробивки влияют различные нюансы, такие как:

  • вид и характеристики материала, подлежащего обработке;
  • параметры (длина и ширина) металлического профиля и полосового материала;
  • требуемый вид отверстия, штампа, или угла;
  • количество обработанного материала, которое нужно предоставить к определенному сроку.

Пробивка отверстий при помощи станка имеет небольшую стоимость и высокую производительность, привлекающую клиентов.

 

 

 

 

 

 

 

Пробивка отверстий в бетоне, расценка в смете

Бетон – материал высокой прочности с разнородной структурой, трудно поддающийся обработке. Помимо основного состава поверхность может содержать различные твердые наполнители, щебень, арматуру и прочие составляющие компоненты.

При необходимости высверлить технологическое отверстие в бетонном основании используется метод бурения с применением алмазных режущих элементов. Способ резки выбирается по параметру толщины бетонной стены.

Алмазное сверление – широко распространенный способ, применяемый в строительстве и ремонтных работах для формирования новых проемов (оконных, дверных), а также для создания идеально ровных отверстий. Эту работу нужно доверить настоящим профессионалам, использующим специализированное оборудование для проведения быстрых и качественных работ по сверлению отверстий и проемов любой сложности.

Цена по сверлению отверстия с помощью алмазных коронок

Диам. отверстия в мм.Работы с кирпичом и стяжкой в руб за см.пРаботы с бетоном в руб за см.пРаботы с железобетоном в руб за см.п с Диаметром арматуры > 16 ммВ железобетоне, руб/см.п Диаметр арматуры выше 16 мм
25-5218,825,630,231,3
62-8220,328,432,836,1
92-10225,834,539,043,4
112-12227,836,544,350,3
132-15231,241,148,855,1
162-18236,447,855,162,4
190-21046,458,165,573,8
202-22254,472,377,386,2
25263,786,894,096,6
27274,2102,2115,0129,3
30281,4107,9129,3147,0
352109,1138,6169,5184,7
402141,3166,1197,0221,5
452173,0207,4235,3281,5
502215,2249,3298,0333,0
602260,0300,0351,0383,0

Стоимость пробивки отверстий в бетоне

От диаметра отверстий, их количества, толщины стен, перекрытий и фундамента формируется расчет, сколько будет стоить профессиональная пробивка отверстий в бетоне. Расценки в смете помогут спланировать бюджет заказчика.

Расчет производится индивидуально для каждого объекта после составления подробного плана по проведению запланированных работ.

Плюсы алмазной пробивки отверстий в бетоне

Для сверления толстых бетонных стен и железобетонных покрытий не подходят обычные сверла, которые попросту не выдерживают таких серьезных нагрузок. Оптимальным решением становится алмазная пробивка отверстий в бетоне. Цена работы немного выше, но и качество гораздо лучше. Такой способ бурения позволяет получить идеально ровные отверстия, диаметр и глубина которых соответствуют ювелирной точности.

С помощью алмазной технологии специалисты могут сделать отверстия любого диаметра и глубины, без повреждения несущих элементов объекта.

Из преимуществ следует выделить:

  1. 100% точность готового отверстия в соответствии с заданными параметрами;
  2. инструмент для алмазной пробивки бетонных стен можно использовать даже в самых труднодоступных местах;
  3. отсутствует вибрация, сниженный уровень шума при бурении;
  4. высокая скорость выполняемых работ;
  5. отсутствие большого количества пыли на объекте.

Профессиональное сверление бетона

Сверление бетонных перекрытий – очень ответственная и трудоемкая работа, несущая риски получения травм. Доверить ее лучше опытным специалистам, имеющим профессиональное оборудование и навыки для выполнения всех необходимых манипуляций.

Почему выгодно обращаться к профессионалам:

  • гарантируется оперативность и безопасность;
  • исключены повреждения коммуникаций, нарушение прочности и целостности стены;
  • выполнение работ в согласованные сроки.

Узнать точную стоимость пробивки отверстий в бетоне можно после проведенного расчета, где уже будет учитываться диаметр отверстия, особенности бетонной конструкции и другие важные детали.

Невский завод ТРУБОДЕТАЛЬ оказывает услуги пробивки (прошивки) отверстий.


В настоящее время ООО «Невский завод ТРУБОДЕТАЛЬ» широко применяет такую технологическую операцию как пробивка или, говоря другими словами, прошивка отверстий в стальном прокате. Используя современные станки, пробивка отверстия происходит за считанные секунды. Располагая достаточным парком такого оборудования, мы предлагаем оказать услуги по пробивке отверстий.

Прошивка отверстий на нашем оборудовании в значительной степени сокращает сроки изготовления деталей, относительно других способов обработки отверстий.

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

Возможности оборудования для пробивки отверстий:

– Услуга по пробивке отверстий в металле выполняется на комбинированных пресс-ножницах с усилием от 85 до 120 тонн;

– Технология позволяет пробивать металл толщиной до 27 мм

Прайс-лист “Услуги по пробивке (прошивке) отверстий”

Прайс-лист на услуги пробивки отверстий Вы можете скачать на этой странице. Для расчета полного объема работ с учетом всех скидок, просим обращаться к специалистам нашего Завода. Расчет заявки редко занимает более 1 дня.

Кроме услуг пробивки отверстий, ООО «Невский завод ТРУБОДЕТАЛЬ» оказывает широкий спектр услуг по металлообработке, а также является производителем широкого спектра продукции для технологических и магистральных трубопроводов. В нашем ассортименте такие продукты как: Опоры и детали трубопроводов; Фланцы; КОФ; ИФС; Общепромышленный и высокопрочный крепеж, Металлоконструкции любого уровня сложности.

Проектно-конструкторский отдел Невского завода ТРУБОДЕТАЛЬ готов предоставить эффективные решения поставленных задач, наши специалисты ответят на все интересующие Вас вопросы.

Рекомендуем ознакомиться:


пробивка отверстий – это… Что такое пробивка отверстий?

пробивка отверстий
slotting

slotting

Большой англо-русский и русско-английский словарь. 2001.

  • пробивка летки
  • пробивка продолжения

Смотреть что такое “пробивка отверстий” в других словарях:

  • Пробивка — [punching] технологическая операция объемной или листовой штамповки, заключающаяся в образовании отверстия или паза сдвигом с удалением части металла в отход. Пробивка в горячей объемной штамповке широко используется при пробивке перемычек;… …   Энциклопедический словарь по металлургии

  • Hole punching — Пробивка отверстий …   Краткий толковый словарь по полиграфии

  • Штамповка эластичными средами — специальный вид обработки металлов давлением и считается одним из прогрессивных технологических процессов. Содержание 1 Достоинства …   Википедия

  • ПЕРФОРАЦИЯ — (ново лат., от лат. perforare просверливать насквозь). Пробуравление, протыкание. Акушерская операция, состоящая в раздроблении черепа младенца и его опорожнении, с целью дать возможность свободно пройти головке тазовую полость. Словарь… …   Словарь иностранных слов русского языка

  • Абразивные материалы и абразивная обработка — Сюда перенаправляется запрос «Абразивный износ». На эту тему нужна отдельная статья. Абразивные материалы (фр. abrasif  шлифовальный, от лат. abradere  соскабливать)  это материалы, обладающие высокой твердостью, и… …   Википедия

  • Абразив — Абразивные материалы (фр. abrasif  шлифовальный, от лат. abradere  соскабливать)  это материалы, обладающие высокой твердостью, и используемые для обработки поверхности различных материалов. Абразивные материалы используются в процессах… …   Википедия

  • Абразивные материалы — (фр. abrasif  шлифовальный, от лат. abradere  соскабливать)  это материалы, обладающие высокой твердостью, и используемые для обработки поверхности различных материалов. Абразивные материалы используются в процессах шлифования, полирования,… …   Википедия

  • Абразивный материал — Абразивные материалы (фр. abrasif  шлифовальный, от лат. abradere  соскабливать)  это материалы, обладающие высокой твердостью, и используемые для обработки поверхности различных материалов. Абразивные материалы используются в процессах… …   Википедия

  • Абразивная обработка — Абразивные материалы (фр. abrasif  шлифовальный, от лат. abradere  соскабливать)  это материалы, обладающие высокой твердостью, и используемые для обработки поверхности различных материалов. Абразивные материалы используются в процессах… …   Википедия

  • Абразивы — Абразивные материалы (фр. abrasif  шлифовальный, от лат. abradere  соскабливать)  это материалы, обладающие высокой твердостью, и используемые для обработки поверхности различных материалов. Абразивные материалы используются в процессах… …   Википедия

  • Никельшлак — Абразивные материалы (фр. abrasif  шлифовальный, от лат. abradere  соскабливать)  это материалы, обладающие высокой твердостью, и используемые для обработки поверхности различных материалов. Абразивные материалы используются в процессах… …   Википедия

Бурение, сверление, пробивка отверстий в бетоне и кирпиче

Мы предлагаем следующие услуги:

  • бурение отверстий любых в бетоне, железобетоне и других материалах (кроме дерева) для любых целей;
  • бурение и пробивка отверстий в стенах и перекрытиях для пропуска труб;
  • бурение продухов и отдушин в фундаментах;
  • изъятие кернов образцов бетона для испытаний;
  • сверление отверстий для установки анкеров;

Примеры выполненных работ по бурению отверстий Вы можете посмотреть в фотогалерее

Для заказа работ по бурению отверстий перейдите в раздел контакты

Компания “Алтек” предлагает услуги по алмазному сверлению отверстий в любых твердых строительных материалах. Сотрудники нашей компании имеют огромный опыт в проведении данного вида строительных работ, что позволяет нам безукоризненно выполнять любые поставленные перед нами задачи. Стоимость работ Вы можете узнать в разделе наши цены на алмазное бурение.

Бурение отверстий осуществляется электрическим установками алмазного бурения с напряжением 220В или 380В, мощность установок до 5,2 кВт. Расход воды при выполнении работ составляет 2 л/мин. Скорость проходки отверстий достигает, приблизительно, 2 см/мин и зависит от степени армирования конструкции. Максимальная глубина проходки стандартными алмазными коронками составляет 2-2,5 метра, однако, в парке оборудования нашей компании имеются алмазные коронки увеличенной длины, а также составные коронки, что существенно увеличивает максимальную глубину высверливаемого отверстия и позволяет решить задачу сверления глубоких отверстий. Кроме того, новая услуга нашей компании – сверление отверстий снизу вверх, а также бурение на открытом воздухе без ограничений из-за обильных атмосферных осадков (дождь, снег). В помещениях с выполненной отделкой при бурении отверстий мы используем специальные водосборные кольца, что позволяет получать отверстия без единой пролившейся капли воды и выделения пыли. Бурение стен в помещениях с чистовой отделкой может применяться для устройства подрозетников совместно с операцией штробление стен для монтажа электропроводки.

На крупные объекты с большим объемом производства работ по алмазному сверлению мы доставляем свои производственные мощности в количестве с коэффициентом “запаса” – 1,5, что исключает простои в работе и срыв сроков производства работ из-за возможных поломок оборудования.

Таким образом, наш опыт и оборудование позволяют решать следующие задачи по бурению бетона и кирпича:

  • выполнение работ на открытом воздухе без ограничений из-за атмосферных осадков;
  • бурение стен в помещениях с чистовой отделкой со сбором воды;
  • сверление глубоких отверстий на глубину до 4,5м;
  • сверление отверстий без применения воды;
  • пробивка отверстий под любым углом;
  • бурение отверстий снизу вверх;
  • диаметр отверстий до 600 мм.

Технические требования для производства работ.

В случае отсутствия электроснабжения в зоне проведения работ мы используем дизельные электрогенераторы мощностью до 5 кВт; в случае отсутствия водоснабжения наша компания готова обеспечить доставку на объект технической воды. Вывоз строительного мусора обеспечивается нашими силами или силами Заказчика. Стоимость обеспечения электрогенератором, поставки воды и вывоз строительного мусора оговаривается отдельно.

Пробивка отверстий в металле. Сверлим отверстие. Технология сверления металла.

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

Прежде всего, необходимо соблюсти технику безопасности и надеть защитные очки. В противном случае, при попадании раскаленной стружки на слизистую оболочку глаза, можно получить серьезную травму.

Для получения отверстий в металлических изделиях в домашней обстановке применяют электрическую или ручную дрель.

Инструменты, которые потребуются нам в процессе сверления металла:

  • дрель (преимущественно электрическая)
  • сверла из углеродистой стали или с твердосплавными наконечниками
  • охлаждающая жидкость (допускается использовать отработанное масло)
  • защитные очки
  • керн
  • чертилка (инструмент для нанесения разметки на обрабатываемый материал)

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

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

Для получения отверстий в металле применяют сверла со спиральной канавкой, изготавливаемые из углеродистой стали. Режущие грани сверла затачиваются в зависимости от материала, в котором требуется высверлить отверстия. Чем тверже обрабатываемый материал, тем больше должен быть угол заточки (обычно сверло затачивается под углом в 85-90 градусов).

Завершив все необходимые подготовительные работы, можно приступать к самому процессу сверления. Для того чтобы в процессе работы не повредить сверло, следует при сверлении металла соблюдать заданное направление, избегать сильного давления на инструмент. Также по возможности нужно подавать охлаждающую жидкость в область сверления для устранения повышенных температур. По мере приближения к заданному результату (если отверстие сквозное) необходимо ослабить нажим, чтобы предотвратить поломку сверла.

Если у вас нет возможности подключить электрическую дрель, а просверлить отверстие в металле просто необходимо, то можно использовать ручной вариант дрели, но следует помнить несколько правил:

  • Для сверления металла применяются сверла из углеродистой стали У8, У10, У12 с винтовой канавкой.
  • При сверлении отверстия в металле вручную начинать движение следует плавно, чтобы сверло не сломалось (если диаметр небольшой) или не соскочило.
  • Центровое отверстие необходимо накернить более глубоко, чтобы избежать срыва.
  • При сверлении отверстия большого диметра рекомендуется применять несколько сверл, постепенно увеличивая их размер.
  • В область сверления под изделие желательно подкладывать деревянную дощечку с целью устранения резкого выхода сверла.
  • Толщина обрабатываемого материала может быть абсолютно любой (все зависит от длины сверла), а вот твердость металла должна быть ниже, чем у сверла.

Смотрите подробное видео на тему:

Пробивка отверстий NAT в компьютерной сети

Предварительное условие – преобразование сетевых адресов (NAT)

Что такое пробивка отверстий NAT?
Основным ограничением или недостатком Устройства под NAT является то, что оно не может принимать исходящие соединения. И если такая попытка будет предпринята, NAT гарантирует, что сообщение попадет в корзину. Это ограничение преодолевается методом, известным как перфорация отверстий . В этом методе используется узел за пределами NAT с общедоступным статическим IP-адресом. Он называется сервером Rendezvous.Он используется для установления соединения между двумя узлами, которые либо оба находятся за разными NAT, либо оба находятся за одним и тем же NAT, либо один находится за NAT, а другой не находится за NAT, или узлы находятся под несколькими NAT.

Для чего он используется?
Поскольку большинство компьютеров в мире защищены каким-либо видом NAT, этот метод широко используется в архитектурах P2P (Peer-to-Peer) . Создание сети P2P требует прямого соединения между любыми двумя узлами. Пробивка отверстий — самая важная концепция, которую необходимо изучить при создании сети P2P.Используя эту концепцию, можно обойти сетевые брандмауэры. Пробивка отверстий очень безопасна, поскольку соединение должно быть инициировано с обоих концов, поэтому требуется согласие обоих пользователей.

Как это делается?
Подробное объяснение перфорации отверстий NAT с использованием протокола управления передачей (TCP), протокола пользовательских дейтаграмм (UDP) и протокола управляющих сообщений Интернета (ICMP). В этой статье объясняются основные понятия пробивки отверстий.

Мы обсудим, как установить соединение между двумя узлами, используя перфорацию NAT для следующих случаев.

  1. Задние узлы Общий NAT
  2. Задние узлы Различные NAT
  3. Задние узлы Несколько уровней NAT друг друга отправить сообщение на сервер. Сервер отвечает обоим узлам IP-адресом и портами друг друга (конечными точками). Оба узла пытаются установить соединение друг с другом, отправляя друг другу сообщения. Сообщения отбрасываются NAT на стороне получателя, но NAT на стороне отправителя записывают адрес, на который отправляется сообщение, и любые входящие сообщения с этого адреса будут считается ответом на это сообщение и будет перенаправлен на исходную конечную точку.Оба узла снова пытаются соединиться друг с другом, отправив сообщение. Но теперь сообщения получены успешно, так как NAT считает, что это сообщение является ответом на предыдущее (неудачное) сообщение. БУМ! соединение установлено и ОТВЕРСТИЕ ПРОБИВАЕТСЯ .

    Терминология:

    • A: Узел 1
    • B: Узел 2
    • S: Rendezvous Server

    .

  4. S отправляет адрес A на B и адрес B на A.
  5. A отправляет мусорное сообщение на B, а B отправляет мусорное сообщение на A. (Оба отбрасываются соответствующими NAT)
  6. Шаг 3 повторяется.
  7. Соединение установлено.

Приведенный выше метод пробивки отверстий NAT можно использовать в любом из случаев, либо оба узла находятся за одним и тем же NAT, либо оба узла находятся за разными NAT, либо даже если оба узла находятся за несколькими уровнями NAT.

Возможно, единственным недостатком пробивки отверстий NAT является то, что всегда требуется общедоступный сервер со статическим IP-адресом.Для преодоления этого была предложена архитектура под названием pwnat, но pwnat работает только тогда, когда один из двух узлов не находится за NAT.

P2P Пробивка отверстий в домашнем IoT

03 марта 2019 г. Шакед Илан

Есть перфорация, а затем пробивка отверстий P2P…

Не новость, что многие домашние IoT-устройства постоянно отправляют данные в соответствующие мобильные приложения, особенно когда речь идет о видео и аудио.

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

Связь между смарт-устройствами и соответствующими мобильными приложениями осуществляется либо через облачный сервер, либо через прямое одноранговое (также известное как P2P) соединение.Поскольку общая производительность обычно выше по качеству при использовании P2P, этот протокол предпочтительнее для интеллектуальных видео- и аудиоустройств.

Но чтобы создать это прямое соединение, нужно преодолеть домашний NAT. Есть два распространенных способа установить это: перенаправление портов и пробивка отверстий. Это называется пробиванием отверстий UDP, потому что оно пробивает дыру в брандмауэре сети, что позволяет пакету из внешней системы успешно достичь нужного клиента в сети с использованием NAT.

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

Это конец истории?

Что ж, прежде чем мы бросимся обсуждать отказ от техники пробивки отверстий в ущерб удобству и производительности, давайте сначала более подробно рассмотрим, как все работает.

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

Независимо от того, подключен ли мой телефон к сотовой сети передачи данных или к сети Wi-Fi, процесс требует, чтобы моя камера поддерживала живое соединение с сервером смягчения. Для этого камера постоянно отправляет пакеты на сервер, а NAT запоминает комбинацию IP/Port и распознает новую входящую сессию с другим узлом как ответ на исходящий сеанс устройства (извините, что говорю по-китайски).

Этот первый шаг позволяет серверу или мобильному устройству получить доступ к камере за NAT и, следовательно, имеет решающее значение для процесса перфорации UDP.

Но безопасно ли это?

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

Это опасение вызывает серьезные опасения по поводу безопасности, но почему-то, и я не до конца понимаю, почему этим опасениям не уделяется достаточно внимания в наши дни.

Правда, для того, чтобы атака действительно произошла, хакеру нужно будет «наслаждаться» изначальной уязвимостью (чтобы реально использовать устройство за NAT). Тем не менее, технику пробивки отверстий можно в основном рассматривать как технику, которая имеет побочный эффект создания платформы для атаки с помощью множества простых устройств.

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

Заключение

Поскольку мы не можем изменить все устройства IoT для связи через облако, и мы в любом случае не хотим идти на компромисс с производительностью, любое оптимальное решение для обеспечения безопасности должно опираться на технику перфорации, а не пытаться ее изменить.

Вот почему IoT-компании должны использовать постоянно обучающееся и упреждающее решение для обеспечения безопасности в режиме реального времени, которое могло бы обеспечить исправление этой уязвимости (или любой другой угрозы, которая может возникнуть).

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

Об авторе
Шакед Илан
вице-президент по безопасности и исследованиям
Шакед Илан — вице-президент по безопасности и исследованиям в Firedome.Шакед — хакер от души с 10-летним опытом тестирования на проникновение и НИОКР как в частных, так и в элитных разведывательных подразделениях Израиля. Ранее он был ИТ-директором и соучредителем Yin Yang Cyber.

– Домашняя страница Брайана Форда

– Домашняя страница Брайана Форда

Брайан Форд
Массачусетский технологический институт
baford (at) mit.edu

Пида Шрисуреш
Caymas Systems, Inc.
срисуреш (в) yahoo.com

Дэн Кегель
Данк (в) kegel.com

J’fais des trous, des petits trous
toujours des petits trous

     – С. Генсбур

Реферат:

Преобразование сетевых адресов (NAT) вызывает известные трудности для одноранговой (P2P) связи, поскольку вовлеченные сверстники могут быть недоступны на любой глобально действительный IP-адрес. Известно несколько методов обхода NAT, но их документация тонкая, а данных об их надежности или относительных достоинствах меньше.Этот документ документирует и анализирует один из самых простых, но надежных и практичных методы обхода NAT, широко известный как «пробивка отверстий». Пробивка отверстий умеренно хорошо понята для связи UDP, но мы покажем, как его можно надежно использовать для настройки одноранговых потоков TCP. После сбора данных о надежности этой методики на большом количестве развернутых NAT, мы обнаружили, что около 82% протестированных NAT поддерживают пробивку отверстий для UDP, и около 64% ​​поддерживают пробивку отверстий для потоков TCP.Поскольку поставщики NAT все больше осознают потребности важных приложений P2P такие как передача голоса по IP и протоколы онлайн-игр, поддержка пробивки отверстий, вероятно, увеличится в будущем.

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

Рисунок 1: Общедоступные и частные домены IP-адресов

Новая адресная архитектура Интернета де-факто подходит для связи клиент/сервер в типичном случае, когда клиент находится в частной сети и сервер находится в области глобальных адресов. Архитектура усложняет работу двух узлов в различных частных сетях, чтобы напрямую связываться друг с другом, Однако, что часто важно к протоколам связи «peer-to-peer» используется в таких приложениях, как телеконференции и онлайн-игры.Нам явно нужен способ делать такие протоколы без проблем работают при наличии NAT.

Один из самых эффективных методов установления одноранговой связи между хостами в разных частных сетях известен как «пробивка отверстий». Эта техника уже широко используется в приложениях на основе UDP, но по существу тот же метод работает и для TCP. Вопреки тому, что можно предположить из его названия, пробивка отверстий не ставит под угрозу безопасность частной сети. Вместо, пробивка отверстий позволяет приложениям работать внутри политика безопасности по умолчанию для большинства NAT, эффективно сигнализирует NAT на пути что сеансы одноранговой связи являются «запрашиваемыми» и поэтому должно быть принято.Этот документ документирует пробивку отверстий для UDP и TCP, и подробно описывает важные аспекты как приложения, так и поведения NAT. которые делают работу по пробивке отверстий.

К сожалению, ни один метод обхода не работает со всеми существующими NAT, потому что поведение NAT не стандартизировано. В этой статье представлены некоторые экспериментальные результаты оценка поддержки пробивки отверстий в текущих NAT. Наши данные получены из результатов, отправленных пользователями через Интернет. запустив наш инструмент «Проверка NAT» через широкий спектр NAT от разных поставщиков.В то время как точки данных были собраны из «самостоятельного выбора» сообщества пользователей и не может быть репрезентативным истинного распределения реализаций NAT, развернутых в Интернете, результаты, тем не менее, в целом обнадеживают.

Оценивая базовую перфорацию отверстий, мы также указываем варианты, которые могут заставить работать пробивку отверстий на более широком спектре существующих NAT ценой большей сложности. Однако основное внимание мы уделяем занимается разработкой простейшей техники пробивки отверстий . который работает четко и надежно в присутствии «хороших» NAT в любой разумной топологии сети.Мы намеренно избегаем чрезмерно хитрых уловок это может увеличить совместимость с некоторыми существующими «сломанными» NAT в краткосрочной перспективе, но которые работают только часть времени и может вызвать дополнительную непредсказуемость и нестабильность сети в долгосрочной перспективе.

Хотя большее адресное пространство IPv6 [3] может в конечном итоге уменьшить потребность в NAT, в краткосрочной перспективе IPv6 увеличивает спрос на NAT, потому что сам NAT обеспечивает самый простой способ достижения совместимости между адресными доменами IPv4 и IPv6 [24].В дальнейшем, анонимность и недоступность хостов в частных сетях имеет широко признанные преимущества безопасности и конфиденциальности. Брандмауэры вряд ли исчезнут даже при наличии достаточного количества IP-адресов: Межсетевые экраны IPv6 по-прежнему обычно блокирует нежелательный входящий трафик по умолчанию, делает пробивку отверстий полезной даже для приложений IPv6.

Остальная часть этой статьи организована следующим образом. Раздел 2 вводит базовую терминологию и концепции обхода NAT. Раздел 3 детали пробивки отверстий для УДП, и Раздел 4 вводит пробивку отверстий для TCP.Раздел 5 суммирует важные свойства, которыми должен обладать NAT для возможности пробивки отверстий. Раздел 6 представляет наши экспериментальные результаты о поддержке пробивки отверстий в популярных NAT, В разделе 7 обсуждается связанная работа, и Раздел 8 завершается.

В этом разделе представлена ​​основная терминология NAT. используется на протяжении всей статьи, а затем описывает общие методы обхода NAT которые в равной степени применимы к TCP и UDP.

В этом документе используются терминология и таксономия NAT. определено в RFC 2663 [21], а также дополнительные термины, определенные совсем недавно в RFC 3489 [19].

Особое значение имеет понятие сессии. Конечная точка сеанса для TCP или UDP представляет собой пару (IP-адрес, номер порта), и конкретный сеанс однозначно идентифицируется его две конечные точки сеанса. С точки зрения одного из участвующих хостов, сеанс эффективно идентифицируется 4-кортежным (локальный IP, локальный порт, удаленный IP, удаленный порт). направление сеанса обычно это направление потока пакета который инициирует сеанс: начальный пакет SYN для TCP, или первая дейтаграмма пользователя для UDP.

Из различных разновидностей NAT, наиболее распространенным типом является традиционный или исходящий NAT, который обеспечивает асимметричный мост между частной сетью и общедоступной сетью. Исходящий NAT по умолчанию разрешает только исходящим сеансам проходить через NAT: входящие пакеты отбрасываются, если NAT не идентифицирует их как часть существующей сессии инициируется из частной сети. Конфликты исходящего NAT с одноранговыми протоколами потому что когда оба сверстника, желающие общаться, «отстают» (на стороне частной сети) двух разных NAT, независимо от того, какой узел пытается инициировать сеанс, NAT другого узла отклоняет его.Обход NAT влечет за собой сеансы P2P выглядят как «исходящие» сеансы до оба NAT.

Исходящий NAT имеет два подвида: Basic NAT , который транслирует только IP-адреса, и Преобразование сетевых адресов/портов (NAPT), который переводит все конечные точки сеанса. NAPT, более общая разновидность, также стал самым распространенным потому что это позволяет хостам в частной сети для совместного использования одного общедоступного IP-адреса . На протяжении всей этой статьи мы предполагаем, что NAPT, хотя принципы и методы мы обсуждаем применимы одинаково хорошо (хотя иногда и тривиально) к Basic NAT.

Самый надежный, но наименее эффективный метод связи P2P через NAT это просто сделать общение смотрите на сеть как на стандартную связь клиент/сервер, через ретрансляцию. Предположим, два клиента хозяева и каждый инициировал TCP или UDP подключения к известному серверу, на глобальный IP-адрес 18.181.0.31 и номер порта 1234. Как показано на рисунке 2, клиенты находятся в отдельных частных сетях, и их соответствующие NAT не позволяют ни одному из клиентов напрямую инициация соединения с другим.Вместо того, чтобы пытаться установить прямое соединение, два клиента могут просто использовать сервер для передачи сообщений между ними. Например, чтобы отправить сообщение клиенту, клиент просто отправляет сообщение сервер по уже установленному клиент-серверному соединению, и сервер пересылает сообщение клиенту, используя свой существующий клиент-серверное соединение с .

Рисунок 2: Обход NAT путем ретрансляции

Ретрансляция всегда работает пока оба клиента могут подключиться к серверу.Его недостатки в том, что он потребляет вычислительную мощность сервера и пропускную способность сети, и задержка связи между пиринговыми клиентами вероятно, увеличивается, даже если сервер хорошо подключен. Тем не менее, так как нет более эффективной техники который надежно работает на всех существующих NAT, ретрансляция является полезной запасной стратегией если нужна максимальная жесткость. Протокол TURN [18] определяет метод реализации ретрансляции относительно безопасным способом.

Некоторые приложения P2P используют простая, но ограниченная техника, известный как реверсирование соединения , для связи когда оба хоста подключены к известному серверу рандеву и только один из пиров находится за NAT, как показано на рисунке 3.Если хочет инициировать соединение с , то попытка прямого подключения срабатывает автоматически, потому что не за NAT и NAT интерпретирует соединение как исходящий сеанс. Однако если он хочет инициировать соединение с , любая попытка прямого подключения блокируется NAT’ом. вместо этого может передать запрос на соединение через известный сервер, с просьбой попытаться «обратно» подключиться обратно к . Несмотря на очевидные ограничения этой техники, центральная идея использования известного сервера рандеву в качестве посредника, помогающего установить прямые одноранговые соединения является фундаментальным для более общих методов пробивки отверстий описано далее.

Рисунок 3: Обход NAT путем реверсирования соединения

Пробивка отверстий UDP позволяет двум клиентам настроить прямой одноранговый сеанс UDP с помощью известного рандеву-сервера, даже если оба клиента находятся за NAT. Эта техника упоминалась в разделе 5.1 RFC 3027 [10], более подробно задокументированы в других местах в Интернете [13], и используется в последнее время экспериментальные интернет-протоколы [17,11]. Различные проприетарные протоколы, например, для онлайн-игр, также используйте пробивку отверстий UDP.

Пробивка отверстий предполагает, что два клиента, и , уже есть активные сеансы UDP с сервером рандеву. Когда клиент регистрируется в , сервер записывает две конечные точки для этого клиента: пара (IP-адрес, UDP-порт) что клиент полагает, что сам использует для разговора, и пара (IP-адрес, UDP-порт) что сервер наблюдает , что клиент использует для общения с ним. Мы называем первую пару частной конечной точкой клиента . а второй – в качестве общедоступной конечной точки клиента .Сервер может получить частную конечную точку клиента от самого клиента в поле в теле сообщения регистрации клиента, и получить общедоступную конечную точку клиента из полей исходного IP-адреса и исходного UDP-порта в заголовках IP и UDP этого регистрационного сообщения. Если клиент , а не за NAT, тогда его частные и общедоступные конечные точки должны быть идентичными.

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

Предположим, клиент хочет установить UDP сеанс непосредственно с клиентом. Пробивка отверстий происходит следующим образом:

  1. изначально не знает как дозвониться, так просит за помощь в установлении сеанса UDP с .
  2. ответов с сообщением содержащий общедоступные и частные конечные точки . В то же время, использует свою сессию UDP с отправить сообщение с запросом на подключение содержащий общедоступные и частные конечные точки. Как только эти сообщения будут получены, и знать общедоступные и частные конечные точки друг друга.
  3. При получении общедоступной и частной конечных точек от , начинает отправлять пакеты UDP на обе из этих конечных точек, и впоследствии «блокирует» любую конечную точку сначала вызывает действительный ответ от .Точно так же при получении общедоступных и частных конечных точек в переадресованном запросе на соединение, начинает отправлять пакеты UDP на в каждой из известных конечных точек , блокировка первой конечной точки, которая работает. Порядок и время этих сообщений не имеют решающего значения. пока они асинхронны.

Теперь мы рассматриваем как обрабатывается перфорация UDP каждый из трех конкретных сетевых сценариев. В первой ситуации представляющий «легкий» случай, два клиента фактически находятся за одним и тем же NAT, в одной частной сети.В секунду, самый распространенный случай, клиенты находятся за разными NAT. В третьем сценарии, каждый клиент находится за двумя уровнями NAT : общий NAT «первого уровня» развернутый интернет-провайдером, например, и отдельные NAT «второго уровня» например потребительские маршрутизаторы NAT для домашних сетей.

Это вообще сложно или невозможно для самого приложения определить точную физическую схему сети, и, таким образом, какой из этих сценариев (или многих других возможных) действительно применяется в данное время.Протоколы, такие как STUN [19] может предоставить некоторую информацию о NAT, присутствующих на пути связи, но эта информация не всегда может быть полной или достоверной, особенно когда задействовано несколько уровней NAT. Тем не менее, пробивка отверстий работает автоматически во всех этих сценариях без приложение должно знать конкретная сетевая организация, пока вовлеченные NAT ведут себя разумно. («Разумное» поведение NAT будет описано далее в Разделе 5.)

Сначала рассмотрим простой сценарий, в котором два клиента (вероятно, по незнанию) оказались за одним и тем же NAT, и, следовательно, находятся в одной области частных IP-адресов, как показано на рисунке 4. Клиент установил сеанс UDP с сервером, к которому обычный NAT назначил свой собственный общедоступный номер порта 62000. Клиент аналогичным образом установил сеанс с , которому NAT присвоил общедоступный номер порта 62005.

Рисунок 4: Пробивка отверстий UDP, одноранговые узлы за общим NAT

Предположим, что клиент использует технику пробивки отверстий, описанную выше. установить сеанс UDP с , использование сервера в качестве интродьюсера.Клиент отправляет сообщение с запросом на подключение к . отвечает на общедоступные и частные конечные точки, а также перенаправляет общедоступные и частные конечные точки на . Затем оба клиента пытаются отправить дейтаграммы UDP друг другу. непосредственно в каждой из этих конечных точек. Сообщения, направленные на общедоступные конечные точки может или не может достичь своего пункта назначения, в зависимости от того, поддерживает ли NAT перевод шпилек или нет как описано ниже в Разделе 3.5. Сообщения, направленные на частные конечные точки до достигают места назначения, однако, и так как этот прямой маршрут через частную сеть в любом случае, вероятно, будет быстрее, чем непрямой маршрут через NAT, клиенты, скорее всего, выберут частные конечные точки для последующего регулярного общения.

Предполагая, что NAT поддерживает шпилечную трансляцию, приложение может обойтись без сложности пробовать как частные, так и общедоступные конечные точки, за счет организации локальной связи за общим NAT без необходимости проходить через NAT. Однако, как показывают наши результаты в разделе 6, шпилечный перевод все еще гораздо менее распространен среди существующих NAT чем другие «дружественные к P2P» варианты поведения NAT. Поэтому на данный момент приложения могут принести существенную пользу с использованием как общедоступных, так и частных конечных точек.

Предположим, клиенты и имеют частные IP-адреса за разными NAT, как показано на рисунке 5. и каждый из них инициировал UDP-связь сеансы со своего локального порта 4321 на порт 1234 на сервере. При обработке этих исходящих сеансов NAT назначил порт 62000 на собственный общедоступный IP-адрес, 155.99.25.11, для использования сессии с , и NAT назначил порт 31000 на свой IP-адрес, 138.76.29.7, на сессию с .

Рисунок 5: Пробивка отверстий UDP, одноранговые узлы за разными NAT

В регистрационном сообщении , сообщает свою частную конечную точку как 10.0.0.1:4321, где 10.0.0.1 — это IP-адрес в собственной частной сети. зарегистрированная частная конечная точка Records, вместе с общедоступной конечной точкой, наблюдаемой самой по себе. публичная конечная точка в этом случае — 155.99.25.11:62000, временная конечная точка, назначенная сеансу NAT. Точно так же, когда клиент регистрируется, записывает частную конечную точку как 10.1.1.3:4321 и публичная конечная точка 138.76.29.7:31000.

Теперь клиент следует процедуре пробивки отверстий, описанной выше. установить сеанс связи UDP напрямую с .Сначала отправляет запрос на Прошу помощи в подключении. В ответ отправляет общедоступную и частную конечные точки , и отправляет общедоступные и частные конечные точки в . и каждый начинает пытаться отправить дейтаграммы UDP непосредственно к каждой из этих конечных точек.

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

Теперь рассмотрим первое сообщение, отправленное на публичную конечную точку, как показано на рисунке 5. Поскольку это исходящее сообщение проходит через NAT, этот NAT замечает, что это первый пакет UDP в новом исходящем сеансе. Исходная конечная точка нового сеанса (10.0.0.1:4321) такое же, как у существующего сеанса между и , но его конечная точка назначения отличается. Если NAT ведет себя хорошо, он сохраняет личность частной конечной точки , последовательно переводим все исходящих сеансов из конечной точки частного источника 10.0.0.1:4321 к соответствующей конечной точке общедоступного источника 155.99.25.11:62000. первое исходящее сообщение на публичную конечную точку таким образом, по сути, «пробивает дыру» в NAT для новой сессии UDP определяется конечными точками (10.0.0.1:4321, 138.76.29.7:31000) в частной сети , и по конечным точкам (155.99.25.11:62000, 138.76.29.7:31000) в основном Интернете.

Сообщение If для общедоступной конечной точки достигает NAT до первого сообщения пересек собственный NAT, то NAT ‘s может интерпретировать входящее сообщение ‘s как нежелательный входящий трафик и отбросить его. Однако первое сообщение ‘s в публичный адрес, аналогично открывает дыру в NAT’е, для новой сессии UDP определяется конечными точками (10.1.1.3:4321, 155.99.25.11:62000) в частной сети , и по конечным точкам (138.76.29.7:31000, 155.99.25.11:62000) в Интернете. После того, как первые сообщения от и пересекли их соответствующие NAT, отверстия открыты в каждом направлении и UDP-связь может продолжаться нормально. После того, как клиенты убедились, что общедоступные конечные точки работают, они могут прекратить отправку сообщений на альтернативные частные конечные точки.

3.5 Пиры за несколькими уровнями NAT

В некоторых топологиях, включающих несколько устройств NAT, два клиента не могут установить «оптимальный» маршрут P2P между их без специальных знаний топологии.Рассмотрим окончательный сценарий, изображен на рисунке 6. Предположим, что NAT — это большой промышленный NAT, развернутый Интернетом. поставщик услуг (ISP) для мультиплексирования многих клиентов на несколько общедоступных IP-адреса и NAT, а также небольшие потребительские маршрутизаторы NAT. независимо развернуты двумя клиентами интернет-провайдера для мультиплексирования их частные домашние сети на соответствующий IP-адрес, предоставленный интернет-провайдером адреса. Только сервер и NAT имеют глобально маршрутизируемый IP адреса; «общедоступные» IP-адреса, используемые NAT и NAT, фактически закрытый для области адресов провайдера, в то время как клиент и адреса , в свою очередь, являются частными для областей адресации NAT. и НАТ соответственно.Каждый клиент по-прежнему инициирует исходящее соединение с сервером, в результате чего NAT и каждый из них создают один публичный/частный перевод, и заставить NAT установить публичный/частный перевод для каждого сеанса.

Рисунок 6: Пробивка отверстий UDP, одноранговые соединения за несколькими уровнями NAT

Теперь предположим и попытаемся установить прямое одноранговое соединение UDP с помощью пробивки отверстий. Оптимальной стратегией маршрутизации для клиента будет отправлять сообщения на «полуобщественную» конечную точку клиента в NAT, 10.0.1.2:55000 в области адресации провайдера, и для клиента для отправки сообщений к «полуобщественной» конечной точке в NAT, а именно 10.0.1.1:45000. К сожалению, и нет возможности узнать эти адреса, потому что сервер видит только действительно глобальные общедоступные конечные точки клиентов, 155.99.25.11:62000 и 155.99.25.11:62005 соответственно. Даже если бы и был какой-то способ узнать эти адреса, еще нет гарантии, что их можно будет использовать, потому что назначение адресов в области частных адресов провайдера может конфликтовать с несвязанными назначениями адресов в личных сферах клиентов.(IP-адрес NAT в области NAT с тем же успехом мог бы быть, например, 10.1.1.3, такой же, как частный адрес клиента в области NAT.)

Клиенты поэтому нет выбора но использовать их глобальные публичные адреса как видели для их P2P-общения, и полагайтесь на NAT, обеспечивающий трансляцию шпильки или loopback . Когда отправляет дейтаграмму UDP в глобальную конечную точку, 155.99.25.11:62005, NAT сначала транслирует исходную конечную точку дейтаграммы. с 10.0.0.1:4321 до 10.0.1.1:45000. Дейтаграмма теперь достигает NAT, который распознает, что адрес назначения дейтаграммы является одной из собственных транслируемых общедоступных конечных точек NAT. Если NAT ведет себя хорошо, затем он переводит как адреса источника и получателя в дейтаграмме и «зацикливает» дейтаграмму обратно в частную сеть, теперь с исходной конечной точкой 155.99.25.11:62000 и конечная точка назначения 10.0.1.2:55000. Наконец, NAT транслирует адрес назначения дейтаграммы когда дейтаграмма входит в частную сеть , и дейтаграмма достигает .Обратный путь работает аналогично. Многие NAT еще не поддерживают перевод шпилек, но это становится все более распространенным как поставщики NAT узнают об этой проблеме.

Поскольку транспортный протокол UDP обеспечивает NAT без надежного, независимого от приложения способа определить время жизни сеанса, проходящего через NAT, большинство NAT просто связывают таймер простоя с трансляциями UDP, закрытие дыры, если трафик не использовал ее в течение некоторого периода времени. К сожалению, для этого таймера нет стандартного значения: некоторые NAT имеют тайм-ауты всего 20 секунд.Если приложению необходимо поддерживать активным простаивающий сеанс UDP после установления сеанса с помощью пробивки отверстий, приложение должно периодически отправлять пакеты проверки активности чтобы убедиться, что соответствующее состояние перевода в NAT не исчезает.

К сожалению, многие NAT связывают таймеры простоя UDP с отдельными сеансами UDP. определяется конкретной парой конечных точек, поэтому отправка keep-alive на одном сеансе не будет держать другие сеансы активными даже если все сеансы происходят из та же частная конечная точка.Вместо того, чтобы отправлять сообщения проверки активности во многих различных сеансах P2P, приложения могут избежать чрезмерного трафика поддержки активности определяя, когда сеанс UDP больше не работает, и повторный запуск первоначальной процедуры пробивки отверстий «по запросу».

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

Основная практическая задача приложениям, желающим реализовать пробивку отверстий TCP это не проблема протокола но проблема с интерфейсом прикладного программирования (API).Поскольку стандартный API сокетов Berkeley был разработан на основе парадигмы клиент/сервер, API позволяет сокет потока TCP использоваться для инициирования исходящего соединения через connect(), или прослушивать входящие соединения через listen() и accept(), , но не оба . В дальнейшем, Сокеты TCP обычно имеют однозначное соответствие к номерам портов TCP на локальном хосте: после того, как приложение привязывает один сокет к определенному локальному порту TCP, попытки привязать второй сокет к тому же порту TCP терпят неудачу.

Однако для того, чтобы пробивка отверстий TCP работала, нам нужно использовать один локальный порт TCP для прослушивания входящих TCP-соединений и одновременно инициировать несколько исходящих TCP-соединений. К счастью, все основные операционные системы поддержка специальной опции сокета TCP, обычно называется SO_REUSEADDR , что позволяет приложению связывать несколько сокетов к той же локальной конечной точке пока этот параметр установлен на всех задействованных сокетах. В системах BSD появилась опция SO_REUSEPORT . который контролирует повторное использование портов отдельно от повторного использования адресов; в таких системах должны быть установлены обе из этих опций.

4.2 Открытие одноранговых потоков TCP

Предположим, что клиент хочет установить TCP-соединение с клиентом. Считаем как обычно что оба и уже имеют активные соединения TCP с известным сервером рандеву. Сервер записывает общедоступные и частные конечные точки каждого зарегистрированного клиента, так же, как и для UDP. На уровне протокола Пробивка отверстий TCP работает почти так же, как и для UDP:

  1. Клиент использует свой активный сеанс TCP с попросить помощи в подключении к .
  2. ответов с общедоступными и частными конечными точками TCP, и в то же время отправляет общедоступные и частные конечные точки в .
  3. Из те же локальные порты TCP что и используется для регистрации, и каждый асинхронно делает попытки исходящего соединения к общедоступным и частным конечным точкам другого как сообщает , одновременно прослушивая входящие соединения на соответствующих локальных TCP-портах.
  4. и дождаться успешных попыток исходящего соединения, и/или для появления входящих подключений.Если одна из попыток исходящего соединения не удалась из-за сетевой ошибки такие как «сброс соединения» или «хост недоступен», хост просто повторяет эту попытку подключения после небольшой задержки (например, одна секунда), вплоть до максимального периода ожидания, определяемого приложением.
  5. При установлении TCP-соединения хосты аутентифицируют друг друга чтобы убедиться, что они подключены к предполагаемому хосту. Если аутентификация не удалась, клиенты закрывают это соединение и продолжайте ждать, пока другие добьются успеха.Клиенты использовать первый успешно аутентифицированный поток TCP в результате этого процесса.

В отличие от UDP, где каждому клиенту нужен только один сокет общаться с обоими и любым количеством пиров одновременно, с TCP каждое клиентское приложение должно управлять несколькими сокетами привязан к одному локальному порту TCP на этом клиентском узле, как показано на рисунке 7. Каждому клиенту нужен потоковый сокет, представляющий его соединение с , сокет прослушивания, на котором можно принимать входящие соединения от одноранговых узлов, и как минимум два дополнительных сокета потока с помощью которого инициировать исходящие соединения к общедоступным и частным конечным точкам TCP другого узла.

Рисунок 7: Сравнение сокетов и портов для пробивки отверстий TCP

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

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

Что клиентские приложения наблюдают за своими сокетами во время пробивки отверстий TCP зависит от времени и используемых реализаций TCP. Предположим, что первый исходящий SYN-пакет на общедоступную конечную точку отбрасывается NAT, но первый последующий пакет SYN на общедоступную конечную точку дозвонится до того, как TCP повторно передаст свой SYN.В зависимости от используемой операционной системы, может произойти одно из двух:

  • Реализация TCP замечает, что конечные точки сеанса для входящего SYN совпадают с исходящими сеансами, которые пытался инициировать. поэтому стек TCP связывает этот новый сеанс с сокетом, на котором работает локальное приложение. использовал для подключения() к общедоступной конечной точке. Асинхронный вызов приложения connect() завершается успешно, и ничего не происходит с сокетом прослушивания приложения.

    Поскольку полученный SYN-пакет не содержал ACK для предыдущего исходящего SYN, TCP-ответы на общедоступную конечную точку с пакетом SYN-ACK, часть SYN является просто повтором исходящего SYN, с использованием одного и того же порядкового номера. Как только TCP получает SYN-ACK, он отвечает собственным ACK для SYN, и сеанс TCP переходит в состояние подключения на обоих концах.

  • В качестве альтернативы, реализация TCP может вместо этого заметить у которого есть активный сокет прослушивания на этом порту ожидание входящих попыток соединения.Поскольку SYN выглядит как попытка входящего соединения, TCP создает новый сокет потока с которым связать новый сеанс TCP, и передает этот новый сокет приложению через следующий вызов приложения accept() на его сокете прослушивания. Затем TCP отвечает SYN-ACK, как указано выше, и установка TCP-соединения продолжается как обычно для клиент-серверных подключений.

    Поскольку предыдущая попытка исходящего соединения connect() использовал комбинацию конечных точек источника и назначения который сейчас используется другим сокетом, а именно тот, который только что вернулся в приложение через accept(), попытка асинхронного соединения() в какой-то момент должен потерпеть неудачу обычно с ошибкой «используемый адрес».Приложение, тем не менее, имеет работающую одноранговую сеть. потоковый сокет, с которым он должен общаться, поэтому он игнорирует этот сбой.

Первое поведение, описанное выше, кажется обычным для операционных систем на основе BSD. тогда как второе поведение более распространено в Linux и Windows.

4.4 Одновременное открытие TCP

Предположим, что время различных попыток соединения в процессе пробивки отверстий получается так, что начальные исходящие пакеты SYN от обоих клиентов пересекать соответствующие локальные NAT, открытие новых исходящих TCP-сессий в каждом NAT, до достижения удаленного NAT.В этом «счастливом» случае NAT не отклоняет ни один из исходных пакетов SYN, и SYN пересекаются по проводу между двумя NAT. В таком случае, клиенты наблюдают за событием известный как одновременное открытие TCP : TCP каждого узла получает «сырой» SYN в ожидании SYN-ACK. TCP каждого узла отвечает SYN-ACK, чья часть SYN по существу «воспроизводит» предыдущий исходящий SYN партнера, и чья часть ACK подтверждает SYN, полученный от другого партнера.

Что наблюдают соответствующие приложения в этом случае опять же зависит от поведения задействованных реализаций TCP, как описано в предыдущем разделе.Если оба клиента реализуют второе поведение, описанное выше, может быть, что все асинхронных вызовов connect() сделанные приложением в конечном счете терпят неудачу, но приложение работает на каждом клиенте тем не менее получает новый работающий одноранговый сокет потока TCP через accept() — как будто этот TCP-поток волшебным образом «создал себя» в сети. и был просто пассивно принят на конечных точках! Пока приложению все равно получит ли он в конечном итоге свои одноранговые TCP-сокеты через connect() или accept(), процесс приводит к рабочему потоку на любой реализации TCP который правильно реализует стандартный конечный автомат TCP указано в RFC 793 [23].

Каждый из альтернативных сценариев организации сети обсуждается в Разделе 3 для UDP. точно так же работает для TCP. Например, Пробивание отверстий TCP работает в многоуровневых сценариях NAT например, на рис. 6. пока вовлеченные NAT ведут себя хорошо.

4.5 Последовательная пробивка отверстий

В варианте описанной выше процедуры пробивки отверстий ПТС реализуется библиотекой NatTrav [4], клиенты пытаются соединиться друг с другом последовательно, а не параллельно.Например: (1) сообщает via о своем желании общаться, без одновременного прослушивания на его локальном порту; (2) делает попытку connect() , который открывает дыру в NAT но затем терпит неудачу из-за тайм-аута или RST от NAT’а или RST от самого себя; (3) закрывает соединение с и выполняет listen() на своем локальном порту; (4) в свою очередь замыкает связь с , сигнализируя о попытке подключения() непосредственно к .

Эта последовательная процедура может быть особенно полезна на хостах Windows до XP Service Pack 2, который неправильно реализовывал одновременное открытие TCP, или на API сокетов которые не поддерживают функциональность SO_REUSEADDR .Последовательная процедура больше зависит от времени, Однако, и может быть медленнее в общем случае и менее надежен в нестандартных ситуациях. На шаге (2), например, должен разрешить свою «обреченную на неудачу» попытку подключения () достаточно времени, чтобы убедиться, что хотя бы один пакет SYN проходит через все NAT на своей стороне сети. Слишком маленький риск задержки потерянный SYN, сорвавший процесс, тогда как слишком большая задержка увеличивает общее время требуется для пробивки отверстий. Последовательная процедура пробивки отверстий также эффективно «съедает» подключения обоих клиентов к серверу, требуя от клиентов открытия новых подключений к для каждого нового соединения P2P, которое будет создано.Процедура пробивки параллельных отверстий, в противоположность, обычно завершается, как только оба клиента делают исходящие попытки connect(), и позволяет каждому клиенту сохранять и повторно использовать одно соединение на неопределенный срок.

В этом разделе описываются ключевые поведенческие свойства, которыми должны обладать NAT. чтобы описанные выше методы пробивки отверстий работали должным образом. Не все современные реализации NAT удовлетворяют этим свойствам. но многие делают, и NAT постепенно становятся более «дружественными к P2P». поскольку поставщики NAT осознают спрос на одноранговые протоколы таких как передача голоса по IP и онлайн-игры.

Этот раздел не предназначен для полная или окончательная спецификация того, как NAT «должны» вести себя; мы предоставляем его только для информации о наиболее часто наблюдаемом поведении которые включают или отключают пробивку отверстий P2P. IETF создала новую рабочую группу BEHAVE, определить официальные «лучшие текущие практики» для поведения NAT. Первоначальные наброски группы BEHAVE включить соображения, изложенные в этом разделе и других; Поставщики NAT должны, конечно, следите за рабочей группой IETF напрямую по мере того, как формулируются официальные стандарты поведения.

5.1 Согласованная трансляция конечной точки

Методы пробивки отверстий, описанные здесь работать только автоматически если NAT последовательно отображает заданную конечную точку источника TCP или UDP в частной сети к соответствующей общедоступной конечной точке одиночной контролируется NAT. NAT, который ведет себя таким образом упоминается как конус NAT в RFC 3489 [19] и других источниках, потому что NAT «сосредотачивает» все сеансы исходя из одной частной конечной точки через ту же общедоступную конечную точку в NAT.

Например, снова рассмотрим сценарий на рис. 5. Когда клиент впервые связался с известным сервером, NAT решил использовать порт 62000 по собственному общедоступному IP-адресу 155.99.25.11, как временная общедоступная конечная точка для представления частной конечной точки 10.0.0.1:4321. При более поздних попытках установить одноранговый сеанс с отправив сообщение из той же локальной частной конечной точки на публичную конечную точку, зависит от NAT, сохраняющего идентичность этой частной конечной точки, и повторное использование существующей общедоступной конечной точки 155.99.25.11:62000, потому что это общедоступная конечная точка для которому будут отправляться соответствующие сообщения.

NAT, предназначенный только для поддержки протоколов клиент/сервер. не обязательно таким образом сохранит идентичность частных конечных точек. Таким NAT является симметричный NAT в терминологии RFC 3489. Например, после того, как NAT назначит общедоступную конечную точку 155.99.25.11:62000 к сеансу клиента с сервером, NAT может назначить другую общедоступную конечную точку, например 155.99.25.11:62001, к сеансу P2P, который пытается инициироваться с помощью . В таком случае, процесс пробивки отверстий не обеспечивает подключения, потому что последующие входящие сообщения от достичь NAT на неправильном номере порта.

Многие симметричные NAT выделяют номера портов для последовательных сеансов. довольно предсказуемым образом. Используя этот факт, варианты алгоритмов пробивки отверстий [9,1] можно заставить работать «большую часть времени» даже через симметричные NAT сначала исследуя поведение NAT используя такой протокол, как STUN [19], и используя полученную информацию чтобы «предсказать» номер публичного порта NAT назначит новый сеанс.Однако такие методы прогнозирования равносильны погоне за движущейся целью. и многое может пойти не так на этом пути. Прогнозируемый номер порта может уже использоваться заставляя NAT перейти на другой номер порта, Например, или другой клиент за тем же NAT может инициировать несвязанный сеанс в неподходящее время чтобы выделить прогнозируемый номер порта. Хотя предсказание номера порта может быть полезным трюком для достижения максимальной совместимости с существующими NAT с плохим поведением, он не представляет собой надежного долгосрочного решения.Поскольку симметричный NAT не обеспечивает большей безопасности чем конусный NAT с посессионной фильтрацией трафика, симметричный NAT становится все менее распространенным поскольку поставщики NAT адаптируют свои алгоритмы для поддержки протоколов P2P.

5.2 Обработка нежелательных TCP-соединений

Когда NAT получает пакет SYN на своей общедоступной стороне за то, что кажется незапрашиваемой попыткой входящего соединения, важно, чтобы NAT просто молча отбрасывал пакет SYN. Вместо этого некоторые NAT активно отвергают такие входящие соединения. отправив обратно пакет TCP RST или даже отчет об ошибке ICMP, что мешает процессу пробивки отверстий TCP.Такое поведение не обязательно фатально, пока приложения повторяют попытки исходящих подключений как указано в шаге 4 процесса, описанного в Разделе 4.2, но в результате временные ошибки может увеличить пробивку отверстий.

Несколько существующих NAT известно, что они «вслепую» сканируют полезные данные пакетов для 4-байтовых значений, которые выглядят как IP-адреса, и перевести их так же, как IP-адрес в заголовке пакета, ничего не зная об используемом прикладном протоколе.Такое плохое поведение, к счастью, кажется необычным, и приложения могут легко защититься от него запутывая IP-адреса, которые они отправляют в сообщениях, например, отправив побитовое дополнение желаемого IP-адреса.

5.4 Перевод шпильки

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

Оценить надежность методов пробивки отверстий TCP и UDP. описано в этой статье на множестве существующих NAT, мы внедрили и распространили тестовую программу под названием Проверка NAT [16], и запросил данные у пользователей Интернета об их NAT.

Основная цель проверки NAT тестировать NAT для двух поведенческих свойств, наиболее важных к надежному пробиванию отверстий UDP и TCP: а именно, согласованный перевод конечной точки с сохранением идентичности (раздел 5.1), и молча отбрасывать нежелательные входящие TCP SYN вместо того, чтобы отклонять их с ошибками RST или ICMP (Раздел 5.2). Кроме того, NAT Проверяйте отдельно тесты поддерживает ли NAT перевод шпилек (раздел 5.4), и фильтрует ли вообще NAT нежелательный входящий трафик.Это последнее свойство не влияет на пробивку отверстий. но обеспечивает полезную индикацию политики брандмауэра NAT.

Проверка NAT не предпринимает попыток для индивидуального тестирования каждого соответствующего аспекта поведения NAT: известно большое разнообразие тонких поведенческих различий, некоторые из которых трудны для надежного тестирования [12]. Вместо этого проверка NAT просто пытается ответить на вопрос, «насколько часто предлагаемые методы пробивки отверстий ожидается, что он будет работать на развернутых NAT, в типичных сетевых условиях?»

NAT Check состоит из клиентской программы для запуска на машине за NAT для тестирования, и три известных сервера с разными глобальными IP-адресами.Клиент взаимодействует с тремя серверами чтобы проверить поведение NAT относится как к пробивке отверстий TCP, так и к UDP. Клиентская программа небольшая и относительно портативная, в настоящее время работает в Windows, Linux, BSD и Mac OS X. Все машины, на которых размещены известные серверы, работают под управлением FreeBSD.

6.1.1 UDP-тест

Чтобы проверить поведение NAT для UDP, клиент открывает сокет и привязывает его к локальному порту UDP, затем последовательно отправляет ping-подобные запросы на серверы 1 и 2, как показано на рисунке 8.Каждый из этих серверов отвечает на эхо-запросы клиента. с ответом, который включает общедоступную конечную точку UDP клиента: собственный IP-адрес клиента и номер порта UDP по наблюдениям сервера. Если два сервера сообщают об одной и той же общедоступной конечной точке для клиента, Проверка NAT предполагает, что NAT должным образом сохраняет идентификатор частной конечной точки клиента, удовлетворяющие первичному условию для надежной перфорации отверстий UDP.

Рисунок 8: Метод проверки NAT для UDP

Когда сервер 2 получает запрос UDP от клиента, помимо прямого ответа клиенту он также перенаправляет запрос на сервер 3, который, в свою очередь, отвечает клиенту со своего IP-адреса.Если брандмауэр NAT правильно фильтрует «незапрашиваемый» входящий трафик для каждого сеанса, тогда клиент никогда не увидит эти ответы от сервера 3, даже если они направлены в один и тот же публичный порт как ответы с серверов 1 и 2.

Чтобы протестировать NAT на поддержку перевода шпилек, клиент просто открывает второй сокет UDP на другом локальном порту и использует его для отправки сообщений на общедоступную конечную точку . представляющий первый сокет UDP клиента, как сообщает сервер 2.Если эти сообщения достигают первой частной конечной точки клиента, тогда NAT поддерживает перевод шпилек.

6.1.2 Тест TCP

Тест TCP следует той же схеме, что и для UDP. Клиент использует один локальный порт TCP инициировать исходящие сеансы на серверы 1 и 2, и проверяет, являются ли общедоступные конечные точки сообщения серверов 1 и 2 совпадают, первое предварительное условие для надежной пробивания отверстий TCP.

Реакция NAT на незапрошенные попытки входящего соединения также влияет на скорость и надежность пробивки отверстий TCP, однако поэтому проверка NAT также проверяет это поведение.Когда сервер 2 получает запрос клиента, вместо немедленного ответа клиенту, он перенаправляет запрос на сервер 3 и ждет, пока сервер 3 ответит сигналом «добро». Когда сервер 3 получает этот перенаправленный запрос, он пытается инициировать входящее соединение к общедоступной конечной точке TCP клиента. Сервер 3 ждет до пяти секунд чтобы это соединение было успешным или неудачным, и если попытка подключения все еще «выполняется» через пять секунд, сервер 3 отвечает серверу 2 сигналом «добро» и продолжает ждать до 20 секунд.Как только клиент наконец получит ответ сервера 2 (который сервер 2 задержал, ожидая сигнала «добро» сервера 3), клиент пытается установить исходящее соединение с сервером 3, эффективно вызывая одновременное открытие TCP с сервером 3.

Что происходит во время этого теста зависит от поведения NAT следующим образом. Если NAT должным образом просто отбрасывает «незапрошенные» входящие SYN-пакеты сервера 3, тогда ничего не происходит в сокете прослушивания клиента в течение пяти секунд до того, как сервер 2 ответит клиенту.Когда клиент, наконец, инициирует собственное соединение с сервером 3, открытие дыры через NAT, попытка увенчалась успехом немедленно. Если с другой стороны NAT делает , а не , отбрасывает нежелательные входящие SYN сервера 3 но позволяет им пройти (что хорошо для пробивки отверстий, но не идеально для безопасности), затем клиент получает входящее TCP-соединение на своем сокете прослушивания до получения ответа сервера 2. Наконец, если NAT активно отклоняет незапрошенные входящие SYN сервера 3 путем отправки обратно пакетов TCP RST, затем сервер 3 сдается и последующая попытка клиента подключиться к серверу 3 не удалась.

Чтобы протестировать перевод шпилек для TCP, клиент просто использует дополнительный локальный порт TCP попытаться подключиться к общедоступной конечной точке соответствующий его основному порту TCP, так же, как и для UDP.

Данные проверки NAT, которые мы собрали состоит из 380 зарегистрированных точек данных охватывает различное оборудование маршрутизатора NAT от 68 поставщиков, а также встроенная функция NAT в разные версии восьми популярных операционных систем. Только 335 из общего числа точек данных включают результаты шпилечного перевода UDP. и только 286 точек данных включают результаты для TCP, потому что мы реализовали эти функции в более поздних версиях NAT Check после того, как мы уже начали собирать результаты.Данные сведены по поставщикам NAT в Таблицу 1; в таблице перечислены только поставщики по отдельности для которых имелось не менее пяти точек данных. Различия в результатах тестирования для данного поставщика может быть обусловлено различными факторами, например, разные устройства NAT или линейки продуктов, продаваемые одним и тем же поставщиком, разные версии программного обеспечения или прошивки одной и той же реализации NAT, различные конфигурации, и, возможно, случайное тестирование NAT Check или сообщения об ошибках.

Таблица 1: Пользовательские отчеты о поддержке NAT для UDP и TCP Hole Punching
    УДП TCP
    Отверстие   Отверстие  
    Штамповка Шпилька Штамповка Шпилька
Оборудование NAT                
  Линксис 45/46 (98%) 5/42 (12%) 33/38 (87%) 3/38 (8%)
  Netgear 31/37 (84%) 3/35 (9%) 19/30 (63%) 0/30 (0%)
  D-Link 16/21 (76%) 21/11 (52%) 19 сентября (47%) 2/19 (11%)
  Драйтек 17.02. (12%) 3/12 (25%) 2/7 (29%) 0/7 (0%)
  Белкин 14/14 (100%) 1/14 (7%) 11/11 (100%) 0/11 (0%)
  Сиско 12/12 (100%) 3/9 (33%) 6/7 (86%) 2/7 (29%)
  SMC 12/12 (100%) 3/10 (30%) 8/9 (89%) 2/9 (22%)
  ZyXEL 7/9 (78%) 1/8 (13%) 0/7 (0%) 0/7 (0%)
  3Com 7/7 (100%) 1/7 (14%) 5/6 (83%) 0/6 (0%)
NAT на базе ОС                
  Окна 31/33 (94%) 32.11 (34%) 16/31 (52%) 28/31 (90%)
  Линукс 26/32 (81%) 3/25 (12%) 16/24 (67%) 2/24 (8%)
  FreeBSD 7/9 (78%) 3/6 (50%) 2/3 (67%) 1/1 (100%)
Все поставщики 310/380 (82%) 80/335 (24%) 184/286 (64%) 37/286 (13%)

Из 380 зарегистрированных точек данных для UDP, в 310 случаях (82%) NAT последовательно транслирует частную конечную точку клиента, указывает на базовую совместимость с пробивкой отверстий UDP.Однако поддержка перевода шпилек встречается гораздо реже: из 335 точек данных, которые включают результаты перевода шпилек UDP, только 80 (24%) показывают поддержку перевода шпильки.

Из 286 точек данных для TCP 184 (64%) демонстрируют совместимость с пробивкой отверстий TCP: NAT последовательно транслирует частную конечную точку TCP клиента, и не отправляет обратно пакеты RST в ответ на незапрашиваемые входящие попытки подключения. Поддержка перевода шпильки снова встречается гораздо реже: только 37 (13%) отчетов показал шпильку поддержки TCP.

Поскольку эти отчеты были созданы «самоотобравшимся» сообществом добровольцев, они не составляют случайную выборку и поэтому не обязательно представляют истинное распространение общеупотребительных NAT. Тем не менее, результаты обнадеживают: похоже, что большинство широко используемых NAT уже поддерживает пробивку отверстий UDP и TCP по крайней мере, в одноуровневых сценариях NAT.

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

Второй, Текущая проверка перевода шпильки NAT Check может привести к излишне пессимистичным результатам потому что он не использует полную двустороннюю процедуру пробивки отверстий для этого теста. Проверка NAT в настоящее время предполагает, что NAT, поддерживающий перевод шпилек не фильтрует «входящие» шпильки поступающие из частной сети так, как он будет фильтровать входящие соединения прибытие на публичную сторону NAT, потому что такая фильтрация не нужна для безопасности.Однако позже мы поняли, что NAT мог бы упрощенно обрабатывать любой трафик , направленный на общедоступные порты NAT как «ненадежный» независимо от его происхождения. Мы еще не знаем, какое поведение более распространено.

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

Несмотря на трудности тестирования, подобные описанным выше, наши результаты в целом подтверждаются от крупных интернет-провайдеров, который недавно обнаружил, что из трех ведущих поставщиков потребительских NAT-маршрутизаторов, представляющие 86% NAT, наблюдаемых в их сети, все три поставщика в настоящее время производят совместимые с NAT с пробивкой отверстий UDP [25].Дополнительные независимые результаты недавно полученный с использованием UDP-ориентированного протокола STUN [12], и STUNT, расширение с поддержкой TCP [8,9]. также кажутся совместимыми с наши результаты. Эти последние исследования предоставляют больше информации о каждом NAT. путем индивидуального тестирования более широкого спектра моделей поведения, вместо того, чтобы просто тестировать базовую совместимость с пробивкой отверстий как это делает проверка NAT. Поскольку эти более обширные тесты требуется несколько взаимодействующих клиентов за NAT и, следовательно, их сложнее запустить, Однако, эти результаты пока доступны на более ограниченном наборе NAT.

Пробивка отверстий UDP была впервые исследована и публично задокументирована Дэном Кегелем [13], и к настоящему времени хорошо известен в сообществах одноранговых приложений. Важные аспекты пробивки отверстий UDP также были косвенно задокументированы. в спецификациях нескольких экспериментальных протоколов, такие как STUN [19], ДВС [17], и Тередо [11]. Мы не знаем ни об одной существующей опубликованной работе который тщательно анализирует пробивку отверстий, Однако, или это указывает на проблему перевода шпильки для многоуровневого NAT (раздел 3.5).

Мы также не знаем о предыдущей работе который разрабатывает перфорацию отверстий TCP симметричным способом, описанным здесь. Даже наличие решающего SO_REUSEADDR / SO_REUSEPORT опции в API сокетов Беркли кажется малоизвестным среди разработчиков приложений P2P. НатТрав [4] реализует аналогичную, но асимметричную процедуру пробивки отверстий TCP изложенные ранее в Разделе 4.5. НАЦСС [9] и НАТБЛАСТЕР [1] реализовать более сложные трюки с пробивкой отверстий TCP который может обойти некоторые из плохих поведений NAT упоминается в Разделе 5, но они требуют, чтобы сервер рандеву подделывал исходные IP-адреса, и они также требуют, чтобы клиентские приложения имели доступ к «сырым» сокетам, обычно доступны только на уровнях привилегий root или администратора.

такие протоколы, как SOCKS [14], УПнП [26], и МИДКОМ [22] разрешить приложениям проходить через NAT посредством явного сотрудничества с NAT. Эти протоколы не поддерживаются широко или постоянно поставщиками NAT или приложениями, однако, и не обращаются все более важные многоуровневые сценарии NAT. Явный контроль над NAT далее требует, чтобы приложение обнаружило NAT и, возможно, аутентифицировать себя, который обычно включает явную настройку пользователя. Когда пробивка отверстий работает, в противоположность, он работает без вмешательства пользователя.

Последние предложения например, HIP [15] и ФАРА [2] расширить базовую архитектуру Интернета отделив личность хоста от его местоположения [20]. ИПНЛ [7], УИП [5,6], и DOA [27] предлагать схемы маршрутизации через NAT в такой архитектуре. Пока такие расширения вероятно, необходимы в долгосрочной перспективе, пробивка отверстий позволяет применять оперативно работать над существующей сетевой инфраструктурой без обновлений стека протоколов, и оставляет определение «идентификации хоста» приложениям.

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

Авторы выражают благодарность Дейву Андерсену за его решающую поддержку. при сборе результатов, представленных в Разделе 6. Мы также хотим поблагодарить Henrik Nordstrom, Christian Huitema, Джастин Уберти, Мема Руссопулос, и анонимные рецензенты USENIX за ценный отзыв на ранних проектах этой статьи. Наконец, мы хотим поблагодарить многих волонтеров которые нашли время, чтобы запустить проверку NAT в своих системах и представить результаты.

1
Эндрю Биггадайк, Даниэль Ферулло, Джеффри Уилсон и Адриан Перриг.
NATBLASTER: Установление TCP-соединений между хостами позади НАЦ.
In ACM SIGCOMM Asia Workshop , Пекин, Китай, апрель 2005 г.
2
Дэвид Кларк, Роберт Брейден, Аарон Фальк и Венката Пингали.
FARA: реорганизация архитектуры адресации.
В ACM SIGCOMM FDNA Workshop , август 2003 г.
3
С. Диринг и Р. Хинден. Интернет-протокол
, спецификация версии 6 (IPv6), декабрь 1998 г.
RFC 2460.
4
Джеффри Л. Эппингер.
TCP-подключения для P2P-приложений: программный подход к решению проблема с НАТ.
Технический отчет CMU-ISRI-05-104, Университет Карнеги-Меллона, январь 2005.
5
Брайан Форд.
Масштабируемая интернет-маршрутизация на независимых от топологии идентификаторах узлов.
Технический отчет MIT-LCS-TR-926, Лаборатория Массачусетского технологического института для компьютерных наук, октябрь 2003 г.
6
Брайан Форд.
Неуправляемый интернет-протокол: управление пограничной сетью кризис.
In Второй семинар по актуальным темам в сетях , Кембридж, Массачусетс, ноябрь 2003 г.
7
Пол Фрэнсис и Рамакришна Гуммади.
IPNL: Архитектура Интернета с расширением NAT.
В ACM SIGCOMM , август 2002 г.
8
Сайкат Гуха и Пол Фрэнсис.
Простой обход UDP через NAT и TCP (STUNT).
http://nutss.gforge.cis.cornell.edu/.
9
Сайкат Гуха, Ютака Такедей и Пол Фрэнсис.
NUTSS: подход на основе SIP к сети UDP и TCP подключение.
В SIGCOMM 2004 Workshops , август 2004 г.
10
М. Холдридж и П. Шрисуреш.
Осложнения протокола с транслятором сетевых IP-адресов, январь 2001 г.
RFC 3027.
11
К. Хуйтема.
Teredo: Туннелирование IPv6 через UDP через NAT, март 2004 г.
Интернет-проект (в разработке).
12
К. Дженнингс. Результаты классификации NAT
с использованием STUN, октябрь 2004 г.
Интернет-проект (в разработке).
13
Дэн Кегель.
NAT и одноранговые сети, июль 1999 г.
http://www.alumni.caltech.edu/~dank/peer-nat.html.
14
М. Лич и соавт. Протокол
SOCKS, март 1996 г.
RFC 1928.
15
Р. Московиц и П. Никандер.
Архитектура протокола идентификации хоста, апрель 2003 г.
Интернет-проект (в разработке).
16
проверка НАТ.
http://midcom-p2p.sourceforge.net/.
17
Дж. Розенберг.
Установление интерактивного подключения (ICE), октябрь 2003 г.
Интернет-проект (в разработке).
18
Дж. Розенберг, К. Хуйтема и Р. Махи.
Обход с использованием реле NAT (TURN), октябрь 2003 г.
Интернет-проект (в разработке).
19
Дж. Розенберг, Дж. Вайнбергер, К. Хуйтема и Р. Мэхи.
STUN — простой обход протокола пользовательских дейтаграмм (UDP) через трансляторы сетевых адресов (NAT), март 2003 г.
RFC 3489.
20
Дж. Зальццер.
Об именовании и привязке сетевых назначений.
In P. Ravasio et al., редактор, Local Computer Networks , стр. 311-317. Северная Голландия, Амстердам, 1982 г.
RFC 1498.
21
П. Шрисуреш и М. Холдридж.
Терминология транслятора сетевых IP-адресов (NAT) и соображения, август 1999 г.
RFC 2663.
22
П. Шрисуреш, Дж. Кутан, Дж. Розенберг, А.Молитор и А. Райхан.
Коммуникационная архитектура и структура Middlebox, август 2002 г.
RFC 3303.
23
Протокол управления передачей, сентябрь 1981 г.
RFC 793.
24
Г. Цирцис и П. Шрисуреш.
Трансляция сетевых адресов – трансляция протокола (NAT-PT), Февраль 2000 г.
RFC 2766.

Добавить комментарий

Ваш адрес email не будет опубликован.