ฉันจะปิดใช้งาน IPv6 ที่แมป IPv4 ได้อย่างไร


17

บนกล่องลินุกซ์ของฉันฉันมีภูตต่างๆที่สามารถผูกกับทุกอินเตอร์เฟซที่ใช้งาน IPv6 ::บน เมื่อพวกเขาทำเช่นลินุกซ์ส่งคำขอ IPv4 ::ffff:198.51.100.37เป็นภูตที่แมปเป็นตัวอย่างเช่น

ฉันจะแทนเช่นการเชื่อมต่อ IPv4 จะถูกปฏิเสธและมีเพียงการเชื่อมต่อ IPv6 ::ได้รับการยอมรับเมื่อผูกภูตที่จะ หากต้องการรับการเชื่อมต่อ IPv4 ฉันต้องการให้ daemon ต้องผูกกับ0.0.0.0(รวมถึง::) อย่างชัดเจน

กล่าวอีกนัยหนึ่งฉันต้องการเรียกใช้บริการเฉพาะใน IPv6 ไม่ใช่ใน IPv4

มีวิธีการทำสิ่งนี้หรือไม่?

คำตอบ:


22

สิ่งนี้ถูกควบคุมโดยnet.ipv6.bindv6onlysysctl เพิ่มรายการต่อไปนี้/etc/sysctl.confและเรียกใช้sudo sysctl -pเพื่อให้การเปลี่ยนแปลงมีผล

net.ipv6.bindv6only=1

แอปพลิเคชันยังสามารถผูกกับที่อยู่ IPv6 ได้อย่างชัดเจนแทนที่จะเปลี่ยนเป็นแบบโกลบอลตัวอย่างเช่น nginx มีipv6onlyตัวเลือกสำหรับlistenคำสั่ง สอดคล้องกับการนี้ตัวเลือกในการIPV6_V6ONLYsetsockopt()


โชคดีที่ฉันพบว่าแอป (ในกรณีนี้คือ OpenSSH) ตั้งค่า IPV6_V6ONLY บนซ็อกเก็ตแล้วเมื่อฉันตั้งค่าListenAddress ::ดังนั้นฉันจึงไม่จำเป็นต้องใช้ sysctl (และตั้งค่าใหม่ทุกอย่าง)
Michael Hampton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.