ปิดใช้งาน IPv6 บนอินเทอร์เฟซเดียว


9

ฉันประหลาดใจเล็กน้อยกับความจริงที่ว่า Ubuntu จะไม่ประมวลผล ipv4 DHCP เว้นแต่คุณจะบอกให้ชัดเจน แต่จะใช้ ipv6 RAs อย่างมีความสุขเว้นแต่คุณจะไม่บอก มีวิธีใดบ้างที่จะเปลี่ยนพฤติกรรมเริ่มต้นให้เป็น 'ไม่ทำอะไรเลยเว้นแต่ฉันจะเปิดใช้งานอย่างชัดเจน'

(หมายเหตุถึงผู้ตอบ: ฉันไม่ต้องการปิดการใช้งาน ipv6 ทั่วโลกหรือปิดการใช้งาน autoconf โดยสมบูรณ์ฉันกำลังมองหาที่จะปิดการใช้งาน autoconf ตามค่าเริ่มต้น (เช่นเดียวกับในฉันไม่ต้องการ ipv6 ยกเว้นว่าฉันพูดใน อินเทอร์เฟซในลักษณะเดียวกับที่ฉันไม่ได้รับที่อยู่ v4 เว้นแต่ว่าฉันได้เปิด dhcp อย่างชัดเจน) สิ่งที่เกิดขึ้นคือว่าสำหรับอินเทอร์เฟซที่อัพ - เช่นมี ipv4 config - ที่อยู่ v6 มีแนวโน้มที่จะเปิด ขึ้นบนอินเทอร์เฟซเช่นกันแม้ว่าฉันจะไม่ได้เปิดใช้งานอย่างชัดเจนโซลูชันจนถึงปัจจุบันนั้นใช้ได้ แต่ถ้าฉันปิดการใช้งาน v6 หรือ autoconf ทั่วโลกฉันไม่สามารถเปิดใช้งาน v6 อีกครั้งบน พื้นฐานต่ออินเตอร์เฟซที่มีคำสั่งง่ายๆใน / etc / network / interfaces ฉันค่อนข้างแน่ใจว่าฉันขอให้ดวงจันทร์อยู่ติดคุณทราบ)


1
นี่คือลิงค์เกี่ยวกับวิธีปิดการใช้งาน ipv6 ฉันไม่ได้ลองเอง แจ้งให้ฉันทราบหากใช้งานได้: วิธีปิดใช้งาน IPV6 ใน Ubuntu
BiggJJ

3
อาจเป็นเช่นนั้น แต่ฉันไม่ต้องการปิดการใช้งาน ipv6 เพียงป้องกันการกำหนดค่าอัตโนมัติบนอินเทอร์เฟซเว้นแต่ว่าฉันต้องการให้พวกเขากำหนดค่าอัตโนมัติโดยเฉพาะ
ijw

คำตอบ:


9

Autoconf ในส่วนของฟังก์ชั่นพื้นฐานของ IPv6 การประกาศ RA ไม่ใช่ DHCP และเซิร์ฟเวอร์ RA ไม่ได้กำหนดที่อยู่ RA ใกล้กับการกำหนดค่าอัตโนมัติของ IPv4 มากในช่วง 169.254.0.0/16 IP หากเปิดใช้งานความเป็นส่วนตัวที่อยู่ IPv6 ของคุณจะเปลี่ยนแปลงตลอดเวลา ที่อยู่เก่าของคุณจะถูกยกเลิกและถูกลบออกในที่สุด

คุณสามารถปิดการใช้งาน ipv6 autoconf ได้อย่างง่ายดายด้วยคำสั่ง:

sudo sysctl -w net.ipv6.conf.all.autoconf=0

แทนที่allด้วยชื่ออินเตอร์เฟสเพื่อปิดใช้งานหนึ่งอินเตอร์เฟส แทนที่autoconfด้วยdisable_ipv6เพื่อปิดใช้งาน IPv6 สร้างไฟล์/etc/sysctl.dด้วยการกำหนดตัวแปรที่คุณต้องการให้การตั้งค่าถูกนำไปใช้ในระหว่างการเริ่มต้น

ในการค้นหาการตั้งค่าทั้งหมดที่เกี่ยวข้องกับ ipv6 ให้รันคำสั่ง:

sudo sysctl -a | grep ipv6 | less

4

วิธีตรวจสอบว่าเปิดใช้งานหรือปิดใช้งาน IPv6 หรือไม่

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

0 หมายถึงเปิดใช้งานและ 1 ถูกปิดใช้งาน

หากต้องการปิดใช้งาน IPv6

$ su -
# nano /etc/sysctl.conf

และเพิ่มบรรทัดเหล่านี้ลงในไฟล์ sysctl.conf

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

บันทึกไฟล์ sysctl.conf ด้วย config ใหม่จากนั้นรีบูทระบบของคุณ

# reboot

ตรวจสอบระบบของคุณอีกครั้ง

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

ตอนนี้คุณควรเห็น“ 1″ หมายความว่า IPv6 ถูกปิดใช้งานในระบบของคุณ

จากhttp://namhuy.net/1419/disable-ipv6-ubuntu-linux-mint.html


ทำงานให้ฉัน อย่างน้อย Centos คุณสามารถเรียกใช้ "sudo sysctl -p" เพื่อโหลดซ้ำโดยไม่ต้องรีบูตเครื่อง
รหัส Wiget

2

คล้ายกับ แต่แตกต่างจากหนึ่งในคำตอบอื่น ๆ ฉันลองนี้ด้วยความสุข:

เพิ่มไฟล์ sysctl ใน /etc/sysctl.d เพื่อปิดการใช้งาน ipv6 - ไม่ครอบคลุมในระดับสากลเช่นเดียวกับสถานะเริ่มต้นของอินเตอร์เฟส:

net.ipv6.conf.default.disable_ipv6=1

จากนั้นในไฟล์อินเตอร์เฟสและสำหรับเฉพาะอินเตอร์เฟสที่คุณต้องการเปิด ipv6 ให้เพิ่ม:

iface eth0 inet dhcp # .. or whatever
up sysctl -w net.ipv6.conf.$IFACE.disable_ipv6=0

... ดังนั้นอินเทอร์เฟซจะไม่ได้รับที่อยู่ IPv6 เมื่อพวกเขามา (ในปัจจุบัน) แต่สามารถโน้มน้าวให้พวกเขามีในบางกรณี คุณไม่ต้องสงสัยเลยว่าจะปิดใช้งาน RA ก่อนที่จะเปิดใช้งาน ipv6 หากนั่นคือสิ่งที่คุณต้องการเช่นกัน

หมายเหตุ: ฉันสงสัยว่าคุณจะพบปัญหากับ VLAN ชื่ออินเตอร์เฟส (เช่น eth0.100) และจะต้องสะกดคำนั้นในคำสั่ง 'up' เป็น 'eth0 / 100' แทนที่จะเป็น $ IFACE ซึ่งจะมีรูปแบบที่ไม่ถูกต้อง - ฉันยังไม่ได้ทดสอบ แต่ดูเหมือนว่า sysctl จะมองโลกอย่างไร

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