ไม่เห็น apache ทำงานใน netstat


10

ฉันเพิ่งเล่นกับ apache และฉันได้ไปทำงานนั่นคือฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์โดยการเรียกดูhttp://127.0.0.1และhttp://192.168.1.5ฉันไม่ได้ทำงาน IPv6

แต่นี่เป็นผลของ netstat

$ sudo service apache2 status
 * apache2 is running
$ netstat -an | grep :80
tcp6       0      0 :::80                   :::*                    LISTEN

$ wget 127.0.0.1
--2014-06-26 01:32:15--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11510 (11K) [text/html]
Saving to: ‘index.html’

100%[=====================================================================================================>] 11,510      --.-K/s   in 0s      

2014-06-26 01:32:15 (161 MB/s) - ‘index.html’ saved [11510/11510]

ฉันคาดหวังว่าจะเห็นมันฟังบน TCP ปกติซึ่งมันชัดเจน!

แก้ไข:

$ netstat -a | grep LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 localhost:mysql         *:*                     LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
tcp6       0      0 [::]:https              [::]:*                  LISTEN     
tcp6       0      0 [::]:http               [::]:*                  LISTEN     

แก้ไข 2: ทำไมต้องโหวตลง? ฉันจะพลาดอะไรได้บ้าง


ลอง netstat -a | grep LISTEN และโพสต์ผลลัพธ์
Lety

โพสต์ผลลัพธ์
meccooll

พยายามnetstat -pไหม
muru

บรรทัดสุดท้ายสองบรรทัดถูกอ้างถึง apache ที่กำลังฟังบนพอร์ต 80 และ 443 ลองใช้การแนะนำ muru เพื่อดูกระบวนการ / pid
Lety

@ Letizia ถูกต้อง แต่มันบอกว่า tcp6 ในคอลัมน์แรกและ :: สำหรับ ip ซึ่งก็คือ IPv6 แต่ฉันกำลังเชื่อมต่อกับมันบน IPv4 ???
meccooll

คำตอบ:


17

TL; DR

Apache ไม่ปรากฏในnetstatการส่งออกและมันจะทำงาน นั่นเป็นเหตุผลที่การwgetโทรของคุณทำงาน อย่างไรก็ตามถูกผูกไว้กับที่อยู่ IPv6 ของคุณแทนที่จะเป็นที่อยู่ IPv4 ของคุณ การจับคู่ที่อยู่จะจัดการการแปลเมื่อจำเป็น

ไปสำหรับเอกสาร

เห็นได้ชัดว่ามีกลไกการสำรอง IPv6-IPv4 อยู่ที่นี่ ตามความเป็นจริงฉันไม่ได้ใช้ IPv6 ในเครือข่ายท้องถิ่นของฉัน แต่:

$ netstat -tunla | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN

เป็นสิ่งสำคัญที่จะต้องทราบว่าไม่ว่าคุณจะอยู่เครื่องของคุณยังคงเป็นบริการและพอร์ตเดียวกันในท้ายที่สุด ส่วนที่เหลือขึ้นอยู่กับเบราว์เซอร์และบริการแก้ไข DNS ของคุณเป็นหลัก อย่างไรก็ตามสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Apache จัดการกับสิ่งนี้คุณอาจต้องการดูเอกสารของพวกเขา :

ปัจจัยหนึ่งที่ทำให้เกิดความยุ่งยากสำหรับผู้ดูแลระบบ Apache คือซ็อกเก็ต IPv6 สามารถรองรับการเชื่อมต่อ IPv4 และการเชื่อมต่อ IPv6 ได้หรือไม่ การจัดการการเชื่อมต่อ IPv4 ด้วยซ็อกเก็ต IPv6 ใช้ที่อยู่ IPv6 ที่แมป IPv4 ซึ่งได้รับอนุญาตตามค่าเริ่มต้นบนแพลตฟอร์มส่วนใหญ่ แต่ไม่ได้รับอนุญาตตามค่าเริ่มต้นใน FreeBSD, NetBSD และ OpenBSD เพื่อให้ตรงกับนโยบายทั่วทั้งระบบบนแพลตฟอร์มเหล่านั้น บนระบบที่ไม่ได้รับอนุญาตตามค่าเริ่มต้นพารามิเตอร์กำหนดค่าพิเศษสามารถเปลี่ยนพฤติกรรมนี้สำหรับ Apache

โดยพื้นฐานแล้วนี่คือการจัดการทั้งซ็อกเก็ต IPv4 และ IPv6 ในลักษณะที่จะหลีกเลี่ยงปัญหาส่วนใหญ่ที่เกี่ยวข้องกับความเข้ากันได้ข้ามแพลตฟอร์มและการจัดการซ็อกเก็ต ในขณะที่คุณสามารถอ่านบนแพลตฟอร์มลินุกซ์เช่น Ubuntu ปัญหานี้จะแก้ไขได้โดยใช้ที่อยู่ IPv6 IPv4 แมป เอกสารยังระบุว่า:

หากคุณต้องการให้ Apache จัดการกับการเชื่อมต่อ IPv4 เท่านั้นไม่ว่าแพลตฟอร์มของคุณและ APR จะรองรับอะไรให้ระบุที่อยู่ IPv4 ในคำสั่งฟังทั้งหมด

ซึ่งจะให้อะไรเช่นนี้ในports.confไฟล์:

Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80

ส่งผลให้หนึ่งในnetstatผลลัพธ์ต่อไปนี้...

$ netstat -tunla | grep LISTEN | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN 
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      127.0.0.1:80              127.0.0.1:80            LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp        0      192.0.2.1:80              192.0.2.1:80            LISTEN 

ผู้ฟังที่สวยงาม แต่ยังไม่พร้อม IPv6 การตั้งค่าข้างต้นมักจะตั้งค่าเป็น/etc/apache2/ports.conf(หรือเข้าโดยตรงapache2.confสำหรับรุ่นที่เก่ากว่า) ค่าเริ่มต้นคือListen 80การดำเนินการที่มีผลผูกพันอัตโนมัติเช่นการปฏิบัติตามข้อกำหนด IPv6 ที่กำหนดไว้ในเอกสาร


1
หืมไม่รู้เกี่ยวกับการจับคู่ที่อยู่ดังนั้นฉันต้องระวังพอร์ตเปิดทั้ง IPv6 และ IPv4
meccooll

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