Linux makinemde hangi bağlantı noktalarının meşgul olduğunu ve hangi bağlantı noktalarının boş olduğunu nasıl kontrol edebilirim?


30

Linux makinemde meşgul ve boş port numaralarını bulmak ve listelemek için herhangi bir komut satırı komutu veya başka bir yol var mı?

Yanıtlar:


41

Komuta

netstat -antu

Kullanılan tüm tcp ve udp bağlantı noktalarını gösterir. Çıktı şöyle görünecek:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN

Yerel Adres alanındaki iki nokta üstündeki sayı, kullanılan bağlantı noktasını gösterir. Eğer durum "LISTEN" ise, gelen bağlantılar için kullanılan bir port anlamına gelir. IP adresi varsa Local Addressalanına edilir 0.0.0.0, gelen bağlantıların bir arabirime atanmış herhangi bir IP adresine kabul edilecektir anlamına gelir - makinenizin bağlantıları kaynak dışarıdan bu yollarla bu yüzden.

Söyleseydi localhostya 127.0.0.1da sadece makinenizden gelen bağlantıları kabul ederdi.

Ayrıca, -pparametreyi ekler ve root olarak çalıştırırsanız, portu açan işlemi gösterecektir:

$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN      860/rpc.statd

Kullanımda olduğu gösterilmeyen her şey ücretsizdir, ancak kullanıcılar (ayrıcalıklı hesaplar) yalnızca 1023'ün üstündeki bağlantı noktalarını açabilir.


Bu , bir arayüze atanmış herhangi bir IP adresinden gelen bağlantıların kabul edileceği anlamına gelir - bu , makinenizin dışındaki bağlantılardan kaynaklanan bir hata yapmadı mı? Muhtemelen, belirli bir arayüze atanmış herhangi bir adrese geldiklerinde, kökenleri ne olursa olsun, bağlantıların kabul edileceğini kastetmiştiniz. Gelen bağlantıların kaynağı muhtemelen bir sonraki Yabancı Adres sütununda belirtilmiştir. Bu yüzden, eğer biri değer olarak 0.0.0.0'a sahipse, bağlantı makinenin dışında da dahil olmak üzere herhangi bir yerden kabul edileceği anlamına gelir
user907860

1
@ user907860 Açık olmayabilir, ancak yaptığım ayrım 0.0.0.0 ile 127.0.0.1 arasında. - ikincisi yalnızca makinenizden gelen bağlantıları kabul edecek çünkü yönlendirilmemiş bir IP adresini dinliyor. 0.0.0.0 olarak, makinenizdeki herhangi bir adres anlamına gelir ve yönlendirilmeleri koşuluyla, diğer makinelerden bağlantılar yapılabilir.
Paul,

Sadece FYI, 🐟 -antuolarak -tunayazılabilir
Abdennour TOUMI 10:18


7

Açılan bağlantı noktalarını denetlemenin iyi ve güvenilir bir yolu ss( kullanımdan kaldırılanların yerine koyma netstat) kullanmaktır, yükseltilmiş ayrıcalıklar gerektirmeden bir komut dosyasında kullanılabilir (örn. sudo).

Kullanım: -ldinleme portları için seçenek -n, DNS çözünürlüğünü atlamak için seçenek ve kaynak portundaki filtre NN: src :NN( NNizlemek istediğiniz port ile değiştirin ). Daha fazla seçenek için, bkz.man ss

ss -ln src :NN

Örnekler:

[user@server ~]# ss -ln src :80
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port
LISTEN      0      128                      *:80                *:*
[user@server ~]# ss -ln src :81
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port

Bir komut dosyasında grep kullanarak çıktının istediğimiz bağlantı noktasını içerip içermediğini test edebiliriz. Port 80 kullanımda iken örneği (yukarıya bakın):

myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 80 is in use (result == 1)

Port 81 ile örnek kullanımda değil (yukarıya bakın)

myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 81 is NOT in use (result == 0)

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.