November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Tuesday, May 10th, 2005 10:14 am

Дано: динамический IP-адрес на DSL'е. Адрес получается модемом, остальная локальная сеть живет на фейковых адресах 192.168.0.*.
Модем умеет NAT из внутренней сети наружу, умеет port forwarding по конкретным портам (по диапазонам не умеет) снаружи внутрь.
На внутреннем сервере 192.168.0.1 поднят dyndns-клиент, скажем, для myip.dyndns.net.

Требуется: запустить на всей этой хрени битторрентовый сервер, то есть, трекер и [хотя бы один] сид.

Начинаем;
Генерируем .torrent'ы, в которых трекером указываем http://myip.dyndns.net:6969/announce

Включаем на модеме port forwarding для порта 6969, поднимаем на 192.168.0.1 трекер на порту 6969, убеждаемся, что он работает.

Включаем на модеме port forwarding еще и на порт 6881, запускаем битторрентового клиента (далее - сид), прибиваем ему гвоздями порт 6881.

И тут нас ожидает засада: сид не может связаться с трекером. Потому что в torrent'е написано, что трекер живет на myip.dyndns.net, который есть внешний IP-адрес. Делать port forwarding из внутренней сети обратно в неё же модем, похоже, не умеет. Впрочем, и не обязан.

Пытаемся лично для своего сервера посредством /etc/hosts сказать, что myip.dyndns.net есть 192.168.0.1.
После этого сид замечательно связывается с трекером, но тут случается вторая засада.
Сид приходит к трекеру с адреса 192.168.0.1. Этот адрес трекер и будет отдавать всем внешним клиентам. С соответствующим печальным результатом.

Для обхода такой фигни у клиента есть опция --ip, там можно явно указать, какой свой IP-адрес клиент будет говорить трекеру. Пишем туда myip.dyndns.net - опять облом, он же через /etc/hosts опять ресолвится в локальный 192.168.0.1, и ситуация совершенно не меняется.

Что делать?
Мне пока пришло в голову только завести второй dyndns'ный адрес, и скармливать его сиду через --ip. Но оно как-то некрасиво, и, кажется, нарушает политику dyndns.

Включил wildcards на dyndns, приделал трекеру и сиду разные имена. Предыдущая проблема вроде как вылечилась, но всё равно нифига не работает. Сижу, пытаюсь понять, почему.

Может, у кого ещё идеи есть?
Tuesday, May 10th, 2005 08:48 am (UTC)
Мне тут мысля в голову пришла. Ты-же ведь пользуешься честным битторентом? В смысле - родным? Он ведь на питоне написан? Так давай его захачим мал-мал.
Tuesday, May 10th, 2005 08:57 am (UTC)
Ты мне егойный дистрибутив пришли, что-бы не искать.
Tuesday, May 10th, 2005 09:55 am (UTC)
- Отловить коннекты сида к трекеру и завернуть их на локальный порт локальным фаерволом.
- Поселить сида и трекера на разные машины с, соответственно, разными /etc/hosts?
А с --ip не придется ли сида перестартовывать если по какой-то причине внешний ip поменяется? Боюсь что да..
Tuesday, May 10th, 2005 10:18 am (UTC)
1) интересная идея, надо пропробовать
2) как ты думаешь, сколько у меня дома серверов живёт?
3) а хрен его знает, но пока оно никак не работает
Tuesday, May 10th, 2005 10:49 am (UTC)
2) А если одному серверу шизофрению устроить, вмварью какой или еще чем...
Wednesday, May 11th, 2005 12:47 pm (UTC)
по зрелом размышлении первая идея тоже не прокатит. Внешний IP у меня динамический => непонятно, коннекты на какой IP надо заворачивать. Можно на все, но тогда я больше не могу запускать на этой машине клиента для закачки чего-нибудь извне.
Wednesday, May 11th, 2005 06:46 pm (UTC)
Конекты на myip.dyndns.net разумеется. Фаерволл сам при старте отрезолвит. А при смене ip фаерволл рестартануть, и не его одного - см. 3)