วิธีการค้นหาจำนวนพอร์ตที่เปิดใน linux? ฉันต้องการดูว่าพอร์ตของฉันหมดหรือไม่ นอกจากนี้ฉันจะดูข้อ จำกัด ของระบบปฏิบัติการได้อย่างไร
วิธีการค้นหาจำนวนพอร์ตที่เปิดใน linux? ฉันต้องการดูว่าพอร์ตของฉันหมดหรือไม่ นอกจากนี้ฉันจะดูข้อ จำกัด ของระบบปฏิบัติการได้อย่างไร
คำตอบ:
บน 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
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 หมายเลขพอร์ตที่ใช้ได้
ดังที่คนอื่น ๆ ได้กล่าวถึง 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>"
ส่วนตัวฉันชอบ nmap คุณสามารถค้นหาสถานะของพอร์ตทั้งหมดโดยการออก nmap -P 1-65535 เป้าหมาย การแจกแจงส่วนใหญ่ควรมีแพ็คเกจนี้ผ่านทางผู้จัดการแพ็คเกจ
ลอง
# lsof -n -i -P
เพื่อความสมบูรณ์ :)
netstat จะช่วยให้คุณเห็นพอร์ตที่เปิดอยู่ทำ "netstat -" เพื่อดูว่าอะไรที่เหมาะกับคุณที่สุด
netstat --inet
จะช่วยให้มากที่สุด
'nmap localhost' จะให้พอร์ตและบริการที่เปิดอยู่ทั้งหมดของคุณแก่คุณ
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
ใช้คำสั่งต่อไปนี้บนเทอร์มินัลเพื่อตรวจสอบพอร์ตทั้งหมด
netstat -lntu
หากต้องการดูสถานะพอร์ตเฉพาะให้ใช้คำสั่งต่อไปนี้
netstat -an | grep ':6060'
แทนที่ 6060 ด้วยหมายเลขพอร์ตเฉพาะของคุณ