Маршрутизаторные технологии для обхода NAT?

1202
Question

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

Как мне объяснили некоторые люди в канале технической поддержки, NAT скрывает внутренний IP-адрес, поэтому, если переадресация портов не выполняется, отправитель отправляет пакет на конечный компьютер, но пакет содержит только внешний IP-адрес. Маршрутизатор назначения не знает, на какую машину пересылать пакет, поэтому отбрасывает / отклоняет его. Это правильно?

EG Моя машина -> Машина друга. Машина друга находится за NAT, не выполняет переадресацию портов / не поддерживает UPNP.

В подобной ситуации, сможет ли мой маршрутизатор обойти NAT и каким-то образом передать пакет моей машине друзей? Я нашел некоторые ссылки на дырокол, STUN и т. Д., Но у меня возникли проблемы с пониманием, являются ли они технологиями, специфичными для маршрутизатора, или вам нужно приложение, специально написанное для их использования.

Возможная проблема NAT в двух словах:

  1. Друг находится за NAT, не имеет включенного upnp, не сделал переадресацию портов.

  2. Я не могу подключиться к нему должным образом через соединение UDP с произвольным портом (многопользовательская игра p2p)

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

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

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

0
"Это правильно?" - Это действительно правильно. Ramhound 7 лет назад 1
«_Раршрутизатор не знает, на какую машину пересылать пакет, поэтому отбрасывает / отклоняет его. Это правильно? _» Не совсем, адрес принадлежит маршрутизатору, и при отсутствии пересылки все, что отправлено на этот адрес, отправляется на сам роутер. Маршрутизатор - это отдельный хост. Если на маршрутизаторе не запущен какой-либо процесс, использующий то, что ему отправлено, как на любом другом узле, он проигнорирует его. Ron Maupin 7 лет назад 0
Кстати, NAT не является маршрутизацией. Вы можете использовать NAT на других устройствах, кроме маршрутизаторов, и для маршрутизации не требуется NAT. NAT является просто мешком для продления срока службы IPv4 до тех пор, пока IPv6 не заменит IPv4, позволяя нескольким адресам прятаться за одним адресом. Ron Maupin 7 лет назад 0

1 ответ на вопрос

0
Wayne

Короче говоря, вы не можете сделать это, и это не то, что вы можете исправить со своей стороны.

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

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

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

А как насчет дырокола? Насколько я понимаю, и я, и мой друг установили бы соединение с сервером, после чего сервер сообщает каждому из нас правильный IP / порт для непосредственного соединения друг с другом. Разве это не обойдет проблему NAT? Question 7 лет назад 0
@Question конечно, но тогда вы подключились к серверу и на нем работала служба вместо того, чтобы подключаться к службе, работающей на любой машине. Сервер все еще должен иметь возможность общаться с машиной за NAT, что является той же проблемой, с которой вы сталкиваетесь, пытаясь связаться с этой машиной Ramhound 7 лет назад 0
@Question, это не «обходит» проблему NAT так, как это использует NAT, как задумано, так как ваш друг использует NAT для выхода из сети, чтобы подключиться к серверу (о чем я говорил в моем последнем предложении о третьем посредничество сторон). Wayne 7 лет назад 0
@Ramhound: служба / приложение будет настроено на использование дырокола в этом сценарии. Так, например, Клиент A -> сервер <- Клиент B. Оба клиента подключаются, получают правильный IP / порт для использования, оба затем используют его для установления другого соединения друг с другом через приложение. Мне сказали, что брандмауэры как-то это заблокируют, но почему? Они не блокируют исходящий трафик на сторонний сервер, верно? (если вы не настроите его, что не будет типичным). Question 7 лет назад 0
@Wayne: да, вот что я имел в виду под обходом. Мой вопрос сейчас, есть ли что-нибудь кроме дырокола, который может сделать это? Если да, то как это работает и каковы ограничения? Question 7 лет назад 0

Похожие вопросы