Назад | Перейти на главную страницу

Пробивка отверстий UDP по-прежнему требуется в IPv6, даже без NAT?

Предпосылки (переходите к вопросу)

IPv4 нуждался в NAT для сохранения адреса. Свойства брандмауэра NAT также были полезны для безопасности. Правила брандмауэра IPv4 NAT: «блокировать входящий пакет. remote-address:port -> local-address:port, если не отправлен исходящий пакет local-address:port -> remote-address:port в течение последних X секунд ".

Для однорангового приложения UDP это требует, чтобы вводящий сервер выполнял пробивку отверстий NAT. Для Client подключиться к Server (оба за брандмауэром NAT, FW), нам нужно, чтобы произошли следующие шаги:

                           periodic
                          keep-alive
                Introducer <------>
Client    FW                  FW    Server
------------------------------------------
       request
     introduction
       -------> Introducer
Client    FW                  FW    Server
       --------------------->X
         request connection
------------------------------------------
                            notify
                         introduction
                    [Client address:port]
                Introducer ------->
Client    FW                  FW    Server
------------------------------------------
Client    FW                  FW    Server
       <---------------------------
                  hello
------------------------------------------
Client    FW                  FW    Server
       --------------------------->
            request connection
------------------------------------------
Client    FW                  FW    Server
       <---------------------------
             accept connection
------------------------------------------
Client    FW                  FW    Server
       <-------------------------->
            periodic keep-alive

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

Мои вопросы:

Q1: Если правила брандмауэра IPv6 такие же, как правила брандмауэра IPv4 NAT (только без бита трансляции адресов), то правильно ли я думаю, что одноранговое приложение по-прежнему требует точно такого же процесса пробивки отверстий UDP?

2 квартал: Являются ли стандартные / готовые правила брандмауэра для большинства домашних маршрутизаторов IPv6 такими же, как правила брандмауэра IPv4 NAT, кратко изложенные вверху? Если есть другие, то как же так? Существуют ли какие-либо из них, которые имеют поведение по умолчанию accept-all-incoming-packets?

Ссылки

Они поддерживают точку зрения, согласно которой домашние маршрутизаторы IPv6 должны иметь / могут иметь правила брандмауэра, подобные NAT:

Переход на IPv6 подразумевает отказ от NAT. Это хорошая вещь?

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

http://www.brynosaurus.com/pub/net/p2pnat/

Брандмауэры IPv6 по-прежнему обычно блокируют нежелательный входящий трафик по умолчанию, что делает пробивку дыр полезным даже для приложений IPv6.

(следующие ссылки отключены, потому что у меня достаточно очков, чтобы сделать 2)
http://tools.ietf.org/html/rfc5128

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

http://stackoverflow.com/questions/4647633/nat-traversal-and-ipv6

Брандмауэры не исчезнут в ближайшее время, c.f. http://tools.ietf.org/html/draft-ietf-v6ops-cpe-simple-security-16 «Рекомендуемые простые функции безопасности в оборудовании в помещениях клиента для предоставления домашних IPv6-услуг в Интернете». ... Вы можете ожидать, что вездесущие брандмауэры будут продолжать мешать протоколам приложений и потребуют от вас выполнения тех же основных методов обхода, которые влечет за собой IPv4 / NAT, чтобы поддерживать записи состояния в промежуточных ящиках на пути ваших приложений.

http://news.ycombinator.com/item?id=8229327

Люди продолжают говорить, что вместо взлома NAT у вас должен быть собственный IPv6 с брандмауэром для того же или лучшего уровня защиты. Но разве межсетевой экран IPv6 с отслеживанием состояния не создает тех же проблем, что и NAT? Придется ли мне по-прежнему использовать пакеты поддержки активности или протоколы, такие как PCP, чтобы фактически использовать P2P?

Я также с нетерпением жду роста IPv6, но я предполагаю, что - в нормальном мире - потребительские маршрутизаторы по-прежнему будут по умолчанию использовать брандмауэр с отслеживанием состояния для IPv6, что приведет к постоянной необходимости пробивать дыры. : /

Однако они, похоже, предполагают, что в IPv6 не будет никаких правил брандмауэра, подобных NAT, или что процесс пробивки отверстий не нужен:

http://www.raknet.net/raknet/manual/ipv6support.html

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

http://www.zerotier.com/blog/?p=226

Это уродливый обходной путь к фундаментальному ограничению, и чем скорее IPv6 сделает его устаревшим, тем скорее мы сможем начать действительно развертывать Интернет-протоколы нового поколения. ... Поскольку NAT почти всегда отслеживает состояние, требуются частые пакеты keepalive для удержания всех соединений открытыми. ... Если вы не отправляете пакет примерно раз в 120 секунд (для обычных NAT), ваше соединение будет забыто и будет сброшено. Пользователи за NAT, которые используют SSH, вероятно, обнаружили это при попытке оставить сеансы SSH открытыми в течение длительного времени, а SSH (как и большинство протоколов) имеет опцию поддержки активности протокола, доступную в качестве обходного пути.

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

Свойства брандмауэра NAT также были полезны для безопасности.

Это часто повторяется, но это просто неправда; увидеть ниже.

Правила брандмауэра IPv4 NAT: «заблокировать удаленный-адрес входящего пакета: порт -> локальный-адрес: порт, если только исходящий пакет не отправлен локальный-адрес: порт -> удаленный-адрес: порт в течение последних X секунд».

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

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

Описываемый вами процесс «ознакомления» UDP не ограничивается сценариями NAT, но также применяется всякий раз, когда служба не полагается на один хорошо известный номер порта. RPC - классический пример, когда службы привязываются к (полу) случайному порту, а затем регистрируют этот порт и их имена с помощью portmapper, который делает используйте известный порт (111 / TCP и 111 / UDP). Клиенты, желающие подключиться, обращаются к portmapper, чтобы узнать, на каком порту работает их желаемая служба сегодня, а затем инициируют подключения к этому порту. Это именно то, что показывает ваша диаграмма, и это происходит миллионы раз каждый день в плоских (без NAT) сетях по всему миру, где работает NFS.

Что касается ваших вопросов, то вопрос (1) действительно следует читать "Если мой брандмауэр ipv6 настроен на отказ от входящего UDP-трафика без соответствующего состояния, моему UDP-клиенту все равно придется инициировать все произвольные подключения к внешним службам". Ответ, к сожалению,"это зависит". Расширения с отслеживанием состояния, такие как RELATED расширение в iptables Разрешить межсетевым экранам разрешать трафик, который не имеет простого состояния сопоставления, на основании того, что уже существующее соединение запросило это на уровне приложения - FTP в активном режиме является классическим примером - но для этого требуется модуль ядра, который понимает подробности рассматриваемого протокола, а развертывание сквозного шифрования делает такую ​​глубокую проверку пакетов все более сложной. Итак, без таких обходных путей ответ на вопрос 1 будет да. Между прочим, это в равной степени верно и для служб TCP, у которых нет хорошо известного номера порта.

Что касается вопроса (2), исчерпывающий обзор оборудования SOHO, вероятно, выходит за рамки полномочий и возможностей ServerFault, но я уже много лет не видел брандмауэра - v4 или v6 - поставляется с по умолчанию открыто конфигурация.