@Sazoks

Сокеты Беркли. Как установить соединение за NAT'ом?

Всем привет. В сетевом программировании новичок, но уже неплохо разобрался с основными принципами. Написал небольшой многопоточный чат на сокетах С++. Все хорошо работает, но только в моей локалке, где я - сервер, а ноуты - клиенты. Немного подумав, я понял, что, наверное, самый простой способ - купить VDS на винде (ну или взять дешевый на лине, но переписывать под линь соответственно). Но я более чем уверен, что можно обойтись и без этого. Немного поискав в инете, понял, что можно как-то пробросить порты на роутере. Но роутер у меня появился недавно (нет, я не динозавр, просто мне 17 и самому пришлось зарабатывать), поэтому опыта у меня с ним мало. В общем, если я прав, то подскажите, как пробросить порты на роутере, чтобы клиент за NAT'ом мог конектиться со мной. Если же нет, то скажите, как правильно.
Заранее спасибо.
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 3
Jump
@Jump
Системный администратор со стажем.
понял, что можно как-то пробросить порты на роутере
Можно
Но у вас обязательно должен быть белый адрес выданный вам провайдером. Т.е вы не должны находится за NAT'ом провайдера. Иначе ничего не получится.

чтобы клиент за NAT'ом мог конектиться со мной.
Клиент за NAT'ом в любом случае сможет коннектится куда угодно, хоть к вам, хоть еще куда-то.
Главное чтобы вы были не за NAT'ом, ну или у вас должны быть проброшены порты.
Ответ написан
Комментировать
Zoominger
@Zoominger Куратор тега Компьютерные сети
System Integrator
Хм, такой длинный ответ, но АртемЪ почему-то так и не дал ответ на вопрос аффтора.
Не совсем понятно, при чём тут сокеты Беркли, C++ и чят, если вопрос про проброс портов.

pogugli.com/?340321
Только модель своего роутера внесите.
Ответ написан
Комментировать
Работу за NAT можно сделать функцией вашего приложения (такая функция бывает в torrent-клиентах, например), но это не самый простой функционал.

Большинство бытовых маршрутизаторов поддерживают протокол UPnP SSDP/IGD и некоторые поддерживают NAT PMP.
https://en.wikipedia.org/wiki/Internet_Gateway_Dev...
https://en.wikipedia.org/wiki/NAT_Port_Mapping_Protocol
Оба протокола позволяют сделать обратный проброс порта через NAT. Для этого сначала делается запрос на обнаружение маршрутизатора, затем делается запрос собственно на маппинг. Подробно и с разбором трафика по обоим способам есть в этой статье:
https://habr.com/en/post/279969/

Но предварительно стоит уточнить, поддерживает ли ваш маршрутизатор UPnP. Оборудование enterprise-уровня обычно не поддерживает UPnP по соображениям безопасности.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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