Perché Linux non utilizza l'intervallo di porte effimere di IANA?


30

Secondo Wikipedia

L'Internet Assigned Numbers Authority (IANA) suggerisce l'intervallo da 49152 a 65535 per porte dinamiche o private. Molti kernel Linux utilizzano l'intervallo di porte da 32768 a 61000.

Anche se sembra esserci qualche deviazione storica dalla gamma suggerita da IANA, sembra strano che Windows Vista, Windows 7, Windows Server 2008, FreeBSD 4.6+ e molti altri abbiano concordato su questa gamma e tuttavia Linux si distingue ancora.

Guardandoci però, ecco:

$ cat /proc/sys/net/ipv4/ip_local_port_range 
32768   61000

Perché Linux non ha adottato la gamma standard?

Risposte:


21

C'è stato un tempo in cui IANA ha assegnato solo porte fino a 1023. Vedi RFC1700 . Un tempo questo era uno standard. Il più delle volte non ho problemi a trovare quando le cose cambiano nel flusso di RFC, ma per la questione di cambiare le porte da 1024 a 49152 da registrate a assegnate mi è venuta meno.

In termini di storia di Linux, nel 2007 è stata posta una domanda sull'ip_local_port_range predefinito. A quel tempo si decise di utilizzare l'intervallo Linux menzionato per paura che numeri di porta elevati potessero causare problemi e l'inizio dell'intervallo a 49152 potrebbe lasciare troppo pochi numeri di porta nel pool. Vedi questo e il suo thread. Il pensiero espresso all'epoca era che a partire dal 32768 rientrava nello spirito delle procedure IANA, se non del tutto conforme. Nel leggere questo deduco che gli sviluppatori presumevano che la maggior parte delle assegnazioni si sarebbe verificata dalla parte inferiore dell'intervallo e che si spostava verso l'alto. Al momento della stesura, conto un po 'più di 100 numeri di porta assegnati (senza contare i diversi protocolli come separati) tra 32768 e 49152, quindi ha resistito abbastanza bene negli ultimi cinque anni.

Non so perché l'intervallo sia stato considerato troppo piccolo, ma posso immaginare due motivi:

  1. I numeri di porta sono randomizzati per contrastare determinati attacchi. Più indirizzi nel pool, tanto migliore può funzionare questa difesa.
  2. I server ad alta attività potrebbero avere problemi con l'esaurimento del numero di porta. Sebbene le porte possano essere effimere, il loro uso non è istantaneo. In particolare i socket possono durare diversi minuti dopo la chiusura di TCP.

Questo post sul blog tocca il numero 2 e suggerisce una risposta se desideri che i tuoi sistemi Linux utilizzino una gamma diversa di porte locali. (Usando /etc/sysctl.d per definire un intervallo che ti piace. Esiste anche una voce ip_local_reserved_ports che può essere utile se un particolare conflitto si arresta. Questi corrispondono alla voce / proc / sys che citi.)

In sintesi. Le impostazioni predefinite di Linux non corrispondono alle attuali specifiche IANA, ma qualsiasi particolare sistema Linux può, se il suo proprietario lo desidera.


1
Secondo RFC 6056 , "Come menzionato nella Sezione 2.1, le porte dinamiche sono comprese nell'intervallo 49152-65535. Tuttavia, gli algoritmi di selezione delle porte effimere dovrebbero utilizzare l'intera gamma 1024-65535." - Sembra che il valore di ip_local_port_rangenon dovrebbe essere usato comunque.
Evan Carroll,


@evan RFC 6056 prosegue affermando che "i numeri di porta che potrebbero essere necessari per fornire un particolare servizio presso l'host locale NON DOVREBBERO essere inclusi nel pool di numeri di porta disponibili per la randomizzazione delle porte effimere" e che "gli amministratori dovrebbero identificare servizi che potrebbero essere offerto dall'host locale e DOVREBBE escludere solo le porte registrate corrispondenti " ma non è qualcosa che il sistema operativo in genere prevede di fare. L'unico meccanismo pratico di esclusione è aumentare il limite inferiore.
jmb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.