LINUX.ORG.RU
ФорумAdmin

Настроить nginx на добавление заголовка X-forwarded-for в пакеты идущие к торрент трекеру

 , ,


0

1

Здравствуйте. Помогите, пожалуйста, с конфигом nginx’a для того, чтоб превратить его в прокси, который будет дописаюывать заголовок X-forwarded-for в пакеты, идущие от rtorrent’a к трекерам. Торрент клиент запущен на openwrt роутере, на нём же хотел бы запустить и проеюкси. Это всё нужно т.к. я за провайдерским NAT’ом с проброшенными портами для торрент клиента, но ip провайдерского шлюза, через который пакеты идут в мир отличается от IP, входящие пакеты к которому пробрасываются на порт моего роутера. А один широко известный торрент трекер игнорирует указание ip адреса пира в запросах к трекеру, в связи с чем советует в данной ситуации добавлять поле X-forwarded-for в пакеты, идущие к трекеру. В модифицированном трансмишене эти заголовки добавляются, но он тяжеловат для некоторых ситуаций, rtorrent намного легковеснее, хочется использовать его. Для него как раз и нужно вюс помощью внешнего прокси добавлять этот заголовок. Помогите, пожалуйста, с конфигом…


Это всё нужно т.к. я за провайдерским NAT’ом с проброшенными портами для торрент клиента

Если порты проброшены, и ты проверил, что они работают - беспокоиться не о чем

А один широко известный торрент трекер игнорирует указание ip адреса пира в запросах к трекеру,

О таких широкоизвестных трекерах я не слышал

torrent клиенту пофиг на различия внутреннего и внешнего ip, т.к. все это учтено в протоколе

Для него как раз и нужно вюс помощью внешнего прокси добавлять этот заголовок

Во-первых, nginx не прокси, а reverse proxy. По добавлению x-forwarded for первая ссылка в гугле.

Во-вторых, твоей проблемой будет заставить rtorrent обращаться к твоему nginx вместо трекера

Чем дольше я смотрю на твой вопрос, тем больше думаю, что ты играешь за другую команду

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

Порты проброшены, это проверено.

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

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

З.Ы. Да, сисадминство и линукс моё хобби, а не основная сфера деятельности, так что могу выглядить нубом)

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

Кое-как сделал, помогите улучшить

В общем, кое-как сделал, но есть что доделать. Конфиг:

    server {
    listen 3128;
    server_name bt.t-ru.org;
    location / {
        proxy_set_header X-Forwarded-For 91.214.84.10;
        proxy_pass http://bt.t-ru.org;
    }
    }

    server {
    listen 3128;
    server_name bt2.t-ru.org;
    location / {
        proxy_set_header X-Forwarded-For 91.214.84.10;
        proxy_pass http://bt2.t-ru.org;
    }
    }

    server {
    listen 3128;
    server_name bt3.t-ru.org;
    location / {
        proxy_set_header X-Forwarded-For 91.214.84.10;
        proxy_pass http://bt3.t-ru.org;
    }
    }

    server {
    listen 3128;
    server_name bt4.t-ru.org;
    location / {
        proxy_set_header X-Forwarded-For 91.214.84.10;
        proxy_pass http://bt4.t-ru.org;
    }
    }

Теперь все запросы к трекерам перенаправляются на nginx, на котором запущено 4 виртуапльных сервера, для 4-х серверов (bt.t-ru.org, bt2.t-ru.org, bt3.t-ru.org, bt4.t-ru.org). Nginx добавляет к запросам хедер и отправляет на сервера рутрекера.

Но теперь проблема, что rtorrent теперь не работает с другими трекерами, т.к. nginx не знает куда слать эти пакеты. Подскажите, пожалуйста, как его донастроить чтоб он слал остальные пакеты (не те, которые к этим 4-м серверам) куда надо, т.е. просто пересылал их дальше?

kt368
() автор топика
Ответ на: Кое-как сделал, помогите улучшить от kt368
server {
    listen 3128;
    server_name _;
    location / {
        proxy_set_header X-Forwarded-For 91.214.84.10;
        proxy_pass http://$host;
    }
}

Если посылать X-Forwarded-For нужно не всем трекерам, а только некоторым, то так:

map $host x_header {
    default               "";
    "bt.t-ru.org"    "91.214.84.10";
    "bt2.t-ru.org"   "91.214.84.10";
    "bt3.t-ru.org"   "91.214.84.10";
    "bt4.t-ru.org"   "91.214.84.10";
}


server {
    listen 3128;
    server_name _;
    location / {
        proxy_set_header X-Forwarded-For $x_header;
        proxy_pass http://$host;
    }
}
chaos_dremel ★★
()
Последнее исправление: chaos_dremel (всего исправлений: 1)
Ответ на: комментарий от chaos_dremel

Пробую предложенный вами конфиг (первый, с посылкой X-Forwarded-For всем трекерам, при ообновлении трекеров получаюб такую ошибку:

Tracker: [Could not parse bencoded data: 502 Bad Gateway 502 Bad Gateway nginx/1.17.7]
kt368
() автор топика
Ответ на: комментарий от chaos_dremel

Вот error.log:

2020/11/03 13:56:40 [error] 29363#0: *597 no resolver defined to resolve bt3.t-ru.org, client: 127.0.0.1, server: _, request: "GET http://bt3.t-ru.org/ann?pk=7907732be871b9bfd19d5f44d9cfed3d&info_hash=%84S%CD%87n%A7t%C0G%11%F1z%E7%A6O%AA%23%DEe%93&peer_id=-lt0D80-%86%1D%C3%B8MP%BFL%BA%9CE%94&key=2fc50c65&ip=91.214.84.10&compact=1&port=2138&uploaded=0&downloaded=0&left=0 HTTP/1.1", host: "bt3.t-ru.org"
kt368
() автор топика
Ответ на: комментарий от chaos_dremel

Кажется заработало.

Добавил resolver 8.8.8.8;. Также обнаружил, что у того торрента, с которым я эксперементировал был включён кроме bt3.t-ru.org ещё и трекер http://retracker.locale.

Выключил http://retracker.locale и ошибок нет.

Большое спасибо за помощь!

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