Çekirdek kaynağını kazmadan bu konuda yapabileceğim kadar çok araştırma yaptım. Konuyla ilgili çok fazla dezenformasyon / yanlış bilgi var gibi görünüyor, bu yüzden umarım bu soruya ben ve diğerleri için bir kez ve herkes için cevap verir.
Kesinlikle IPv4 konuşma, bağlantı noktası tükenmesi gerçekten mümkün mü? Açıklamama izin ver:
- Görünüşe göre kullanım için 65535 port var. 0 kullanılamıyor.
- Ben bağlantı noktası yorgunluk (src ip, src bağlantı noktası, dst ip, dst bağlantı noktası) tuple benzersiz olmasını gerektirir okudum.
- Açık ve net olmak gerekirse, sysctl net.ipv4.ip_local_port_range ayarıyla geçici bağlantı noktalarının% 100'ünü kullanabileceğimi varsayalım
Ve soru şu: Böyle mi çalışıyor?
- 127.0.0.1:(x) ile 127.0.0.1:80 arasında 65k bağlantıya sahip olabilirim
- 127.0.0.1:(x) ile 127.0.0.1:555 arasında 65k bağlantıya sahip olabilirim
- Temel olarak bir kez daha, soru (srcip, srcport, dstip, dstport) benzersiz olmalı, doğru mu?
- Ben herhangi bir fazla 65k bağlantı açamadı dan "B" IP ip "A" Port "N"
- Benzer şekilde, tek bir IP xxxx: 80'de web sunucumla 65 binden fazla bağlantı açamadı, ancak farklı kaynak IP'lerinden olduğu sürece genel olarak 65 binden fazla destekleyebilir miyim ?
Son olarak, geçici (giden) geçici bağlantı noktaları ve dinleyen gelen bağlantı noktaları hakkında biraz kafam karıştı. Bağlantı kurulduktan sonra bağlantının her iki tarafının da bir eş ve eşit olduğunu anlıyorum, ama bundan önce:
Örneğin, gerçekten (srcip, srcport, dstip, dstport) grubunun benzersiz olması gerekiyorsa, örneğin etkinleştirirsem neden olur?
net.ipv4.ip_local_port_range = 1024 65535
Bu, 1024-65535 arasındaki geçici bağlantı noktalarının kullanılmasına izin verir, 3306 numaralı bağlantı noktasına bağlanan hizmetlerim varsa (örneğin, mySQL), bağlantı noktası kullanımda olduğu için bazen başlatılamazlar.
Bu şu gerçeği ilgilendiriyor mu: (Ve bu benim doğrulanmasını istediğim bir ifade):
- (srcip, srcport, dstip, dstport) 1-65535 bağlantı noktası aralığındaki her bağlantı için benzersiz olması gerekir (işletim sisteminin geçici bağlantı noktalarını kullanmasına dikkat etmeyin)
- Bununla birlikte, bir soketin bağlanması için (srcip, srcport, *, *) olarak görülebilir. Veya bunu söylemenin başka bir yolu, IP'nin herhangi bir nedenle bağlanmak için bu bağlantı noktasını kullanmaması mı gerekiyor?
Yukarıdaki davranışı doğrulayabilirim, yani yukarıdaki tam sysctl satırını kullanıyorum ve bu nedenle OSS'yi bu bağlantı noktasını kullandığını varsayarak bazen ve çok rasgele yeniden başlatamadığından mySQL'i 1024'ten daha düşük bir bağlantı noktasına taşıdım. geçici bir liman için.