ความหมายของคอลัมน์ที่อยู่โลคัล Netstat


20

เมื่อฉันnetstat -ntlpมีคอลัมน์เรียกว่าLocal Address:

  • บางครั้งมันจะเอาท์พุทที่อยู่ IP เป็น 0.0.0.0:7180
  • และบางเวลา 127.0.0.1:9001

ความหมายของสัญลักษณ์ทั้งสองคืออะไร

ที่อยู่ IP ที่เฉพาะเจาะจงทำหน้าที่เหมือนตัวกรองสำหรับการเชื่อมต่อขาเข้าหรือไม่? เช่น127.0.0.1:9001นั้นจะยอมรับการเชื่อมต่อจาก localhost บนพอร์ต 9001 เท่านั้น?

คำตอบ:


13

ฉันคิดว่าคุณตอบคำถามของคุณเอง

ตัวอย่างเช่นapacheมีListenตัวเลือกที่จะบอกว่าที่อยู่และพอร์ตที่จะฟัง ขึ้นอยู่กับวิธีการตั้งค่านี้apacheจะฟังที่อยู่ IP ใด ๆ ที่อยู่เฉพาะ: -

Listen *:80
Listen 0.0.0.0:80
Listen 127.0.0.1:80
Listen 192.168.0.5:80

ตัวเลือกข้างต้นแสดงเป็น: -

:::80
0.0.0.0:80
127.0.0.1:80
192.168.0.5:80

และแปลเป็น: -

  • ฟังที่อยู่ IP ใด ๆ (IPv4 หรือ IPv6)
  • ฟังที่อยู่ IPv4 ใด ๆ บนเซิร์ฟเวอร์นั้น
  • รับฟังเฉพาะ IPv4 localhost เท่านั้น
  • ฟังที่อยู่ IPv4 ภายนอก 192.68.0.5

คุณสามารถกำหนดค่าบริการของคุณให้ฟังเฉพาะlocalhostอินเทอร์เฟซหากคุณไม่ต้องการให้บุคคลภายนอกเข้าถึงได้ ตัวอย่างเช่นหากคุณใช้เซิร์ฟเวอร์ LAMP คุณจะต้องapacheฟังที่อยู่ IP ทั้งหมด (เพื่อให้ผู้ใช้ของคุณสามารถเข้าถึงได้) ในขณะที่mysqlฐานข้อมูลสามารถกำหนดค่าให้สามารถเข้าถึงได้เฉพาะจากlocalhost(โดยใช้bind=127.0.0.1คำสั่ง) วิธีนี้phpทำงานบนเซิร์ฟเวอร์เดียวกันจะสามารถเข้าถึงฐานข้อมูลในขณะที่ผู้ใช้ภายนอก (และไม่น่าเชื่อถือ) ผู้ใช้จะไม่สามารถเข้าถึงได้


:::80ไม่ได้หมายความว่า IPv4 และunix.stackexchange.com/a/496150/333382 เสมอ
rfc2460

11

127.0.0.1 และ 0.0.0.0

127.0.0.1หมายถึงอินเตอร์เฟสโลคัลหรือแอดเดรสลูปแบ็ค เข้าถึงได้จาก localhost ของคุณเท่านั้น

0.0.0.0 เป็นที่อยู่ไวด์การ์ดสำหรับทุกอินเตอร์เฟส

บนnetstat -ntlp Local Addressหมายถึง "พิมพ์การเชื่อมต่อฟัง TCP งานแสดง IP ที่เป็นค่าตัวเลขและแสดง PID และชื่อของโปรแกรมที่ใช้การเชื่อมต่อนี้".


ความแตกต่างตามตัวอย่าง

เช่นถ้าฉันมี

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name                 
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1189/prog1
tcp        0      0 0.0.0.0:6666            0.0.0.0:*               LISTEN      1188/prog2

นั่นหมายความว่า:

บริการprog1ด้วย PID 1189ฟังบนพอร์ตกับโปรโตคอล53 tcpมันสามารถเข้าถึงได้จาก localhost ของคุณเท่านั้น

บริการprog2ด้วย PID 1189ฟังบนพอร์ตกับโปรโตคอล6666 tcpอนุญาตให้เข้าถึงพอร์ตนี้ได้จากคอมพิวเตอร์เครื่องอื่น ๆ ในทุกเครือข่ายที่คอมพิวเตอร์เป็นส่วนหนึ่ง

แหล่งที่มา: 1 2 3


3

0.0.0.0 หมายถึงกระบวนการที่ถูกผูกไว้กับอินเทอร์เฟซทั้งหมด

127.0.0.1หมายถึงกระบวนการนั้นถูกผูกไว้กับ127.0.0.1อินเตอร์เฟส (loopback) เท่านั้น

หากคุณมีอินเทอร์เฟซอื่นคุณอาจมีx.y.z.aรายการที่ระบุว่ากระบวนการนั้นเชื่อมโยงกับอินเทอร์เฟซเฉพาะเหล่านั้น

กระบวนการจะได้รับแจ้งเมื่อการรับส่งข้อมูลมาถึงอินเตอร์เฟสที่มีการผูกไว้เท่านั้นใช่แล้วมันเป็นตัวกรองถึงแม้ว่าโดยปกติจะไม่ได้อธิบายไว้ในข้อกำหนดเหล่านั้น


2

"ที่อยู่ในระบบ" คือที่อยู่ซึ่งซ็อกเก็ตที่เป็นปัญหาถูกผูกไว้ นี่คือที่อยู่ซึ่งได้รับการเชื่อมต่อ ที่อยู่ที่คุณถามถึงคือ "ที่อยู่พิเศษ" ตามหน้าคู่มือสำหรับโปรโตคอล Linux IPv4 :

มีที่อยู่พิเศษหลายแห่ง: INADDR_LOOPBACK( 127.0.0.1) อ้างอิงถึงโฮสต์ในระบบผ่านอุปกรณ์วนรอบเสมอ INADDR_ANY ( 0.0.0.0) หมายถึงที่อยู่ใด ๆ สำหรับการผูกพัน; INADDR_BROADCAST ( 255.255.255.255) หมายถึงโฮสต์ใด ๆ และมีผลเช่นเดียวกันกับการผูกเป็น INADDR_ANYด้วยเหตุผลทางประวัติศาสตร์

สิ่งนี้หมายความว่าที่อยู่0.0.0.0คือซ็อกเก็ตสามารถรับการเชื่อมต่อสำหรับที่อยู่ใด ๆ ในระบบบนอินเทอร์เฟซใด ๆ


1

อย่างที่คุณบอกไว้ IP ของ localhost ยอมรับเฉพาะการเชื่อมต่อกับพอร์ตเหล่านั้นแบบโลคัลขณะที่ IP 0.0.0.0อ้างถึงพอร์ตที่เปิดให้ทุกพอร์ต

ตัวอย่างเช่น

ในประเทศ

127.0.0.1:8307 VMWARE
127.0.0.1:25   MASTER

ทั้งหมด

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