จะปิดการใช้งาน IPv6 อย่างถาวรได้อย่างไร


54

เราจะปิดการใช้งานระบบ IPv6 ได้อย่างกว้าง ๆ ด้วยคำสั่งเทอร์มินัลอย่างไร

ฉันได้อ่านการแก้ไข/etc/modprobe.d/aliases และการแทนที่:

alias net-pf-10 ipv6

ด้วย:

alias net-pf-10 off
alias ipv6 off

ปลอดภัยหรือไม่ที่จะใช้และจะปิดการใช้งาน ipv6 อย่างถาวรระหว่างการรีบู๊ตหรือไม่


5
ทำไมคุณต้องการปิดการใช้งาน IPv6 อย่างถาวร?
Anderson Green

2
มีจริง ๆ (ดีจริง ๆ ฉันสามารถค้นหาหนึ่งบน MS Windows) ไม่มีเหตุผลที่จะปิด IPv6 ทำไมคุณต้องการทำเช่นนั้น?
Anders

17
ไม่มีเหตุผลอย่างแน่นอนที่จะเปิด ipv6 จริง ๆ ทุกอย่างยังคงเป็น ipv4 และไม่มีข้อได้เปรียบสำหรับคนที่จัดการเครือข่ายขนาดเล็กและมีเวลา จำกัด เป็นอีกหนึ่งเวกเตอร์สำหรับการโจมตีและการกำหนดค่าผิดพลาดที่อาจเกิดขึ้นและเป็นความระมัดระวังในการปิดใช้งาน อาจไม่ใช่สิ่งที่วิศวกรของ IETF ต้องการได้ยิน แต่มันไม่ใช่ปัญหาของพวกเขา ฉันจะเปิดใช้งานเมื่อฉันมีเหตุผลที่ดีจนกระทั่งถึงตอนนั้นเวกเตอร์โจมตีอีกตัวที่ฉันต้องจัดการ
Jonathan S. Fisher

8
การปิดใช้งาน IPv6 ไม่ได้ทำให้คุณมีภูมิคุ้มกันต่อการโจมตี IPv6 มันจะดีกว่ามากถ้าเปิดใช้งานจัดการกับมันและเรียนรู้จากมันนั่นเป็นวิธีเดียวที่ทำให้สภาพแวดล้อมของคุณปลอดภัยขึ้นเล็กน้อย เป็นการดีกว่าสำหรับทุกคนที่จะเรียนรู้ "วิธีการปิดการใช้งาน IPv4 อย่างถาวร" แทน IPv6 นั้นง่ายกว่า IPv4 มาก ๆ เริ่มต้นด้วยไม่มี NAT อีกต่อไปดังนั้นสิ่งหนึ่งที่จะจัดการ ... อินเทอร์เน็ตกำลังเติบโตอย่างรวดเร็วจริง ๆ ในอีกไม่กี่ปีเครือข่าย IPv6 จะใหญ่กว่า IPv4 ดังนั้น ด้วย IPv4 คุณจะอยู่นอกอินเทอร์เน็ตจริง ไปข้างหน้าคน! อัพเกรด IP ของคุณ !! การเปลี่ยนแปลงเป็นสิ่งที่ดี
ThiagoCMC

7
@ JonathanS.Fisher และคนอื่น ๆ - ความคิดเห็นเหล่านี้ไม่มีประโยชน์ เพียงเพราะคุณอาจไม่ทราบถึงเหตุผลในการปิดการใช้งาน IPv6 ไม่ได้หมายความว่าไม่มี กรณีสำคัญอย่างหนึ่งสำหรับบริการ VPN ที่ไม่รองรับ IPv6 หากคุณไม่ปิดใช้งานคุณจะรั่วไหลที่อยู่ IPv6 ของคุณ
สโคน

คำตอบ:


74

ฉันปิดการใช้งาน IPv6 สำเร็จเมื่อใส่บรรทัดต่อไปนี้ใน/etc/sysctl.conf:

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

ยังรันคำสั่งนี้เพื่อโหลดการเปลี่ยนแปลง

sudo sysctl -p

Uubuntu บน VMware ไม่สามารถปิงได้และฉันปิด ipv6 บน Ubuntu ตอนนี้ก็โอเคแล้ว
Honghe.Wu

12
หลังจากเพิ่มบรรทัดเหล่านี้ไปยัง sysctl.conf ให้เรียกใช้sudo sysctl -pหรือรีบูตเพื่อให้การเปลี่ยนแปลงมีผล
Rajat Gupta

4
ฉันต้องทำสิ่งนี้ผ่านระบบไร้สายเท่านั้นเพื่อแก้ปัญหาข้อบกพร่องดังนั้นฉันจึงสามารถเชื่อมต่อได้อีกครั้ง นี่คือวิธีการทำสำหรับหนึ่งอะแดปเตอร์เท่านั้น:net.ipv6.conf.wlan0.disable_ipv6 = 1
cmc

1
สิ่งนี้ไม่ทำงานบน Ubuntu 17.10 ดูความคิดเห็น NullNoname ด้านล่างสำหรับการแก้ไขด้วง
ลุค

1
ไม่ทำงานบน Ubuntu 16.04 เช่นกัน วิธีการ Grub ทำงาน
Penghe Geng

53

หากพีซีของคุณไม่โหลด /etc/sysctl.conf ตอนบูท (ซึ่งเป็นกรณีของฉัน) ต้องปิดการใช้งาน IPv6 จาก grub เคอร์เนล Linux มีตัวเลือกการบูตชื่อ "ipv6.disable = 1" ซึ่งปิดใช้งาน IPv6 จากการเริ่มต้น

หากต้องการแก้ไขตัวเลือกการบูตให้แก้ไข "/ etc / default / grub" ด้วยโปรแกรมแก้ไขข้อความใด ๆ ในฐานะผู้ใช้รูท:

sudo nano /etc/default/grub

ค้นหาบรรทัดที่มี "GRUB_CMDLINE_LINUX_DEFAULT":

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

เพิ่ม "ipv6.disable = 1" ลงในตัวเลือกการบูตจากนั้นบันทึกไฟล์ด้วงของคุณ:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

ในที่สุดอัพเดตด้วง:

sudo update-grub

6
+1 สิ่งนี้ทำงานและปิดการใช้งาน IPv6 ได้อย่างสมบูรณ์ดังนั้นจึงไม่มีร่องรอยของ/proc/sys/net/ipv6/ด้านซ้ายซึ่งอาจสร้างปัญหาเช่นX11 forwarding request failedเนื่องจากsshdพยายามเชื่อมโยงกับส่วนต่อประสาน IPv6 ที่ไม่ได้กำหนดค่า โปรดทราบว่าในทำนองเดียวกันคุณสามารถกำจัด IPv4 ด้วยวิธีนี้บน IPv6 บริสุทธิ์ ขอบคุณ
Tino

7

คำตอบของ Carvalho รวมถึงความคิดเห็นเกี่ยวกับการวิ่งsudo sysctl -Pได้ช่วยฉันมากที่สุด

อย่างไรก็ตามในกรณีของฉันอย่างน้อย:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.<mydevice>.disable_ipv6 = 1

และดูเหมือนว่าจำเป็นต้องมีบรรทัดที่สอง

บางทีนี่อาจเกี่ยวข้องกับความจริงที่ว่าฉันใช้ TP-Link Archer T2U ซึ่งฉันต้องสร้างไดร์เวอร์จากแหล่งที่มา
ข้อสันนิษฐานของฉันคือผลลัพธ์<mydevice>จะไม่นับเป็นหนึ่งใน " all"
โดยสรุปหากคุณเพิ่มไดร์เวอร์เครือข่าย (กำหนดเอง) ตามเนื้อผ้าnet.ipv6.conf.all.disable_ipv6 = 1อาจไม่เพียงพอที่จะปิดการใช้งานเครือข่าย IPv6

ต้องยอมรับว่าฉันไม่ได้ลองสาย
net.ipv6.conf.default.disable_ipv6 = 1


1
โหวตขึ้นสำหรับการกล่าวถึงว่าบางครั้งจำเป็นต้องปิดการใช้งานอุปกรณ์ที่แตกต่างกัน
สโคน

การขาดdefaultสายอาจเป็นปัญหาที่นี่ หากไดรเวอร์ของคุณยังไม่ได้โหลดในขั้นตอนการบู๊ตเมื่อดำเนินการ sysctl แสดงว่ามันไม่ได้รวมอยู่ในall- แต่การตั้งค่าเริ่มต้นจะหมายความว่ามันจะได้รับการตั้งค่าในภายหลังเมื่อมันถูกโหลด
Charles Duffy

1
ฉันมีdefaultรายการและฉันต้องกำหนดค่าอุปกรณ์เฉพาะเพื่อปิดใช้งานให้สำเร็จ
Alfonso Nishikawa

7

ต่อไปนี้เป็นวิธีตรวจสอบว่ามีการเปิดใช้งาน ipv6 บนคอมพิวเตอร์ของคุณหรือไม่

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

ถ้าคุณเห็น

Running kernel is IPv6 ready

มันเปิดใช้งาน

หากคุณไม่เห็นเอาต์พุตมันจะไม่เป็นเช่นนั้น

หากต้องการปิดการใช้งาน ipv6 หากคำตอบอื่น ๆ ในหน้านี้ไม่ทำงานสำหรับคุณให้ขึ้นบัญชีดำทั้งหมด ipv6 ด้วยกัน หากต้องการทำสิ่งนี้ให้ใช้คำสั่งต่อไปนี้:

echo 'blacklist ipv6' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null 

นอกจากนี้สิ่งนี้อาจช่วยได้เช่นกัน:

echo 'install ipv6 /bin/true' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null

รีบูตเครื่องเพื่อให้การเปลี่ยนแปลงมีผล ในการตรวจสอบว่ามันเปิดใช้งานหลังจากเริ่มต้นใช้งานคำสั่งนี้อีกครั้ง:

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

ไม่ควรมีเอาต์พุต

คลิกที่นี่สำหรับข้อมูลเกี่ยวกับวิธีการปิดการใช้งาน IPV6 ตอนบูท


คำตอบนี้จะถือว่าipv6คุณสมบัติของเมล็ดเป็นโมดูลเคอร์เนล (ใช้blacklist.localเพื่อป้องกันการโหลด) มีกรณีที่ ipv6 ถูกคอมไพล์ลงในเคอร์เนล (ไม่ใช่โมดูล) ซึ่งในกรณีนี้จำเป็นต้องบูตเคอร์เนลด้วยipv6.disable=1boot paremeter (เพื่อทำเช่นนั้นจะ: (1) sudo gedit /etc/default/grub(2) ค้นหาบรรทัดGRUB_CMDLINE_LINUX_DEFAULT=<args>และ (3) เพิ่มipv6.disable=1พารามิเตอร์การบูต)
มนุษยชาติ

@humanityANDpeace คุณอาจสนใจคำตอบที่ครอบคลุมยิ่งขึ้นนี้: unix.stackexchange.com/a/190189
mchid

6

หากคุณกำลังใช้รุ่นที่ทันสมัย ​​(ฉันใช้งานเวอร์ชัน 16.04 LTS) ของ Ubuntu คุณสามารถใช้วิธีแก้ไขปัญหาที่เป็นระเบียบนี้ได้:

สร้าง/etc/sysctl.d/60-ipv6-disable.confที่มีข้อความต่อไปนี้:

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

วิ่ง service procps start


2
นี่เป็นวิธีที่สะอาดที่สุดในการทำ - ไม่เข้าใจว่าทำไม downvote มันใช้งานได้กับ fedora / centos / redhat ด้วย มันมีข้อได้เปรียบที่ไม่เปลี่ยนแปลงไฟล์ค่าเริ่มต้นของระบบ (เช่น sysctl.conf โดยตรงตามที่แนะนำในคำตอบที่ได้รับความนิยมมากที่สุด)
Costin Gușă

@Costin ฉันไม่ได้ลงคะแนน แต่สิ่งนี้อาจไม่ได้ผลเสมอไป บางครั้งคุณต้องใส่ชื่ออุปกรณ์เฉพาะ (เช่นในกรณีการติดตั้งไดรเวอร์แบบกำหนดเอง) ดูความคิดเห็นของ Alfonso Nishikawas ในคำตอบของฉัน
polynomial_donut

ฉันขอบคุณที่ฉันทำตามวิธีการนี้เนื่องจากฉันสูญเสียการเชื่อมต่อของฉันบนเซิร์ฟเวอร์ระยะไกล ( จำเป็นต้องใช้ IPv6) และมันง่ายมากที่จะนำผู้ช่วยของฉันไปที่ไซต์เพื่อลบไฟล์เดียวและรีบูต
Roger Dueck

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