CLOSE_WAIT durumunda ölen bağlantılar


30

Sonsuza kadar göründüğü şey için CLOSE_WAIT durumunda TCP bağlantıları toplayan bir SLES makinem var. Bu tanımlayıcılar sonunda tüm kullanılabilir belleği emer. Şu anda 3037 tane var, ancak son zamanlarda acele etmeden önce çok daha yüksekti.

İlginç olan şey, dinleme süreçleri olmasını beklediğim yerel bağlantı noktalarına bağlantı olmaması. İlişkili PID'leri yok ve zamanlayıcılarının süresi dolmuş gibi görünüyor.

# netstat -ton | grep CLOSE_WAIT
tcp      176      0 10.0.0.60:54882     10.0.0.12:31663      CLOSE_WAIT  off (0.00/0/0)
tcp       54      0 10.0.0.60:60957     10.0.0.12:4503       CLOSE_WAIT  off (0.00/0/0)
tcp       89      0 10.0.0.60:50959     10.0.0.12:3518       CLOSE_WAIT  off (0.00/0/0)

# netstat -tonp | grep CLOSE_WAIT
tcp       89      0 10.0.0.59:45598     10.0.0.12:1998       CLOSE_WAIT  -                   
tcp       15      0 10.0.0.59:60861     10.0.0.12:1938       CLOSE_WAIT  -                   
tcp        5      0 10.0.0.59:56173     10.0.0.12:1700       CLOSE_WAIT  -     

Ben TCP yığına gelince kara kuşak değilim, ya da çekirdek ağı, ancak TCP yapılandırma aklı gözüküyor, çünkü bu değerler man sayfası başına varsayılandır:

# cat /proc/sys/net/ipv4/tcp_fin_timeout 
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time 
7200

Peki ne verir? Zamanlayıcıların süresi dolmuşsa, yığın otomatik olarak bu şeyleri temizlememeli midir? Bu şeyler oluştukça kendime uzun vadeli DoS vereceğim.


Oh, ve benim araştırmam, başkalarının 'lsof -i' de böyle eserler gördüklerini gösteriyor. Ben değilim değil garip bir şey orada görünce.
Mart'ta

2
sudo netstat -tonpHangi programın gerçekleştiğini görmeye çalışın .
BillThor

1
Gönderi ve cevabım stackoverflow.com/a/17697733/540323 size yardımcı olacaktır.
Amil Waduwawara

Yanıtlar:


16

Hayır, zaman aşımı yok CLOSE_WAIT . Sanırım offçıktılarınızda bunun anlamı var.

Çıkmak için CLOSE_WAIT, uygulama açıkça soketi (veya çıkış) kapatmak zorundadır.

Görmek CLOSE_WAIT kırmaya nasıl .

Eğer netstat gösteren -işlem sütununda:

  • Uygun ayrıcalık ve yeteneklerle mi çalışıyorsunuz (örneğin, root)
  • çekirdek işlemleri olabilir (örneğin, nfsd)

Netstatları yaparken, tam ayrıcalıklarım vardı, evet. Çekirdek işlem açısını kontrol edeceğim - bu iyi bir fikir. Gerçekten kızgınım, çünkü iki ya da üç tanınmış ayrıcalıklı bağlantı noktası dışında hiç dinleme soketi olmaması gerekiyor. Belki tuhaf bir iptables problemidir. Bunu da kontrol edeceğim.
pboin

1
Bağlantı koptu.
Nathan


10

CLOSE_WAITistemcinin bağlantıyı kapattığını ancak uygulamanın henüz kapatmadığını veya istemcinin kapanmadığını gösterir. Hangi program veya programların bu sorunu yaşadığını tanımlamalısınız. netstat -tonp 2>&1 | grep CLOSEHangi programları bağlantıları tuttuğunu belirlemek için kullanmayı deneyin .

Listelenen program yoksa, hizmet çekirdek tarafından sağlanır. Bunlar muhtemelen nfsveya gibi RPC servisleridir rpc.lockd. Dinleme çekirdek hizmetleri ile listelenebilir netstat -lntp 2>&1 | grep -- -.

RPC hizmetleri sabit bağlantı noktalarına bağlı olmadığı sürece, bağlantılarınızın göründüğü gibi geçici bağlantı noktalarına bağlanırlar. Diğer sunucudaki işlemleri ve bağları kontrol etmek de isteyebilirsiniz.

Aşağıdakileri yaparak NFS hizmetlerinizi sabit bağlantı noktalarına bağlayabilirsiniz:

  1. NFS için kullanılmayan dört bağlantı noktasını seçin (burada 32763-32766 kullanılır)
  2. NFS’ye sabit bağlantı noktaları ekle /etc/services
    rpc.statd-bc 32763 / udp # RCP yayın akışı
    rpc.statd-bc 32763 / tcp
    rpc.statd 32764 / udp # RCP statd dinle
    rpc.statd 32764 / tcp
    rpc.mountd 32765 / udp # RPC bağlantısı
    rpc.mountd 32765 / tcp
    rpc.lockd 32766 / udp # RPC kilidi / nlockmgr
    rpc.lockd 32766 / tcp
  3. Seçenekleri kullanmak için statd'yi yapılandırma --port 32763 --outgoing-port 32764
  4. Seçeneği kullanmak için rpcmountd'yi yapılandırın --port 32765
  5. Kapatın ve NFS ve RPC servislerini yeniden başlatın.

PID olmadığını yazdım, ancak çalışmamı göstermedim. Öneriniz başına hızlıca bir düzenleme yaptım, teşekkürler.
pboin

@ opboin: PIDS olmayan limanlara yorumlar eklendi (çekirdek hizmetleri).
BillThor

3
KAPAT-BEKLE demekse akran sona kapattı ve yerel işletim sistemi sona lokal uygulama için bekliyor.
user207421
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.