LINUX.ORG.RU

Проброс порта NAT-PMP UPnP

 ,


1

2

Нужно пробросить порт, что бы иметь возможность из интернета подключаться к порту. Если настраиваю в веб-морде роутера, то всё работает как надо. Но нужно, что бы программа сама пробрасывала себе порт. Нашел утилитку natpmpc, попробовал natpmpc -a 5900 5900 TCP. Вроде пишет везде OK да SUCCESS, но по факту не работает.

Может нужно время указывать, и может небольшой интервал, допустим 1 мин, может у свича с этим проблемы.

mky ★★★★★ ()

Попробовал miniupnpc. Так же не работает, не понимаю почему. Попробую описать подробнее.

Итак, если я через веб-интерфейс роутера настраиваю проброс TCP 5900-го порта в 192.168.1.61 (внутренний ip искомой машины) на тот же 5900 порт, то всё работает провильно. Т.е. я подключаюсь к 5900-му порту по внешнему ip с другой машины, и всё работает (конкретно – работает VNC клиент)

Но не получается пробросить порт средствами самой машины. Ни по NAT-PMP, ни по IGD. Кокретно, после проброса с помощью natpmpc или upnpc проброс отображается в выводе upnpc -L в числе других пробросов: TCP 5900->192.168.1.61:5900 '[здесь имя утилиты и пр.]' '' [здесь указанное время]. Но при попытке подключиться с другой машины (точно тем же способом, что и раньше), программа отвечает Failed to connect to server.

Что можно поковырять, что бы хотя бы понять, где ошибка?

fingolfin ()
Ответ на: комментарий от fingolfin

Есть мысль, что ты пробрасываешь порт не на роутере, а на локальном iptables. На практике upnp я не использовал, только решения на базе stun серверов. Вот бы вспомнить про этот топик когда я окажусь в окружении с белым ip…

pon4ik ★★★★★ ()

Если UPNP выключено в роутере - то плевать какие ты утилитки используешь. Если программа умеет сама UPNP (и конечно же UPNP умеет и включено на роутере) - она и без всяких утилиток это сделает.

shashilx ★★ ()
Последнее исправление: shashilx (всего исправлений: 1)
Ответ на: комментарий от pon4ik

Есть мысль, что ты пробрасываешь порт не на роутере

К сожалению, именно на роутере. Потому что «проброс отображается в выводе upnpc -L в числе других пробросов», среди которых есть и пробросы с других машин. Так что это роутер.

fingolfin ()
Ответ на: комментарий от fingolfin

Если на роутере Linux - значит ставим на роутере пакет linux-igd (или как он там звётся в твоём дистро), настраиваем - и вся сеть резко сама может себе рулить пробросом портов.

shashilx ★★ ()

а что за роутер?

Я могу сказать что miniupnpc + miniupnpd-nft на моём роутере дружат и работают.

sergej ★★★★★ ()
Ответ на: комментарий от sergej

Если на роутер есть шел, посмотри что там в iptable/nftables написано. М быть они забыли сделать jump на цепочку правил для upnp.

sergej ★★★★★ ()
Ответ на: комментарий от fingolfin

Еще раз повторяю - если на сервере (роутере) никакого UPNP-демона нет - никто тебе автоматом порт пробрасывать не будет и если ты хочешь чтоб

программа сама пробрасывала себе порт

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

программа сама пробрасывала себе порт

будет работать. понимаешь?

shashilx ★★ ()
Ответ на: комментарий от shashilx

https://ru.wikibooks.org/wiki/Сетевой_порт/Использование_UPnP_для_перенаправл... на, читай до просветления.

зы. там вот тот пункт - Программы для работы с UPnP - он будет работать ТОЛЬКО если на роутере установлен UPnP демон. я кончил.

shashilx ★★ ()
Последнее исправление: shashilx (всего исправлений: 1)

Да что такое то, вроде умные люди… Вы думаете, я юзеру скажу «ты сначала поди установи на свой свич вон тот демон, тада у тя всё запашет»? :D UPnP для того и нужен, что бы роутеры вообще не трогать, и нормальные роутеры всё это поддерживают из коробки, в том числе и тот, на котором я тестирую.

В любом случае, UPnP я ниасилил, пробросил порты через ssh. Медленно, глючно, зато работает :)

fingolfin ()
Ответ на: комментарий от fingolfin

На моём роутере надо как минимум галку поставить по умолчанию отключенную, что бы UPnP Заработал.

pon4ik ★★★★★ ()
Ответ на: комментарий от fingolfin

Проверил у себя на роутере - всё работает, порты пробрасываются.

1. включил галку в настройках

2. upnpc -a 192.168.0.64 4444 4444 TCP

и всё - 4444 порт пробросился на 64 адрес.

Хз что тут не осилить можно.

Deleted ()

Хз что тут не осилить можно.

Ну вот так вот не осилил :( Конкретно описал выше:

Кокретно, после проброса с помощью natpmpc или upnpc проброс отображается в выводе upnpc -L в числе других пробросов: TCP 5900->192.168.1.61:5900 '[здесь имя утилиты и пр.]' '' [здесь указанное время]. Но при попытке подключиться с другой машины (точно тем же способом, что и раньше), программа отвечает Failed to connect to server.

Сам UPnP на роутере точно работает. Потому что у меня и торренты пашут, и криптовалютные клиенты и прочее сетевое счастье.

fingolfin ()
Ответ на: комментарий от fsb4000

и торренты и криптовалютные клиенты могут работать без UPnP…

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

fingolfin ()
Ответ на: комментарий от fsb4000

Ну да, только им всем требуется треккер или ещё какой stun сервер в огороженных окружениях.

pon4ik ★★★★★ ()
Ответ на: комментарий от fingolfin

Есть два подхода:

  • UPnP - протокол о том как попросить нат пробросить порт
  • Различные вариации hole punching - пробить nat насильно, используя тот простой факт, что для приёма данных исходящего соединения ему таки надо открывать порт
pon4ik ★★★★★ ()
Ответ на: комментарий от pon4ik

Ну строго говоря - три подхода, но про туннели наверное и так всё понятно.

pon4ik ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.