Portál AbcLinuxu, 12. května 2025 09:37
ServerType standalone DefaultServer on Port 42666Mám veřejnou IP. Připojení localhost:42666 funguje ok, ale zvenčí (prý) klienti dostávají:
ftp> ls 500 Illegal PORT command ftp: bind: Address already in use ftp> ls 500 Illegal PORT command ftp> put soubor local: soubor remote: soubor 500 Illegal PORT commandŽádné další služby spuštěné nejsou. Při přehození na port 21 běží ok. Díky za všechny rady.
ukázka /etc/proftpd.conf: ServerName "xxx" ServerType standalone ServerIdent on "xxx" DeferWelcome on MultilineRFC2228 on DefaultServer on DefaultRoot ~ ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 ListOptions "-l" DenyFilter \*.*/ Port 0 MaxInstances 50 User nobody Group nogroup Umask 022 022 AllowOverwrite on # *********************** # **** ANONYMOUS **** # *********************** <Anonymous /home/ftp> User ftp Group nogroup UserAlias anonymous ftp DirFakeUser on ftp DirFakeGroup on ftp RequireValidShell off MaxClients 10 <Limit WRITE> DenyAll </Limit> <Directory incoming> <Limit WRITE> AllowAll </Limit> </Directory> <Limit LOGIN> Allow from all </Limit> </Anonymous> <VirtualHost xx.xx.xx.xx> Servername "xxx" Port 42666 DeferWelcome on ServerIdent on "xxx" RequireValidShell off DefaultRoot ~ <Limit LOGIN> DenyAll </Limit> </VirtualHost>
Myslim, ze nemusis vytvaret Virtualni Host. Musis zmenit port v proftpd.conf a pak musis restartovat cely server. Ted si presne nepamatuju, jestli musis jeste nekam jinam zadat tuto zmenu, ale da se to vygooglovat.
nejspíš ano, protože po přepsání portu a restartu serveru to venkovním userům dělá to co popisuju v dotazu.jestli musis jeste nekam jinam zadat tuto zmenu
Měl jsem stejný problém, ale s tím rozdílem že klient dostal odpověď 500 Illegal PORT command i když ProFTPd běžel na portu 21. Způsoboval to zřejmě několikerý NAT mezi klientem a serverem.
V auth.log jsem našel hlášku:
server proftpd[21413]: server (x.x.x.x[x.x.x.x]) - Refused PORT y,y,y,y,233,147 (address mismatch)
Klient posílá příkaz PORT s vloženou vnitřní IP y.y.y.y , ta se při překladu mění na veřejnou x.x.x.x a server tedy odmítne příkaz vykonat.
Šlo to vyřešit nakonec pouze vložením "AllowForeignAddress on" do proftpd.conf. Pak server příkaz PORT provede i když se adresy liší.
Z pohledu bezpečnosti to ale určitě není ideální řešení...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.