วิธีการค้นหาจำนวนพอร์ตที่เปิดใน linux?


17

วิธีการค้นหาจำนวนพอร์ตที่เปิดใน linux? ฉันต้องการดูว่าพอร์ตของฉันหมดหรือไม่ นอกจากนี้ฉันจะดูข้อ จำกัด ของระบบปฏิบัติการได้อย่างไร


2
คุณกำลังทำอะไรที่คุณกลัวว่าจะหมดพอร์ต?
MDMarra

คำตอบ:


27

บน linux ที่ทันสมัยให้ใช้ยูทิลิตี 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        

9
netstat -an | grep ESTABLISHED | wc -l

จะให้จำนวนพอร์ตที่เปิด 32 ในกรณีของฉัน

cat /proc/sys/net/ipv4/ip_local_port_range

จะส่งคืนสิ่งที่ชอบ:

32768 61000

ซึ่งหมายความว่า 61000 - 32768 - $ OPENPORTS = AvailablePorts

ในกล่องของฉันนั่นคือ:

61000-32768-32 = 28200 หมายเลขพอร์ตที่ใช้ได้


-a46 ใช้งานไม่ได้ ความช่วยเหลือใด ๆ
erotsppa

คุณทำงาน distro อะไร (ใช้งานได้บนเซิร์ฟเวอร์ ubuntu 10.04 LTS) แน่นอนถ้าคุณไม่ได้ติดตั้ง ipv6 ให้ใช้ netstat -a
Grizly

ทดสอบในกล่อง CentOS ของฉันดูเหมือนว่าแฮงค์หากคุณไม่ใช้ "-n" เพื่อหยุดการแก้ไขชื่อ (netstat -an | grep ก่อตั้ง | wc -l)
Grizly

เพิ่งเห็น "เอสเอส" ด้านล่างมันยอดเยี่ยมไม่รู้เกี่ยวกับมัน .. ดีกว่ามาก! ใช้ ip_local_port_range เพื่อกำหนดว่า linux ของคุณได้รับการกำหนดค่าให้อนุญาต แต่นั่นแสดงสิ่งที่คุณกำลังใช้ในรูปแบบที่เข้าถึงได้มากขึ้น!
Grizly

8

ดังที่คนอื่น ๆ ได้กล่าวถึง netstat เป็นเครื่องมือที่ใช้ในการกำหนดพอร์ตที่ใช้งานอยู่ในปัจจุบัน สำหรับข้อ จำกัด จำนวนพอร์ตที่มีให้เป็นจำนวนเต็ม 16 บิตที่ไม่ได้ลงชื่อซึ่งให้ช่วง 0-65535 ของคุณ พอร์ตที่พร้อมใช้งานสำหรับแอปพลิเคชันที่จะผูกไว้เป็นพอร์ตที่มีสิทธิ์ / รูทที่สงวนไว้ (0-1024) บวกกับช่วงที่พอร์ต ephemeral ของคุณไม่ครอบคลุม

cat /proc/sys/net/ipv4/ip_local_port_rangeคุณสามารถดูพอร์ตชั่วคราวของคุณโดยใช้

หากต้องการแก้ไขสิ่งนั้นอย่างต่อเนื่องคุณจะต้องเพิ่ม / แก้ไข "net.ipv4.ip_local_port_range" ในไฟล์ /etc/sysctl.conf หรือโต้ตอบกับ sysctl -n net.ipv4.ip_local_port_range="<start_port> <end_port>"


1
จู้จี้แคะ แต่มันไม่ได้ จำกัด IPV4 เป็นขีด จำกัด tcp / udp และการรันเหล่านั้นเป็นอิสระจาก ipv4 (เช่น ipv6 ไม่ได้ทำสิ่งใดสำหรับเลเยอร์การขนส่ง)
Joel K

ใช่คุณพูดถูก ฉันได้ลบการอ้างอิง IPV4 ในคำตอบของฉัน
Alex

1

ส่วนตัวฉันชอบ nmap คุณสามารถค้นหาสถานะของพอร์ตทั้งหมดโดยการออก nmap -P 1-65535 เป้าหมาย การแจกแจงส่วนใหญ่ควรมีแพ็คเกจนี้ผ่านทางผู้จัดการแพ็คเกจ



0

netstat จะช่วยให้คุณเห็นพอร์ตที่เปิดอยู่ทำ "netstat -" เพื่อดูว่าอะไรที่เหมาะกับคุณที่สุด


1
netstat --inetจะช่วยให้มากที่สุด
พอลทอมบลิน

ฉันหมายถึง -? ตัวละครที่ขาดหายไป
jer.salamon

หรืออ่าน manpage
MDMarra

รวมถึง --inet6 (ย่อมาจากทั้งคู่: -4 -6), เพื่อรับซ็อกเก็ต IPv6 และซ็อกเก็ตที่ไม่เชื่อเรื่องพระเจ้า
Tobu

0

'nmap localhost' จะให้พอร์ตและบริการที่เปิดอยู่ทั้งหมดของคุณแก่คุณ


1
ไม่ได้จริงๆมันจะสแกนพอร์ตสำหรับ 127.0.0.1 เท่านั้นไม่ใช่สำหรับ WAN IP ใด ๆ
Lucas Kauffman

0

netstat -tulnp

อาร์กิวเมนต์ของโปรแกรม netstat แสดงอยู่ด้านล่าง:

*

  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

0

ใช้คำสั่งต่อไปนี้บนเทอร์มินัลเพื่อตรวจสอบพอร์ตทั้งหมด

netstat -lntu

หากต้องการดูสถานะพอร์ตเฉพาะให้ใช้คำสั่งต่อไปนี้

netstat -an | grep ':6060'

แทนที่ 6060 ด้วยหมายเลขพอร์ตเฉพาะของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.