Actieve en passieve modi van FTP-werking. Kenmerken van het FTP-protocol

File Transfer Protocol, voor het eerst gestandaardiseerd in het begin van de jaren 70, is een applicatielaagprotocol dat het TCP-transportprotocol gebruikt om gegevens over te dragen. FTP is ontwikkeld in een tijd waarin clients en servers rechtstreeks met elkaar communiceerden, zonder tussenpersonen en met een minimum aan obstakels.

FTP-problemen in moderne netwerken

In moderne netwerken (NAT, firewall, load balancer) zorgen de volgende kenmerken van FTP ervoor dat het niet correct werkt:

  1. Twee aparte TCP/IP-verbindingen: voor gegevensoverdracht en voor opdrachtoverdracht;
  2. De dataverbinding kan op een willekeurig poortnummer tot stand worden gebracht;
  3. De dataverbinding kan afkomstig zijn van de server naar de client of van de client naar de server;
  4. Het bestemmingsadres van de dataverbinding (modusselectie) wordt on-the-fly onderhandeld tussen client en server via de opdrachtverbinding;
  5. De opdrachtverbinding is inactief terwijl gegevens via de gegevensverbinding worden overgedragen.

Probleem 1 wordt veroorzaakt doordat een router of balancer twee verbindingen moet onderhouden tussen dezelfde bron en bestemming.

Probleem 2 wordt veroorzaakt door het feit dat FTP niet kan werken als de inkomende poorten hard gecodeerd zijn voor alleen degenen die definitief bekend zijn. Die. in de normale modus kan FTP niet alleen werken met open 21 inkomende poorten die worden gebruikt door de opdrachtverbinding, het heeft ook een set open poorten van hoge waarde (49152-65534) nodig voor gegevensoverdracht.

Probleem 4 wordt veroorzaakt door het feit dat bij het gebruik van NAT de inhoud van de verbindingspakketten on-the-fly moet worden gewijzigd om opdrachten te verzenden, zodat het interne adres van de server wordt vervangen door een extern adres, en ook pakketten die aankomen om te leiden het externe adres naar het interne adres van de server.

Probleem 5 wordt veroorzaakt doordat routers vastgelopen verbindingen kunnen verbreken om opdrachten te verzenden.

Twee manieren van gegevensoverdracht in FTP

FTP ondersteunt twee werkingsmodi: actief en passief. Ze verschillen in het mechanisme voor het tot stand brengen van een verbinding voor gegevensoverdracht:

  • In de actieve modus maakt de server verbinding vanaf de 20e poort met de opgegeven clientpoort.
  • In de passieve modus maakt de client verbinding vanaf zijn willekeurige poort met de opgegeven serverpoort.

Alle moderne FTP-clients onderhandelen dus met de server waarvan de gegevens worden overgedragen en die de verbinding tot stand brengt. De opdrachtgever kan het gebruik specificeren actieve modus , door de "PORT"-opdracht te verzenden, die de server vertelt om verbinding te maken met het specifieke IP-adres en de poort van de client, en begint met het verzenden van gegevens. Of de klant kan gebruiken passieve modus , door een "PASV"-opdracht naar de server te sturen, die de server vertelt dat de client wacht tot het IP-adres en de poort van de server beginnen met het ontvangen van gegevens.

Aangezien de client in eerste instantie verbinding maakt met de server om een ​​verbinding tot stand te brengen voor het verzenden van opdrachten, zou het logisch zijn als de client ook een dataverbinding tot stand brengt, d.w.z. een PASV-opdracht verzonden (terwijl tegelijkertijd een probleem tussen FTP en de firewall werd opgelost). Dit is echter niet het geval, de makers van de FTP-specificatie hebben om de een of andere reden besloten dat PORT de voorkeursmodus zou moeten zijn, en PASV-ondersteuning aan de clientzijde is zelfs optioneel.

FTP ondersteunt aanmelding en wachtwoordtoegang, maar dit is niet veilig. ze worden in duidelijke tekst verzonden. Wanneer u een webbrowser gebruikt, kunt u rechtstreeks naar de URL gaan.

ftp:// :@:/

Een voorbeeld van sessies met actieve en passieve gegevensoverdrachtsmodi

Een voorbeeld van een actieve modus waarbij de client anoniem verbinding maakt en één actieve gegevensoverdracht uitvoert (directory lookup).

cliënt: GEBRUIKER anoniem
server:
cliënt: DOORGANG [e-mail beveiligd]
server: 230 Anoniem ingelogd.
cliënt: POORT 192,168,1,2,7,138 De client wil dat de server verbinding maakt met poort 1930 en IP-adres 192.168.1.2.
server: 200 PORT-opdracht succesvol.
cliënt: LIJST
server: 150 Dataverbinding in ASCII-modus openen voor /bin/ls. De server maakt verbinding van poort 21 naar poort 1930 en ip-adres 192.168.1.2.
server: 226 Lijst voltooid. Gegevens succesvol overgedragen.
cliënt: ONTSLAG NEMEN
server: 221 Tot ziens.

Voorbeeld passieve modus

cliënt: GEBRUIKER anoniem
server: 331 Gast login ok, stuur je e-mailadres als wachtwoord.
cliënt: DOORGANG [e-mail beveiligd]
server: 230 Anoniem ingelogd.
cliënt: PASV De client vraagt ​​de server om verbindingsinformatie.
server: 227 Naar passieve modus gaan
(172,16,3,4,204,173)
De server antwoordt aan de client dat hij verbinding moet maken met poort 52397 en IP-adres 172.16.3.4.
cliënt: LIJST
server: 150 Dataverbinding geaccepteerd van
172.16.3.4:52397; overdracht starten.
De client heeft verbinding gemaakt met de server op poort 52397 en IP-adres 172.16.3.4.
server: 226 Lijst voltooid. Gegevens succesvol overgedragen.
cliënt: ONTSLAG NEMEN
server: 221 Tot ziens.

Privé problemen:

    PORT-modus - FTP-client achter NAT of firewall

    Het grootste probleem van FTP-clients die de actieve modus gebruiken, is dat de server zelf verbinding moet maken met het IP-adres van de client. Als er een firewall op zijn pad staat die alle inkomende verbindingen verbreekt, zal de FTP-sessie mislukken. Een ander probleem is als de client achter een NAT zit en een intern ip-adres gebruikt. Nadat hij zijn interne adres aan de server heeft gerapporteerd, verdoemt de client het tot het onvermogen om verbinding te maken.

    Oplossing 1: de FTP-client moet worden geconfigureerd om de passieve modus te gebruiken.

    Oplossing 2: configureer NAT om FTP-verbindingen te snuffelen. Wanneer een client de actieve modus gebruikt, moet het NAT-apparaat het interne adres van de client herschrijven en vervangen door het externe adres van het apparaat. Vervolgens wordt de verbinding, voor gegevensoverdracht vanaf de FTP-server, die is aangekomen op het externe adres van het NAT-apparaat, doorgestuurd naar het interne adres van de FTP-client achter de NAT.

    PASV-modus - FTP-server achter een firewall

    Wanneer de FTP-server zich achter een firewall bevindt, zullen clients problemen ondervinden bij het gebruik van de passieve modus om verbinding te maken met de kortstondige poort van de FTP-server. Het meest voorkomende probleem is wanneer de firewall waarachter de FTP-server zich bevindt slechts een aantal verbindingen met bekende poorten toestaat en andere blokkeert.

    Oplossing 1. De beheerder kan een groep poorten op de firewall openen waarlangs de verbinding met de FTP-server tot stand kan worden gebracht.

    Oplossing 2: Als er firewall-ondersteuning is, kan de beheerder poorten zo configureren dat ze automatisch worden geopend om een ​​passieve verbinding met de FTP-server tot stand te brengen. Deze opstelling is vergelijkbaar met die beschreven voor een actieve client achter NAT. Wanneer de firewall dus het antwoord van de FTP-server op een passief clientverzoek controleert, opent het tijdelijk de poort die in het antwoord is opgegeven, en alleen voor het IP-adres waarvan het passieve verzoek afkomstig was.

    PASV-modus - FTP-server achter NAT

    In de PASV-modus antwoordt de FTP-server de client met zijn interne IP-adres en poort, waardoor de client gedoemd is geen verbinding te maken.

    Oplossing 1: configureer NAT om FTP-verbindingen te snuffelen voor gegevensoverdracht. Wanneer de server een antwoord in passieve modus verzendt, moet het NAT-apparaat het interne adres van de server herschrijven en vervangen door het externe adres van het apparaat. Vervolgens wordt de verbinding voor gegevensoverdracht van de FTP-client, die is aangekomen op het externe adres van het NAT-apparaat, doorgestuurd naar het interne adres van de FTP-server achter de NAT.

    PASV-modus - FTP-server achter load balancer

    De balancer is een enkel ip-adres, waarvan de verbinding wordt omgeleid naar een van de gebalanceerde servers. De load balancer levert twee problemen op voor FTP. De eerste is te wijten aan het feit dat er verschillende verbindingen tot stand worden gebracht tussen de FTP-server en de client: een voor het verzenden van opdrachten en een of meer voor het overbrengen van gegevens. In de passieve modus moet de balancer de dataverbinding doorsturen naar dezelfde server als de opdrachtverbinding. Het tweede probleem is een gevolg van het eerste: wanneer een FTP-server reageert met een passieve respons, zal die respons het interne adres van de FTP-server bevatten, niet het externe adres van de load balancer.

    Oplossing 1. Wijs een legitiem IP-adres toe dat van buitenaf toegankelijk is voor elke FTP-server achter de balancer. In dit geval kan de FTP-server onafhankelijk FTP-clients bedienen in passieve modus, waarbij de balancer wordt omzeild.

    Oplossing 2: stel een balancer in om FTP-verbindingen te controleren op gegevensoverdracht. Wanneer de server een antwoord in passieve modus verstuurt, moet de balancer het interne adres van de server herschrijven en vervangen door het externe adres van de balancer. Vervolgens wordt de verbinding voor gegevensoverdracht van de FTP-client, die op het externe adres van de balancer is aangekomen, door deze doorgestuurd naar het interne adres van de FTP-server achter de balancer.

    Oplossing 3: Configureer de FTP-server zo dat de antwoorden in passieve modus het externe adres van de balancer bevatten, niet de server, en hoop dat de balancer de verbinding zal omleiden naar de wachtende server.

    Onoplosbaar probleem - firewalls aan beide kanten

    Wanneer de client en de server zich beide achter firewalls bevinden die alle inkomende verbindingen beperken, behalve een groep bekende poorten, beginnen de problemen. De client kan de actieve modus niet gebruiken omdat de server kan er geen verbinding mee maken en kan de passieve modus niet gebruiken, omdat geen verbinding maken met de FTP-server.
    In dit geval moet u de instellingen van de firewall wijzigen en is het beter om dit aan de serverzijde te doen.

    FTP-server op niet-standaardpoort

    Sommige routers kunnen alleen FTP-sessies verwerken als ze binnenkomen op de standaardpoort van de server. Daarom, als de FTP-server luistert op een niet-standaard poort, moet u de router zo configureren dat deze weet dat de FTP-server op deze poort zit en de verbindingen correct afhandelt.

    Maar zelfs dan kan een client-side firewall in de weg zitten. Dit kan gebeuren als de firewall aan de clientzijde strikt vereist dat de FTP-verbinding voor gegevensoverdracht vanaf de FTP-server afkomstig is van poort 20 (in actieve modus). Als de FTP-server op poort N draait, zullen de gegevensverbindingen volgens de FTP-specificatie afkomstig zijn van poort N - 1 en worden geblokkeerd door de firewall van de client.

    Problemen veroorzaakt door firewalls die FTP-sessies afbreken

    Dit probleem komt het meest voor bij het overzetten van een groot bestand. Wanneer over de verbindingsparameters is onderhandeld en de overdracht is begonnen, zal de opdrachtoverdrachtverbinding inactief zijn totdat de bestandsoverdracht is voltooid. Als de router niet op de hoogte is van FTP en de bestandsoverdracht langer duurt dan de teller van de verbindingsactiviteit erop, zal de verbinding vanuit het oogpunt van de router een time-out krijgen en worden beëindigd, en inkomende pakketten worden verwijderd.

    De oplossing voor dit probleem is een apparaat dat een verbinding onderhoudt voor het verzenden van opdrachten in een actieve toestand, ook al zijn er lange tijd geen pakketten over verzonden. Een andere optie is om de "Keep Alive" -functie in de TCP / IP-protocolstack aan de client- of serverzijde in te schakelen, die met bepaalde tussenpozen een beschikbaarheidscontrolepakket verzendt en als de bestemmingszijde niet reageert, wordt de verbinding normaal gesloten. Als de ontvangende partij antwoordt, wordt de verbinding vanaf de firewallzijde als actief beschouwd.

  • Gebruik indien mogelijk de passieve modus (standaard in webbrowsers)
  • Als de verbinding met de FTP-server succesvol was, maar bladeren door mappen of het overbrengen van bestanden eindigt met een verbroken verbinding, ligt het probleem waarschijnlijk bij de timers voor verbindingsactiviteit op de firewall
  • Gebruik apparaten die FTP-functies ondersteunen
Wat is de actieve modus en waar is het voor?
Actieve en passieve modi zijn twee verschillende soorten verbindingen die bepalen hoe u verbinding maakt met andere gebruikers en de volgorde waarin bestanden worden ontvangen.

De passieve modus is het gemakkelijkst te gebruiken en zou in bijna elke omgeving moeten werken. Maar er is een prijs te betalen voor eenvoud. Passieve modus heeft verbindingsbeperkingen (passieve gebruikers kunnen geen verbinding maken met andere passieve gebruikers) en veroorzaakt ook extra belasting van de hub, aangezien alle passieve modusverbindingen via de hub gaan. Deze modus mag alleen worden gebruikt als het niet mogelijk is om de actieve modus te gebruiken.

Vergelijking

De volgende tabel toont de verschillen tussen de twee verbindingsmodi


Instelling actieve modus

Hieronder vindt u beschrijvingen van het configureren van de actieve modus, afhankelijk van de netwerktopologie.

Topologie A

Een computer die rechtstreeks op internet is aangesloten via een "modem" (analoog, ISDN, DSL, enz.), met een dynamisch of statisch IP-adres.

In dit geval zijn er geen aanvullende instellingen vereist, behalve het inschakelen van de optie Actieve modus in de instellingen. DC++ detecteert automatisch uw ip-adres en gebruikt elke vrije poort.

Als u een firewall gebruikt, selecteert u een specifieke poort in DC++. Sta in de firewall-instellingen DC++-verbinding via de opgegeven poort toe.

Topologie B

Een computer als onderdeel van een netwerk die via een router met internet is verbonden. De computer heeft een statisch of dynamisch extern ip-adres. Adresvertalingstechnologieën (bijv. NAT) worden niet gebruikt.


De actieve modus is op dezelfde manier geconfigureerd als topologie A.

Topologie C

Een computer die is verbonden met internet via een router of gateway die gebruikmaakt van NAT-technologie (Network Address Translation). NAT is een technologie waarmee meerdere computers via één IP-adres toegang kunnen krijgen tot een netwerk. In dit geval heeft de computer een eigen intranet-ip (adressen beginnend met 192.168.*.*, 10.*.*.* of 172..*.*).

Thuisnetwerken gebruiken meestal dit type verbinding.


Het instellen van de actieve modus vereist twee stappen:

* Stel port forwarding in op de router/gateway.
* Instellen van de actieve modus in DC ++.

Portforwarding instellen

Helaas wordt het proces van het instellen van doorsturen door verschillende fabrikanten van routers anders genoemd. Het kan worden genoemd: poorttoewijzing, virtuele servers of andere synoniemen. Hoe ze ook heten, ze gebruiken allemaal hetzelfde principe. Het idee is als volgt: de router is zo geconfigureerd dat de verbinding met een bepaalde poort op de router (de poort die jij kiest) wordt doorgestuurd naar een specifieke machine binnen het netwerk.

DC++ configureren

Selecteer in het menu "Instellingen - Verbindingsinstellingen" de actieve modus. Voer extern ip-adres in. Voer het poortnummer in, dit moet de poort zijn die is geconfigureerd voor doorsturen in de vorige sectie.

Standaard kan in niet-serverversies van Windows slechts één externe desktopverbinding worden gemaakt, terwijl het werk van de huidige gebruiker noodzakelijkerwijs wordt geblokkeerd.


We corrigeren dit misverstand.


Zorg ervoor dat u het originele bestand opslaat termenrv.dll. Voer de opdrachtprompt uit als beheerder en voer uit

kopieer c:\Windows\System32\termsrv.dll termenrv.dll_old

Dan kijken we naar jouw versie. Klik met de rechtermuisknop op het bestand c:\Windows\System32\termsrv.dll en selecteer eigenschappen.


Download het gewijzigde bestand dat overeenkomt met uw versie

Als je alles met je eigen handen wilt repareren, kopieer dan je bestand termsrv.dll uit de map c:\Windows\System32\ op de desktop. Open het met een willekeurige hex-editor, zoals deze gratis HxD . En vervang de bytes in de opgegeven regel.

In de eerste kolom is de waarde die in de tweede zou moeten staan ​​de originele.

Windows 7 SP1 64bit:

173C0: B8 8B
173C1:0087
173C2:0138
173C3:0006
173C5: 90 00
173C6: 89 39
173C8:383C
173CC: 900F
173CD: 90 84
173CE: 90EB
173CF: 90 C2
173D0:9000
173D1: 90 00
176FA: 00 01
5AD7E:EB74
Voor Windows 8.1 (64bit) vervangen we de hele regel !
in v6.3.9600.16384
lijn
8B 81 38 06 00 00 39 81 3C 06 00 00 0F 84 1B 70 00 00
op
B8 00 01 00 00 89 81 38 06 00 00 90 90 90 90 90 90 90

tot 6.3.9600.16384 tot 6.3.9600.17095
lijn
39 81 3C 06 00 00 0F 84 9E 31 05 00
op

6.3.9600.17095 tot 6.3.9600.17415
lijn
39 81 3C 06 00 00 0F 84 D3 1E 02 00
op
B8 00 01 00 00 89 81 38 06 00 00 90
Laten we de vervangingstool gebruiken met hexadecimale waarden van het type

Sla na het vervangen de wijzigingen op.

Als u problemen ondervindt met toegangsrechten, open dan de eigenschappen, het tabblad Beveiliging, de knop Geavanceerd. En verander de eigenaar in jezelf. Toepassen. Daarna kunt u de machtigingen voor groepen en gebruikers wijzigen.



Stop vervolgens de Remote Desktop-service


Het bestand vervangen termenrv.dll te downloaden of veranderd.

U moet ook de waarde van de sleutel in het register wijzigen HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser naar 0!

En start de dienst opnieuw!

Laten we verbinden en genieten! Nu wordt de lokale gebruiker niet uit het systeem gezet!

Voor Windows XP
1) Het bestand bewerken
termenrv.dll (SP2 5.1.2600.2180) 295.424 bytes

128BB: 75 -> 74
217D3: 8B -> 33
217D4: C7 -> C0
2192D: 8B -> 33
2192E: C7 -> C0
225B7: 54 -> 20
termenrv.dll (SP3 5.1.2600.5512) 295.424 bytes
22A17: 74 -> 75
22A69: 7F -> 90
22A6A: 16 -> 90
2) Vervang het bestand in de map C:\Windows\System32\ u moet zich in de veilige modus bevinden, omdat systeembestandsbeveiliging standaard is ingeschakeld. Start hiervoor uw computer opnieuw op terwijl u ingedrukt houdt F8, selecteer veilige modus.
3) Voeg registersleutels toe

Schakel ConcurrentSessions in”=dword:00000001

Schakel ConcurrentSessions in”=dword:00000001
StaMultipleTSSessions toe”=dword:00000001

4) Volgende Start -> Uitvoeren, gpedit.msc. In het venster Groepsbeleid-editor Computerconfiguratie -> Beheersjablonen -> Windows-componenten -> Terminalservice. Schakel Verbindingslimiet in en stel het aantal verbindingen in op 3 of meer.
5) Start opnieuw op en maak verbinding!

    actieve modus- De staat van apparatuur die is ingeschakeld en is aangesloten op een radionetwerk om gebruikersinformatie (spraak of gegevens) uit te wisselen, wordt ook gedefinieerd als verkeersmodus (ITU-T K.49). )