อย่างที่เราทราบกันดีว่าที่อยู่ IPv4 สำหรับlocalhost
คือ127.0.0.1
(ที่อยู่ย้อนกลับ) ที่อยู่ IPv6 คืออะไรlocalhost
และเพื่ออะไร0.0.0.0
เนื่องจากฉันต้องการบล็อกโฮสต์โฆษณาบางแห่ง
อย่างที่เราทราบกันดีว่าที่อยู่ IPv4 สำหรับlocalhost
คือ127.0.0.1
(ที่อยู่ย้อนกลับ) ที่อยู่ IPv6 คืออะไรlocalhost
และเพื่ออะไร0.0.0.0
เนื่องจากฉันต้องการบล็อกโฮสต์โฆษณาบางแห่ง
คำตอบ:
อย่างที่เราทราบกันดีว่าที่อยู่ IPv4 สำหรับ
localhost
คือ127.0.0.1
(ที่อยู่ย้อนกลับ)
จริงๆแล้วที่อยู่ IPv4 ใด ๆ ใน127.0.0.0/8
เป็นที่อยู่ย้อนกลับ
ใน IPv6, ::1/128
อนาล็อกโดยตรงของช่วงย้อนกลับคือ ดังนั้น::1
(แบบยาว0:0:0:0:0:0:0:1
) จึงเป็นที่อยู่ลูปแบ็ค IPv6 หนึ่งเดียว
แม้ว่าlocalhost
โดยปกติชื่อโฮสต์จะแก้ไข127.0.0.1
หรือ::1
ฉันเคยเห็นกรณีที่มีคนผูกไว้กับที่อยู่ IP ที่ไม่ใช่ที่อยู่ย้อนกลับ นี่มันค่อนข้างบ้า ... แต่บางครั้งก็มีคนทำ
ฉันพูดว่า "มันบ้า" เพราะคุณมีแนวโน้มที่จะละเมิดสมมติฐานการใช้งานโดยการทำเช่นนี้ เช่นแอปพลิเคชันอาจพยายามทำการค้นหาแบบย้อนกลับบน IP แบบย้อนกลับและไม่ได้รับผลลัพธ์ที่คาดหวัง ในกรณีที่เลวร้ายที่สุดแอปพลิเคชันอาจส่งการรับส่งข้อมูลที่ละเอียดอ่อนผ่านเครือข่ายที่ไม่ปลอดภัยโดยบังเอิญ ... แม้ว่าคุณอาจต้องทำผิดพลาดอื่น ๆ ด้วยเพื่อ "บรรลุ"
การบล็อก0.0.0.0
ไม่สมเหตุสมผล ใน IPv4 จะไม่ถูกกำหนดเส้นทาง สิ่งที่เทียบเท่าใน IPv6 คือที่::
อยู่ (แบบยาว0:0:0:0:0:0:0:0
) ... ซึ่งไม่เคยถูกกำหนดเส้นทาง
ที่อยู่0.0.0.0
และ::
สงวนไว้ให้หมายถึง "ที่อยู่ใดก็ได้" ตัวอย่างเช่นโปรแกรมที่ให้บริการเว็บอาจผูกกับ0.0.0.0
พอร์ต 80 เพื่อยอมรับการเชื่อมต่อ HTTP ผ่านที่อยู่ IPv4 ของโฮสต์ ที่อยู่เหล่านี้ไม่ถูกต้องเป็นที่อยู่ต้นทางหรือปลายทางสำหรับแพ็กเก็ต IP
ท้ายที่สุดความเห็นบางคนถูกถามเกี่ยวกับ::/128
เมื่อเทียบกับเมื่อเทียบกับ::/0
::
ความแตกต่างนี้คืออะไร?
พูดอย่างเคร่งครัดสองประการแรกคือสัญลักษณ์ CIDR ไม่ใช่ที่อยู่ IPv6 พวกเขากำลังระบุช่วงของที่อยู่ IP CIDR ประกอบด้วยที่อยู่ IP และหมายเลขเพิ่มเติมที่ระบุจำนวนบิตใน netmask ทั้งสองร่วมกันระบุช่วงของที่อยู่ นั่นคือชุดของที่อยู่ที่เกิดขึ้นโดยการละเว้นบิตที่ถูกปิดบังจากที่อยู่ที่กำหนด
ดังนั้น:
::
หมายถึงเพียงที่อยู่ IPv6 0:0:0:0:0:0:0:0
::/128
หมายถึง0:0:0:0:0:0:0:0
netmask ประกอบด้วย 128 บิต สิ่งนี้ให้ช่วงเครือข่ายที่มีที่อยู่เดียวในนั้น::/0
หมายถึง0:0:0:0:0:0:0:0
netmask ประกอบด้วย 0 บิต สิ่งนี้ให้ช่วงเครือข่ายที่มี 2 128ที่อยู่ในนั้น; นั่นคือพื้นที่ที่อยู่ IPv6 ทั้งหมด!สำหรับข้อมูลเพิ่มเติมโปรดอ่านหน้า Wikipedia บนที่อยู่ IPv4 และ IPv6 และสัญลักษณ์ CIDR:
::1
คือที่อยู่ย้อนกลับใน IPv6
ภายใน URL ให้ใช้วงเล็บเหลี่ยม[]
:
http://[::1]/
http://[::1]:80/
ล้อมรอบตัวอักษร IPv6 ในวงเล็บสำหรับใช้ใน URL ที่ถูกกำหนดไว้ในRFC 2732 - รูปแบบที่อยู่ตามตัวอักษร IPv6 ใน URL
ipv6 localhost คือ::1
. ::
ที่อยู่ไม่ได้ระบุเป็น นี้ถูกกำหนดไว้ในRFC 4291 ส่วน 2.5
เพื่อความสมบูรณ์: มีที่อยู่IPv6 ที่แมป IPv4ซึ่งคุณสามารถฝังที่อยู่ IPv4 ในที่อยู่ IPv6 (อุปกรณ์ IPv6 บางเครื่องอาจไม่รองรับ)
ตัวอย่าง: ฉันเรียกใช้เซิร์ฟเวอร์บนเครื่องของฉันซึ่งสามารถเข้าถึงได้ทางhttp://127.0.0.1:19983/solr
. หากฉันเข้าถึงผ่านที่อยู่ IPv6 ที่แมป IPv4 ฉันจะเข้าถึงผ่านhttp://[::ffff:127.0.0.1]:19983/solr
(ซึ่งจะถูกแปลงเป็นhttp://[::ffff:7f00:1]:19983/solr
)
สำหรับใช้ในก /etc/hosts
เป็นเทคนิคการบล็อกโฆษณาง่ายๆที่ทำให้โดเมนไม่สามารถแก้ไขได้มีการใช้ที่อยู่ 0.0.0.0 กันอย่างแพร่หลายเนื่องจากทำให้คำขอล้มเหลวทันทีโดยไม่ต้องพยายามเพราะไม่ใช่ที่อยู่ที่ถูกต้องหรือกำหนดเส้นทางได้ นี่เป็นการเปรียบเทียบกับการใช้ 127.0.0.1 ในสถานที่นั้นซึ่งอย่างน้อยจะตรวจสอบดูว่าคอมพิวเตอร์ของคุณกำลังรับฟังพอร์ต 80 ที่ร้องขอหรือไม่ก่อนที่จะล้มเหลวด้วย 'การเชื่อมต่อถูกปฏิเสธ' ที่อยู่เหล่านั้นที่ถูกใช้ในไฟล์โฮสต์สำหรับโดเมนจะหยุดการร้องขอใด ๆ จากการพยายามผ่านเครือข่ายจริง แต่ 0.0.0.0 ได้รับความนิยมเนื่องจากมี 'เหมาะสม' มากกว่าด้วยเหตุผลข้างต้น IP "127" จะพยายามเข้าสู่คอมพิวเตอร์ของคุณและ IP อื่น ๆ จะทำให้มีการร้องขอไปยังเราเตอร์เพื่อพยายามกำหนดเส้นทาง แต่สำหรับ 0.0.0.0 จะมี '
ทั้งหมดที่กล่าวมาการมีIP ใด ๆที่แสดงอยู่ในไฟล์โฮสต์ของคุณสำหรับโดเมนที่จะถูกบล็อกนั้นเพียงพอแล้วและคุณไม่จำเป็นต้องหรือต้องการใส่ที่อยู่ ipv6 ในไฟล์โฮสต์ของคุณเว้นแต่ - คุณอาจไม่ทำ เปิดใช้งาน ipv4 เลย ฉันจะแปลกใจจริงๆถ้าเป็นเช่นนั้น และถึงกระนั้นฉันคิดว่าการมีโฮสต์ปรากฏใน / etc / hosts ด้วยที่อยู่ ipv4 ที่ไม่ดีเมื่อคุณไม่ได้เปิดใช้งาน ipv4 จะยังคงให้ผลลัพธ์ที่คุณกำลังมองหาซึ่งทำให้มันล้มเหลวแทนที่จะค้นหา DNS จริงกล่าวคือ adserver-example.com และรับคืน IP v4 หรือ v6