Bagaimana menemukan jumlah port terbuka di linux?

17

Bagaimana menemukan jumlah port terbuka di linux? Saya ingin melihat apakah saya kehabisan port. Juga, bagaimana cara melihat batas OS saya?

erotsppa
sumber
2
Apa yang Anda lakukan sehingga Anda takut kehabisan port?
MDMarra

Jawaban:

27

Di linux modern, gunakan utilitas ss (socket stats).

$ ss -s
Total: 10160 (kernel 10262)
TCP:   10349 (estab 8886, closed 408, orphaned 0, synrecv 0, timewait 393/0), ports 3147

Transport Total     IP        IPv6
*         10262     -         -        
RAW       0         0         0        
UDP       5         5         0        
TCP       9941      9941      0        
INET      9946      9946      0        
FRAG      0         0         0        
Curtis Doty
sumber
9
netstat -an | grep ESTABLISHED | wc -l

akan memberi Anda jumlah port terbuka, 32 dalam kasus saya.

cat /proc/sys/net/ipv4/ip_local_port_range

Akan mengembalikan sesuatu seperti:

32768 61000

yang berarti, 61000 - 32768 - $ OPENPORTS = AvailablePorts

Di kotak saya, itu:

61000-32768-32 = 28200 nomor port yang tersedia.

Grizly
sumber
-a46 tidak bekerja. Ada bantuan?
erotsppa
distro apa yang kamu jalankan? (yang berfungsi di server ubuntu 10,04 LTS). Tentu saja, jika Anda tidak menginstal ipv6, maka gunakan saja netstat -a.
Grizly
Diuji pada kotak CentOS saya, sepertinya hang jika Anda tidak menggunakan "-n" untuk menghentikan resolusi nama. (netstat -an | grep ESTABLISHED | wc -l)
Grizly
Hanya melihat "ss" di bawah, itu luar biasa, tidak tahu tentang itu .. jauh lebih baik! Gunakan ip_local_port_range untuk menentukan apa yang dikonfigurasi untuk diizinkan oleh linux Anda, tetapi itu menunjukkan apa yang Anda gunakan saat ini dalam format yang jauh lebih mudah diakses!
Grizly
8

Seperti yang disebutkan orang lain, netstat adalah alat yang digunakan untuk menentukan port apa yang sedang digunakan saat ini. Adapun batasnya, jumlah port yang tersedia adalah integer unsigned 16bit yang memberi Anda kisaran 0-65535. Port yang tersedia untuk diikat aplikasi adalah port khusus / root yang dicadangkan (0-1024) plus apa pun yang tidak dicakup oleh rentang port sesaat Anda.

Anda dapat melihat porta sesaat Anda dengan menjalankan cat /proc/sys/net/ipv4/ip_local_port_range.

Untuk memodifikasi itu terus-menerus, Anda harus menambahkan / memodifikasi "net.ipv4.ip_local_port_range" di file /etc/sysctl.conf, atau secara interaktif dengan sysctl -n net.ipv4.ip_local_port_range="<start_port> <end_port>"

Alex
sumber
1
nit picking, tapi itu bukan batas ipv4. Ini adalah batas tcp / udp. dan yang dijalankan secara independen dari ipv4. (mis. ipv6 tidak melakukan apa pun untuk layer transport)
Joel K
Aaah, kamu benar. Saya telah menghapus referensi IPV4 dalam jawaban saya.
Alex
1

Secara pribadi saya lebih suka nmap. Anda dapat menemukan status semua port dengan mengeluarkan target nmap -P 1-65535. Kebanyakan distribusi harus menyediakan paket ini melalui manajer paket mereka.

ThaKidd KG5ORD
sumber
1

Mencoba

# lsof -n -i -P 

Demi kelengkapan :)

Yuri
sumber
0

netstat akan memungkinkan Anda untuk melihat port apa yang terbuka, lakukan "netstat -" untuk melihat yang paling sesuai dengan kebutuhan Anda.

jer.salamon
sumber
1
netstat --inetakan sangat membantu.
Paul Tomblin
Maksud saya -? karakter yang hilang.
jer.salamon
atau baca halaman manual
MDMarra
Juga sertakan --inet6 (kependekan dari keduanya: -4 -6), untuk mendapatkan soket IPv6 dan soket ip-agnostik (yang terakhir adalah default pada host tumpukan ganda, lihat rfc 3493 bagian 3.7).
Tobu
0

'nmap localhost' akan memberi Anda semua port terbuka dan layanan yang menjalankannya.

Vivek Varghese Cherian
sumber
1
tidak juga, itu hanya akan memindai port untuk 127.0.0.1, tidak untuk IP apa pun
Lucas Kauffman
0

netstat -tulnp

Argumen untuk program netstat tercantum di bawah ini:

*

  t - Show TCP
*

  u - Show UDP
*

  l - Show only listening processes (netstat can show both listening and all established connections, i.e. as a client too)
*

  n - Do not resolve network IP address names or port numbers
*

  p - Show the process name that is listening on the port
Rajat
sumber
0

gunakan perintah berikut pada terminal untuk memeriksa semua port

netstat -lntu

Untuk melihat status port tertentu, gunakan perintah berikut

netstat -an | grep ':6060'

ganti 6060 dengan nomor port spesifik Anda.

Samuel
sumber