Ghid
Cum deschizi un port prin tunel
Port forwarding-ul lasă conexiunile să intre în tunelul tău. Fără el, clientul tău torrent descarcă, dar partajează mult mai puțin, pentru că ceilalți parteneri nu te pot contacta. Tot el îți trebuie ca să găzduiești un serviciu de acasă sau să deschizi NAT-ul într-un joc. Warren folosește NAT-PMP, din interiorul tunelului, și toate serverele lui de ieșire îl oferă.
- Oferte
- Toate, inclusiv beta gratuită. Nu plătești nimic în plus.
- Platforme
- macOS, Windows și Linux: aplicația de birou, comanda warren, imaginea Docker.
- Mobil
- Android și iOS: un singur port, ales în setări, cerut când tunelul se conectează.
Cum funcționează
Când activezi port forwarding-ul, dispozitivul tău cere un port serverului de ieșire prin NAT-PMP, din interiorul tunelului. Cererea nu iese niciodată în clar, iar serverul de ieșire nu știe cui îi răspunde.
Serverul acordă un port public între 49152 și 65535 și trimite spre mașina ta tot ce ajunge pe el. Numărul acesta este atât portul public, cât și portul pe care programul tău ascultă local.
Poți ține cinci porturi în același timp, pe toată rețeaua. Fiecare regulă acoperă TCP și UDP împreună, sau doar unul dintre ele.
Portul te urmează. Aplicația cere din nou același număr la fiecare reconectare și la fiecare schimbare de server de ieșire, deci se mișcă rar. Pe partea de ieșire nu se scrie nimic pe disc: alocările rămân în memoria RAM și dispar când mașina se oprește.
Înainte să începi
- Oprește UPnP și NAT-PMP în clientul torrent. Altfel își deschide singur un port, împotriva celui pe care tocmai ți l-a acordat serverul de ieșire, și îți petreci seara căutând care dintre ele câștigă.
- Un singur număr pentru ambele capete. Portul public este și portul tău local de ascultare, iar aplicația refuză orice altă combinație. Copiezi deci un singur număr într-un singur câmp din client.
- Un port deschis poate fi atins de pe internet, de oricine. Pune în spatele lui doar ce vrei cu adevărat să expui.
Warren nu se uită la ce găzduiești și nu restrânge felul în care folosești portul. Sfatul juridic al lui Bulă: „Nu face nimic ilegal, e urât.” Dacă un terț semnalează un abuz venit de pe portul tău, echipa îl închide și înregistrează pe contul tău un avertisment, pe care îl vezi în aplicație. Trei în nouăzeci de zile duc la revocarea contului pentru douăsprezece luni. Detalii și contestații pe pagina Sesizări
În aplicația de birou
Ecranul este același pe macOS, Windows și Linux.
Fiecare port adăugat este deschis pe serverul de ieșire și redirecționat spre același port de pe dispozitivul tău. Modificările se aplică imediat, fără reconectare.
- Deschide Setări, apoi Port forwarding, și pune comutatorul pe pornit.
- „+ Adaugă un port”, apoi un protocol (TCP+UDP, UDP sau TCP) și un număr între 49152 și 65535. Aplicația îți propune unul liber la întâmplare dacă nu ai o preferință și refuză orice număr din afara intervalului.
- Cel mult cinci reguli. Limita se aplică pe toată rețeaua, oricare ar fi serverul de ieșire.
- Când serverul acordă portul, regula arată „deschis: 51413” cu verde. Butonul „Copiază numărul portului”, chiar lângă ea, copiază doar acest număr, gata de lipit în client.
Dacă numărul este deja ocupat pe serverul de ieșire, regula trece pe „port ocupat”, iar aplicația îți propune două ieșiri: „Atribuie un port liber”, care îți dă imediat alt număr, sau „Alege alt server de ieșire”, care îți păstrează numărul și te mută în altă parte.
Setarea „Anunță-mă când se schimbă un port public” este activă implicit. La fiecare port nou, o notificare de sistem afișează „Port forwarding: portul public 51413 este deschis”, apoi „Port forwarding: portul public 51413 nu mai este deschis” când se pierde. Butonul ei „Deschide port forwarding” te aduce înapoi pe ecran. Cât timp fereastra aplicației este vizibilă, nu apare nicio notificare.
Pe ecranul principal, cât ești conectat, o pastilă arată starea: „Redirecționare porturi: 51413 TCP+UDP”.
Ecranul trimite înapoi aici, prin linkul „Cum configurezi clientul torrent”.
Fișierul forwarded_port
Aplicația scrie porturile publice active într-un fișier text, un port pe linie, în ordinea regulilor tale. Când nimic nu este deschis sau tunelul cade, aplicația golește fișierul și îl lasă pe loc: un script care îl urmărește îl găsește mereu. Stă lângă gui_settings.json, în dosarul de date al aplicației.
| Sistem | Cale |
|---|---|
| macOS | ~/Library/Application Support/Warren VPN/forwarded_port |
| Windows | %LOCALAPPDATA%\Warren VPN\forwarded_port |
| Linux | ~/.config/Warren VPN/forwarded_port |
Aplicația beta scrie în același dosar ca aplicația obișnuită: numele dosarului nu se schimbă de la un canal la altul. Dacă ai dubii, caută dosarul care conține gui_settings.json.
Lasă aplicația să îți configureze clientul torrent
Sub lista de reguli, blocul „Client torrent” se oferă să facă treaba în locul tău: „Warren poate introduce portul public în clientul tău torrent și îl poate actualiza ori de câte ori se schimbă. Activează mai întâi interfața web a clientului.”
Aplicația vorbește cu qBittorrent, Transmission și Deluge prin interfața lor web. Activeaz-o în client și alege acolo un nume de utilizator și o parolă: pe acestea le dai apoi aplicației. O găsești în Options, apoi Web UI la qBittorrent, și în Preferences, apoi accesul la distanță la Transmission. Deluge are o interfață web separată, livrată cu parola deluge, aceeași pentru toată lumea: schimb-o înainte de orice.
- „Client”: qBittorrent, Transmission, Deluge sau „Niciunul” ca să lași blocul în repaus.
- „Adresa interfeței web”: http://127.0.0.1:8080 pentru qBittorrent, http://127.0.0.1:9091 pentru Transmission, http://127.0.0.1:8112 pentru Deluge.
- „Nume de utilizator” și „Parolă”: cele alese în interfața web a clientului (Deluge cere doar parola). Aplicația criptează parola cu brelocul sistemului, apoi câmpul arată „Salvată”.
- „Regulă”: cea al cărei port pleacă spre client, când ai mai multe.
- „Testează conexiunea” răspunde pe loc, de exemplu „Conectat la qBittorrent 5.0.4, ascultă pe portul 51413”. „Aplică acum” trimite portul curent fără să aștepte următoarea schimbare.
Sub bloc, o linie arată mereu unde este clientul:
- „qBittorrent ascultă acum pe portul 51413”: a mers.
- „qBittorrent nu poate fi contactat la http://127.0.0.1:8080”: clientul este oprit sau adresa este greșită.
- „qBittorrent a refuzat autentificarea”: nume de utilizator sau parolă greșite.
- „qBittorrent a refuzat portul: ...”: clientul a răspuns, dar refuză acel număr.
- „Se așteaptă un port public”: regula încă nu a primit unul.
- „Acest sistem nu poate păstra parola în siguranță”: aplicația nu a găsit niciun breloc cu care să cripteze parola și nu salvează setarea. Se întâmplă pe un Linux fără breloc deblocat. Ce ai tastat rămâne în câmp.
Când serverul de ieșire acordă un port public diferit de numărul regulii tale, aplicația mută regula pe portul acordat, la ambele capete, apoi îl trimite clientului. Numărul acesta nu l-ai ales tu și devine portul tău local de ascultare: de aceea aplicația acceptă de la server doar un port între 49152 și 65535, ceea ce îl ține departe de SSH-ul tău.
Când clientul nu răspunde, aplicația reîncearcă de trei ori, după 2, 5 și apoi 10 secunde: un client torrent tăcut de obicei tocmai repornește. O parolă refuzată nu este reîncercată, pentru că qBittorrent blochează adresa care greșește de mai multe ori la rând.
Când pune portul, aplicația oprește și UPnP-ul și NAT-PMP-ul clientului, din motivul explicat la „Înainte să începi”.
Client cu client
Dacă preferi să faci totul de mână, pașii sunt aceiași în toate trei: oprește UPnP și NAT-PMP, pune portul acordat de serverul de ieșire, împiedică clientul să îl schimbe la următoarea pornire.
qBittorrent
- Tools, Options, Connection.
- Debifează „Use UPnP / NAT-PMP port forwarding from my router”.
- Pune portul tău în „Port used for incoming connections”.
- Debifează „Use different port on each startup”.
Transmission
- Preferences, Network.
- Pune portul tău în câmpul portului de ascultare pentru parteneri.
- Debifează portul aleatoriu la pornire.
- Debifează redirecționarea de port prin router.
Deluge
- Preferences, Network.
- Debifează porturile aleatorii.
- Pune portul tău de două ori în intervalul porturilor de intrare, la început și la sfârșit.
- Debifează UPnP și NAT-PMP.
Din linia de comandă
Comanda warren vine cu fiecare versiune a aplicației. Se instalează și separat, pe o mașină fără ecran, și gestionează aceleași cinci reguli, cu aceleași limite.
warren port-forward enable --internal-port 51413 --protocol both
warren port-forward status
# 51413/TCP+UDP: MAPPED, public port 51413 Celelalte subcomenzi urmează: add și remove pentru mai multe reguli, disable ca să oprești tot, get ca să recitești configurația, lifetime pentru durata cerută a închirierii.
Pentru un script, --json scoate mereu aceleași câmpuri. Un câmp gol rămâne prezent și are valoarea null.
warren port-forward status --json
{"mappings":[{"internal_port":51413,"protocol":"both","state":"mapped","external_port":51413,"lifetime_granted_secs":3600,"error_reason":null,"error_message":null,"retry_after_secs":null,"attempts_remaining":null,"window_reset_secs":null}]} --wait așteaptă până când fiecare regulă își ține portul, apoi iese cu un cod: 0 totul este deschis, 1 nu este nimic de așteptat, 2 a expirat timpul, 3 o regulă a eșuat. Aici portul ajunge într-o variabilă, gata pentru restul unui script de pornire.
port=$(warren port-forward status --wait --timeout 60 --json | jq '.mappings[0].external_port') --watch urmărește schimbările, câte o linie JSON pentru fiecare. Cu --exec, Warren îți lansează comanda de fiecare dată când un port public se schimbă. O reînnoire care păstrează același număr nu o declanșează.
warren port-forward status --watch --exec 'sh /usr/local/bin/warren-qbt.sh {{PORT}}' Scriptul apelat, aici pentru qBittorrent și interfața lui web:
#!/bin/sh
# warren-qbt.sh: push the public port into qBittorrent. Called with the port as
# its only argument, and does nothing when the grant is gone (empty argument).
set -e
case "$1" in '' | *[!0-9]*) exit 0 ;; esac
curl -s -c /tmp/qb.cookie \
--data 'username=admin&password=CHANGEME' \
http://127.0.0.1:8080/api/v2/auth/login
curl -s -b /tmp/qb.cookie \
--data-urlencode 'json={"listen_port":'"$1"',"random_port":false,"upnp":false}' \
http://127.0.0.1:8080/api/v2/app/setPreferences În comandă, {{PORT}} este înlocuit cu portul public. Mediul mai poartă WARREN_PF_PORT, WARREN_PF_INTERNAL_PORT, WARREN_PF_PROTOCOL și WARREN_PF_STATE, care are valoarea mapped când portul sosește și lost când pleacă.
Docker
Imaginea warren-vpn duce tunelul pentru restul stivei. Port forwarding-ul ei folosește variabilele pe care utilizatorii de gluetun le cunosc deja: una pentru portul intern, alta pentru comanda de rulat când portul public se schimbă, cu {{PORT}} înlocuit cu numărul.
Portul activ este scris și în /tmp/warren/forwarded_port, pentru un container vecin care preferă să urmărească un fișier.
services:
warren:
image: ghcr.io/warrenbrowse/warren-vpn:beta
cap_add: [NET_ADMIN]
devices: [/dev/net/tun]
environment:
- WARREN_MNEMONIC_FILE=/run/secrets/warren_mnemonic
- WARREN_PORT_FORWARD_INTERNAL_PORT=6881
- WARREN_PORT_FORWARD_PROTOCOL=both
- WARREN_PORT_FORWARD_UP_COMMAND=sh /scripts/qbt-port.sh {{PORT}}
volumes:
- ./warren-qbt.sh:/scripts/qbt-port.sh:ro
secrets: [warren_mnemonic]
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
network_mode: "service:warren"
depends_on:
warren:
condition: service_healthy
secrets:
warren_mnemonic:
file: ./warren_mnemonic.txt Scriptul montat în exemplu este cel din secțiunea anterioară: primește portul ca argument și îl scrie în client. Cele trei rețete gata de folosit, câte una pentru fiecare client, sunt în docker/examples/ din depozitul warren-cli, cu apelurile curl deja scrise și testate.
Docker înlocuiește spațiul de rețea când repornește containerul warren, iar clientul torrent păstrează o referință către cel distrus: arată zero parteneri, fără nicio eroare, până când este repornit și el. depends_on ordonează doar prima pornire. După orice repornire a lui warren: docker compose restart qbittorrent.
Depozit: WarrenBrowse/warren-cliLeagă clientul de interfața tunelului
Kill-switch-ul Warren blochează deja tot ce încearcă să iasă pe lângă tunel, deci legarea clientului de interfață este o măsură în plus. Tot folosește la ceva: un client legat se oprește singur când tunelul cade, în loc să insiste pe conexiuni refuzate.
Îți trebuie însă numele interfeței, iar el nu se ghicește peste tot.
| Sistem | Numele interfeței |
|---|---|
| Windows | Adaptorul de rețea se numește Warren. |
| Linux | Numele este ales de kernel, de obicei tun0 sau tun1. Compară ieșirea comenzii ip link înainte și după conectare. |
| macOS | O interfață utunN, al cărei număr variază. Compară ieșirea comenzii ifconfig înainte și după conectare. |
- qBittorrent: Tools, Options, Advanced, „Network interface”.
- Transmission: nicio setare în preferințe. Modifică cheia bind-address-ipv4 din settings.json cât timp demonul este oprit.
- Deluge: Preferences, Network, câmpul adresei de intrare.
Multi-hop, IPv6, split tunneling
Multi-hop
Multi-hop-ul nu oprește port forwarding-ul. Cererea NAT-PMP pleacă spre aceeași poartă internă, fie că traficul trece printr-un releu, fie că nu, iar portul te urmează când serverul de ieșire se schimbă în timpul sesiunii.
IPv6
Portul redirecționat trăiește pe adresa IPv4 publică a serverului de ieșire și nicăieri altundeva. NAT-PMP este un protocol IPv4, iar serverul refuză o cerere venită pe IPv6. Un partener care are doar IPv6 nu te va atinge pe acel port.
Split tunneling
O aplicație scoasă din tunel nu iese prin serverul de ieșire, deci nimic nu o poate atinge pe portul redirecționat. Dacă ți-ai scos clientul torrent din tunel, pune-l la loc.
Verifică dacă portul este deschis
Un site care testează porturi răspunde „închis” de îndată ce nimic nu ascultă, și acesta este cazul cel mai frecvent: portul chiar este deschis pe serverul de ieșire, dar clientul tău încă nu a pornit. În ordine: pornește clientul torrent, verifică dacă regula este acordată („deschis: 51413” în aplicație, MAPPED în linia de comandă), abia apoi testează.
Nici un rezultat „filtrat” pe un alt port nu este anormal. Doar porturile tale redirecționate sunt deschise pe acea adresă de ieșire; restul este închis, pentru tine ca pentru oricine.
Întrebări frecvente
Portul meu se schimbă des?
Rar. Aplicația cere din nou același număr la fiecare reconectare și la fiecare schimbare de server de ieșire. Se mișcă doar dacă numărul este deja ocupat pe noul server, sau dacă alegi tu altul.
Câte porturi pot deschide?
Cinci în același timp, pe toată rețeaua: cinci pentru cheia ta, cu toate dispozitivele la un loc, oricâte servere de ieșire ai folosi.
Ce am voie să trec prin acel port?
Warren nu restrânge folosirea și nu se uită la ce trece. Limita este în altă parte: un port semnalat pentru abuz este închis, se înregistrează un avertisment pe contul care îl deținea, iar trei avertismente în nouăzeci de zile duc la revocarea contului pentru douăsprezece luni.
Sesizări: procedura completăDe ce doar porturi peste 49152?
Pentru că un port înalt nu poate trece drept serviciu de infrastructură. Nimeni nu ține un server de mail pe portul 53000, iar furnizorul de găzduire care primește o plângere știe și el asta. Cu această singură constrângere, Warren poate lăsa restul liber.
Trebuie să mă reconectez după ce schimb un port?
Nu. Modificările se aplică imediat, fără reconectare, iar regula redevine verde de îndată ce serverul de ieșire a răspuns.
