Linux neden IANA Ephemeral port serisini kullanmıyor?


30

Wikipedia'ya göre

İnternet Atanmış Numaralar Kurumu (IANA), dinamik veya özel bağlantı noktaları için 49152 ila 65535 aralığını önermektedir. Çoğu Linux çekirdeği 32768 - 61000 arasındaki bağlantı noktasını kullanır.

IANA'nın önerdiği aralıktan tarihsel bir sapma olduğu görülmekle birlikte, Windows Vista, Windows 7, Windows Server 2008, FreeBSD 4.6+ ve diğer birçoklarının bu seri üzerinde hemfikir olduğu ve Linux'un hala öne çıktığı çok garip görünüyor.

Yine de içine bakmak, bak ve şunu:

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

Linux neden standart seriyi benimsemedi?

Yanıtlar:


21

IANA'nın yalnızca 1023'e kadar bağlantı noktası atadığı bir zaman vardı . Bkz. RFC1700 . Bir zamanlar bu bir standarttı. RFC'lerin akışında işler değiştiğinde çoğu zaman sorun yaşamıyorum, ancak 1024'ten 49152'ye kadar limanları değiştirmekle ilgili olarak, görevlendirilenden görevlendirmeye kadar kısma geldim.

Linux geçmişi açısından, 2007'de varsayılan ip_local_port_range varsayılanı hakkında bir soru ortaya çıktı. O zamanlar, yüksek port numaralarının sorunlara neden olabileceğinden ve 49152'de başlamanın çok az bırakabileceğinden korktuğunuz için Linux serisini kullanmaya karar verildi. Havuzdaki port numaraları. Bu ve onun iplik bakın . O dönemde ifade edilen düşünce, 32768'de başlamanın, tamamen uygun olmadıkça, IANA'nın prosedürlerinin ruhunda olduğu yönündedir. Bunu okuduğumda, geliştiricilerin çoğu ödevin aralığın altından geleceğini ve yukarı doğru hareket edeceğini varsaydıklarına inanıyorum. Bu yazımda 32768 ve 49152 arasında atanmış 100'den fazla bağlantı noktası numarası (ayrı ayrı farklı protokoller sayılmıyor) sayılıyor.

Aralığın neden çok küçük olarak değerlendirildiğini bilmiyorum, ancak iki neden olduğunu hayal edebiliyorum:

  1. Liman numaraları belirli atakları engellemek için rastgele belirlenir. Havuzdaki adres sayısı arttıkça, savunma daha iyi sonuç verebilir.
  2. Yüksek aktivite sunucularının port numarası tükenmesi ile ilgili problemi olabilir. Limanlar geçici olsa da, kullanımı anında değildir. Özellikle soketler TCP kapatıldıktan sonra birkaç dakika sürebilir.

Bu blog yazısı 2 numaralı numaraya değiniyor ve Linux sistemlerinizin farklı yerel portlar kullanmasını istemeniz durumunda bir cevap veriyor. (Beğendiğiniz bir aralığı tanımlamak için /etc/sysctl.d komutunu kullanın. Ayrıca, belirli bir çakışma ortaya çıktığında kullanılabilecek bir ip_local_reserved_ports girişi de vardır. Bunlar, alıntı yaptığınız / proc / sys girdisiyle eşleşir.)

Özetle. Linux varsayılanları mevcut IANA özelliklerine uymuyor, ancak sahibinin istediği herhangi bir Linux sistemi olabilir.


1
RFC 6056'ya göre , "Bölüm 2.1'de belirtildiği gibi, dinamik bağlantı noktaları 49152-65535 aralığından oluşur. Ancak geçici bağlantı noktası seçim algoritmaları, 1024-65535 aralığının tamamını kullanmalıdır." - Yine ip_local_port_rangede kullanılmaması gereken sesler .
Evan Carroll,

1
İşte Linux
Evan Carroll

@evan RFC 6056 , "yerel ana bilgisayarda belirli bir hizmeti sağlamak için gerekli olabilecek bağlantı noktası numaralarının, geçici bağlantı noktası rasgele için kullanılabilir bağlantı noktası havuzuna dahil edilmemesi GEREKMEZ" ve "yöneticilerin , " yöneticilerin, yerel ana bilgisayar tarafından sunulabilir ve yalnızca karşılık gelen kayıtlı bağlantı noktalarını hariç tutabilir ", ancak bu işletim sisteminin tipik olarak yapmanız için sağladığı bir şey değildir. Tek pratik dışlama mekanizması alt sınırın yükseltilmesidir.
31'de jmb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.