ฉันจะปิดการใช้งานIPv4 stack จาก Linux ได้อย่างไร ฉันต้องการที่จะทำแบบไดนามิกนั่นคือบางครั้งฉันต้องการเปิดใช้งานและบางครั้งฉันต้องการเพียงIPv6 stack มีวิธีพกพาที่จะทำเช่นนั้น? ถ้าคุณรู้วิธีการทำเช่นนั้นในการแจกแจงใด ๆ มันจะช่วยฉันได้มาก
ฉันจะปิดการใช้งานIPv4 stack จาก Linux ได้อย่างไร ฉันต้องการที่จะทำแบบไดนามิกนั่นคือบางครั้งฉันต้องการเปิดใช้งานและบางครั้งฉันต้องการเพียงIPv6 stack มีวิธีพกพาที่จะทำเช่นนั้น? ถ้าคุณรู้วิธีการทำเช่นนั้นในการแจกแจงใด ๆ มันจะช่วยฉันได้มาก
คำตอบ:
หลังจากสนทนาเล็กน้อยใน IRC ความคิดเห็นทั่วไปคือเคอร์เนล linux ใช้รหัสบางอย่างระหว่าง ipv4 และ ipv6 และนั่นอาจทำให้ ipv4 ปิดการใช้งานโดยสิ้นเชิงเป็นไปไม่ได้เลย คุณสามารถลองคอมไพล์เคอร์เนลโดยไม่มีส่วน ipv4 แต่ ipv6 อาจไม่คอมไพล์ในกรณีนี้ (แต่ไม่มีอะไรทำให้คุณไม่สามารถลองได้!)
คุณสามารถลบที่อยู่ ipv4 ออกจากอินเทอร์เฟซ AFAIK แต่ฉันคิดว่ามันเป็นไปไม่ได้ในเวลานี้เพื่อปิดการใช้งาน ipv4 โดยสมบูรณ์
แก้ไข:หลังจากตรวจสอบอย่างรวดเร็วmake menuconfig
ในเคอร์เนล 2.6.36 ฉันไม่สามารถหาวิธีปิดการใช้งาน ipv4 โดยไม่ต้องปิดการใช้งานสแต็ก TCP / IP ทั้งหมด (และอื่น ๆ ipv6)
หากนี่คือสำหรับนักพัฒนาก็สามารถใช้ "การแทรกซึมของห้องสมุด" โดยใช้ LD_PRELOAD ห้องสมุดที่ได้รับการรับรองบางส่วนพร้อมฟังก์ชั่นต้นขั้วที่ส่งคืนข้อผิดพลาดเพียงอย่างเดียว (หรือเรียกสิ่งที่แท้จริงขึ้นอยู่กับวันของสัปดาห์
ฉันคิดว่ามันเป็นไปไม่ได้ที่จะปิดการใช้งาน IPv4 อย่างสมบูรณ์ แต่ขึ้นอยู่กับเป้าหมายของคุณการลดทราฟฟิก IPv4 ทั้งหมดที่ใช้iptables
อาจจะเพียงพอแล้วใช่ไหม
สิ่งนี้จะทำงานได้ดี ฉันยังไม่ได้ทดสอบกับเครื่องใด ๆ เพราะฉันเข้าถึงผ่านทาง IPv4
sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP
/etc/network/interfaces.d
ใน มันไม่ได้มากเช่นเดียวกับการปิดใช้งาน IPv4 ตั้งแต่ยังคงฟังบนsystemd-resolved
แต่มันก็เพียงพอที่จะตอบสนองความต้องการของฉันทันทีและแนะนำมากที่จะล้อเล่นกับ127.0.0.53:53
iptables
ส่วนใหญ่คุณควรคอมไพล์เคอร์เนลของคุณใหม่โดยไม่มีโมดูล ipv4 ฟาง
คุณไม่สามารถปิดใช้งานได้อย่างสมบูรณ์เพราะระบบใช้อินเทอร์เฟซวนกลับ 127.0.0.1
แต่คุณสามารถปิดการใช้งานฟังก์ชั่น ipv4 บางส่วนได้ด้วยคำสั่ง if-cfg