jasne i techniczne wyjaśnienie dotyczące problemu wielu równoczesnych sesji FTP podczas blokowania portu danych tylko na jednym porcie jest tym, co najbardziej interesuje mnie dogłębnie. Kiedy może działać, kiedy nie działa, dlaczego może nie być zalecany itp.
To będzie szalone przypuszczenie, ponieważ go nie testowałem, powinieneś spróbować sam i sprawdzić, czy są jakieś inne problemy, które mogłem przeoczyć.
Przypuszczam , że możesz ograniczyć zakres portów pasywnych do jednego portu . W rzeczywistości można zobaczyć w tym pytaniu, że w praktyce wykorzystywane są małe zakresy portów . Teoretycznie do obsługi wielu równoczesnych połączeń potrzebne są tylko 4 wartości: lokalny adres IP, lokalny port, zdalny adres IP, zdalny port są unikalne. W ten sposób rozróżniasz różne połączenia.
Jeśli zablokujesz port na serwerze do jednej pojedynczej wartości, jedyną pozostałą zmienną jest port używany przez klienta. Nie stanowi to problemu, o ile klient ma wystarczająco dużą pulę wolnych portów efemerycznych do wyboru. O ile nie powoduje to ciężkiego NAT, nie musisz się o to martwić. Ostrzegamy, że będzie to czysto teoretyczna sprawa : jeśli używałeś wielu portów na swoim serwerze, możesz pomnożyć liczbę hipotetycznych równoczesnych połączeń, włączającnumber of ports in range
połączenia na jeden port po stronie klienta. Ale tak się nie stanie w praktyce, ponieważ wątpię, aby istniała jakaś implementacja klienta FTP, która by to obsługiwała (ponieważ nie ma to większego sensu). Dodatkowo, jeśli klient musi udostępniać swoje efemeryczne porty w ten sposób i nie może po prostu otworzyć nowego, to ma o wiele poważniejsze problemy do rozwiązania. Tak więc z tej perspektywy powinieneś być całkowicie bezpieczny używając jednego portu.
Zastanówmy się, dlaczego pojedynczy port może być niewystarczający .
Przede wszystkim mógłbym wymyślić sytuację, w której naprawdę błędna implementacja serwera FTP używa wyłącznie lokalnego numeru portu jako sposobu identyfikacji transferu danych klienta. Po raz kolejny nie sądzę, żeby zrobił to porządny FTPd.
Prawdziwy problem ( tak, można zignorować wszystko powyżej jako główną dygresję ;-)) polega na tym, że pasywny zakres portów znajduje się w zakresie nieuprzywilejowanym .
Oznacza to, że wybrany numer portu nie jest zarezerwowany per se , i w rzeczywistości każdy proces użytkownika (nie potrzebuje uprawnień roota ) może go pobrać, zanim zrobi to serwer FTP. Jeśli masz dużą pulę portów do wyboru, po prostu wybierz losowy, wolny. Jeśli musisz użyć jedynego, który jest już używany, nie będziesz w stanie poprawnie obsługiwać przelewów.
Przepraszamy, jeśli odpowiedź wydaje się zbyt spekulacyjna. Szczerze mówiąc, bardzo starałem się znaleźć powód, dla którego nie powinieneś używać jednego portu, a poza ostatnim nie mogłem wymyślić żadnych twardych dowodów przeciwko temu. Niemniej jednak stawiasz interesujące i trudne pytanie.