LINUX.ORG.RU

Настроить transmission для работы порта на входящие соединения за провайдерским NAT'ом с проброшеным портом

 ,


0

2

Здравствуйте. Сетап такой: Компьютер за провайдерским NAT’ом, IP серый. Попросил провайдера сделать проброс портов, выбрал порт 2138. Но есть одна особенность - при проверке через сервис https://whatismyipaddress.com/ я получаю IP a.a.a.a, а чтоб достучаться к компьютеру через проброс портов нужно стучаться на b.b.b.b (этот IP мне сообщил провайдер, когда настраивал проброс). В итоге получается, что сколько я ни указываю порт 2138 в настройках transmission, проверка порта через transmission-remote выдаёт результат failed. Думаю это происходит т.к. пиры не знают о адресе b.b.b.b, пытаются коннектиться к a a.a.a, и, ясное дело, у них это не получается. Можно ли как-то в transmission’е указать IP адрес на который пирам стучаться?


Там трансмиссион сам как то разруливает куда стучаться , у меня например в локалке локальный ip и и трансмиссион работает ,если не ошибаюсь то DHT называется эта фишка но это не точно , не помню загугли кароче .

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

Смотри через более продвинутый сервис, который по указанному порту проверяет. Твой только браузерный порт проверил. Trsnsmission такой и использует, только он с ipv6 не работает. https://github.com/transmission/transmission/issues/381 . попробуй curl подергать. Вдруг тоже так. Говорят ipv6 совсем выключить, но я в gai.conf что-то поменял для их ip.

А тут https://github.com/transmission/transmission/issues/1190 видно, что без ключа -v просто единичку должно выдать, когда порт указан, вроде.

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

Я так понял, что transmission сейчас не отправляет ip из-за «правильности» на трекер, а те сами определяют? А трекеры определяют тот, через который клиент связался, а не которым тот слушает? Это можно тогда проверить на трекерах, которые полную статистику показывают. Или посмотреть запрос пиров.

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

Пробовал сделать curl -4 http://portcheck.transmissionbt.com/3128 в ответ получил 0, т.е, проеверялка трансмишена, действительно, не видит открытый порт.

И подскажите, пожалуйста, какою можно использовать трекер, который полную статистику показывает?

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

Трекер наглядный не подскажу. Можно попробовать самому свой сделать, но проще запросить список пиров с трекера, который с http работает. Можно через curl announce дернуть.

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

Я так понял, что transmission сейчас не отправляет ip из-за «правильности» на трекер, а те сами определяют?

Не отправляет. Почему точно, в issue разработчики не прокомментировали. Из очевидных причин:

  • безопасность: можно указать чей-то ip, и к кому-то непричастному будут стучаться.
  • популярные трекеры игнорируют этот параметр.

С используемыми трекерами можно проверить, вручную поправив код transmission.

А трекеры определяют тот, через который клиент связался, а не которым тот слушает?

Да, т.к. это тривиально.

Например, в популярном TBDev (если я правильно понял PHP-код):

Ещё там даже какой-то localip упоминается, но не используется.

А, вот этот трекер, например, не игнорирует переданный ip: https://github.com/Miserlou/zappa-bittorrent-tracker/blob/90ab743796d98c8b096bd4a4a1ecc0283203d812/track.py#L108-L113

gag ★★★★★ ()

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

Этот IP-адрес должен быть настроен как дополнительный на интерфейсе, который подключён к сети провайдера. Иначе пакеты, которые доходят до интерфейса, не приведут к установлению соединения.

Ещё стоит запустить tcpdump с фильтром на destination b.b.b.b на ноде (устройстве) с этим интерфейсом, чтобы проверить что пакеты доходят до него.

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

Я невнимательно прочитал, мда. ТС, запусти nc -l 2138 на ПК и tcpdump с фильтром на destination port 2138, затем проверь из другой сети через nc -zv b.b.b.b 2138.

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

Проверил

Выполнил вышеперечисленное, netcad успешно соединился:

cat: Connected to b.b.b.b:2138.
Ncat: 0 bytes sent, 0 bytes received in 0.15 seconds.

Но в выводе tcpdump’а я не смог найти netcat’овские пакеты:

root@OpenWrt:~# tcpdump -i any dst port 2138
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
06:06:41.411589 ethertype IPv4, IP dynamic-213-57-51-29.hotnet.net.il.58485 > 10.25.252.82.2138: UDP, length 20
06:06:41.411589 IP dynamic-213-57-51-29.hotnet.net.il.58485 > 10.25.252.82.2138: UDP, length 20
06:06:41.419157 ethertype IPv4, IP 77.138.6.209.57523 > 10.25.252.82.2138: UDP, length 20
06:06:41.419157 IP 77.138.6.209.57523 > 10.25.252.82.2138: UDP, length 20
06:06:41.419170 ethertype IPv4, IP 77.138.6.209.57523 > 10.25.252.82.2138: UDP, length 20
06:06:41.419170 IP 77.138.6.209.57523 > 10.25.252.82.2138: UDP, length 20
06:06:41.438711 ethertype IPv4, IP static.202.86.12.49.clients.your-server.de.6885 > 10.25.252.82.2138: UDP, length 88
06:06:41.438711 IP static.202.86.12.49.clients.your-server.de.6885 > 10.25.252.82.2138: UDP, length 88
06:06:41.667092 ethertype IPv4, IP static.240.67.9.5.clients.your-server.de.1910 > 10.25.252.82.2138: UDP, length 71
06:06:41.667092 IP static.240.67.9.5.clients.your-server.de.1910 > 10.25.252.82.2138: UDP, length 71
06:06:46.848836 ethertype IPv4, IP 85-238-110-137.broadband.tenet.odessa.ua.6889 > 10.25.252.82.2138: UDP, length 20
06:06:46.848836 IP 85-238-110-137.broadband.tenet.odessa.ua.6889 > 10.25.252.82.2138: UDP, length 20
06:06:46.848851 ethertype IPv4, IP 85-238-110-137.broadband.tenet.odessa.ua.6889 > 10.25.252.82.2138: UDP, length 20
06:06:46.848851 IP 85-238-110-137.broadband.tenet.odessa.ua.6889 > 10.25.252.82.2138: UDP, length 20
06:06:46.869145 ethertype IPv4, IP 109-184-86-233.dynamic.mts-nn.ru.32167 > 10.25.252.82.2138: UDP, length 33
06:06:46.869145 IP 109-184-86-233.dynamic.mts-nn.ru.32167 > 10.25.252.82.2138: UDP, length 33
^C06:06:46.872482 ethertype IPv4, IP 95-27-41-83.broadband.corbina.ru.9835 > 10.25.252.82.2138: UDP, length 20

17 packets captured
987 packets received by filter
855 packets dropped by kernel

В том, что проброс порта работает я уверен - я через этот проброс уже пробовал к wireguard’у подключаться - проблем нет.

Теперь буду пробовать собрать форк с опцией для указания внешнего IP, спасибо.

kt368 ()
Ответ на: Проверил от kt368

Собрал этот форк, теперь не понимаю, как собранному трансиишену указать какой IP анонсить трекера для входящих соединений.

Пытался разобраться в коде, который связан с передачей IP - не нашёл возможности указывать IP вручную, кажется он его будет пытаться определить функцией GetPublicAddress().

Подскажите, пожалуйста, так ли это и можно ли всё же используя этот форк трансмишена самому указать IP?

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

Если зайти в веб-интерфейс transmission, и нажать кнопку «Edit preferences», на вкладке «Network» под галочкой «Announce external IP» должно быть поле ввода «External IP (optional):» — в это поле нужно вписать внешний адрес.

cdslow ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.