Làm cách nào để tắt IPv6 vĩnh viễn?


54

Làm thế nào chúng ta có thể vô hiệu hóa hệ thống IPv6 thông qua các lệnh đầu cuối?

Tôi đã đọc chỉnh sửa /etc/modprobe.d/aliases và thay thế:

alias net-pf-10 ipv6

với:

alias net-pf-10 off
alias ipv6 off

Điều này có an toàn để áp dụng và nó có vô hiệu hóa vĩnh viễn ipv6 trên các lần khởi động lại không?


5
Tại sao bạn muốn tắt IPv6 vĩnh viễn?
Anderson Green

2
Có một cách tuyệt đối (tốt, tôi thực sự có thể tìm thấy một cái, trên MS Windows) không có lý do gì để tắt IPv6. Tại sao bạn muốn làm điều đó?
Anders

17
Hoàn toàn không có lý do, để bật ipv6 trên thực tế. Mọi thứ vẫn là ipv4 và nó không mang lại lợi thế cho ai đó đang quản lý một mạng nhỏ và người có thời gian hạn chế. Đó là một vectơ nữa cho cuộc tấn công và cấu hình sai tiềm năng và thật khôn ngoan để vô hiệu hóa nó. Có lẽ không phải bất cứ kỹ sư IETF nào muốn nghe, nhưng đó là vấn đề của họ không phải của tôi. Tôi sẽ kích hoạt nó khi tôi có lý do chính đáng, cho đến lúc đó, chỉ là một vectơ tấn công khác mà tôi phải quản lý.
Jonathan S. Fisher

8
Vô hiệu hóa IPv6 không làm cho bạn miễn nhiễm với các cuộc tấn công IPv6. Sẽ tốt hơn nhiều nếu kích hoạt nó, đối phó với nó và học hỏi từ nó, đó là cách duy nhất làm cho môi trường của bạn an toàn hơn một chút. Thay vào đó, tốt hơn hết là mọi người nên học "Cách vô hiệu hóa IPv4 vĩnh viễn". IPv6 dễ dàng hơn nhiều so với IPv4, để bắt đầu, không còn NAT nữa, vì vậy, một điều ít quản lý hơn ... Internet đang phát triển rất nhanh, trong vài năm nữa, mạng IPv6 sẽ lớn hơn IPv4, vì vậy, với IPv4, bạn sẽ thoát khỏi Internet thực sự. Đi trước người đàn ông! Nâng cấp IP của bạn !! Thay đổi là một điều tốt.
ThiagoCMC

7
@ JonathanS.Fisher và những người khác - Những bình luận này không hữu ích. Chỉ vì bạn có thể không biết lý do để vô hiệu hóa IPv6, không có nghĩa là không có lý do. Một trường hợp chính là các dịch vụ VPN không hỗ trợ IPv6. Nếu bạn không tắt nó, bạn sẽ rò rỉ địa chỉ IPv6 của mình.
Scone

Câu trả lời:


74

Tôi đã vô hiệu hóa thành công IPv6 khi đặt các dòng sau vào /etc/sysctl.conf:

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

cũng chạy lệnh này để tải các thay đổi

sudo sysctl -p

Uubfox trên VMware không thể ping và tôi đóng ipv6 trên Ubuntu, bây giờ thì ổn rồi.
Honghe.Wu

12
Sau khi thêm các dòng vào sysctl.conf, hãy chạy sudo sysctl -phoặc khởi động lại để thay đổi có hiệu lực.
Rajat Gupta

4
Tôi chỉ cần làm điều này trên mạng không dây như một cách khắc phục lỗi để tôi có thể kết nối lại. Dưới đây là cách thực hiện chỉ với một bộ chuyển đổi:net.ipv6.conf.wlan0.disable_ipv6 = 1
cmc

1
Điều này không hoạt động trên Ubuntu 17.10. Xem bình luận NullNoname bên dưới để sửa lỗi grub.
Luke

1
Không hoạt động trên Ubuntu 16.04. Phương pháp Grub hoạt động.
Penghe Geng

53

Nếu PC của bạn không tải /etc/sysctl.conf vào lúc khởi động (đó là trường hợp của tôi), việc vô hiệu hóa IPv6 khỏi grub là cần thiết. Nhân Linux có tùy chọn khởi động có tên "ipv6.disable = 1", vô hiệu hóa IPv6 khi khởi động.

Để chỉnh sửa các tùy chọn khởi động, hãy chỉnh sửa "/ etc / default / grub" với bất kỳ trình soạn thảo văn bản nào với tư cách là người dùng root:

sudo nano /etc/default/grub

Tìm dòng có chứa "GRUB_CMDLINE_LINUX_DEFAULT":

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Thêm "ipv6.disable = 1" vào tùy chọn khởi động, sau đó lưu tệp grub của bạn:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

Cuối cùng, cập nhật grub:

sudo update-grub

6
+1 này hoạt động và vô hiệu hóa hoàn toàn IPv6, do đó không có dấu vết /proc/sys/net/ipv6/bên trái nào có thể gây ra sự cố như X11 forwarding request failedsshdcố gắng liên kết với giao diện IPv6 không được định cấu hình. Lưu ý rằng tương tự như vậy, bạn có thể thoát khỏi IPv4 theo cách này trên các máy ảo IPv6 thuần túy. Cảm ơn.
Tino

7

Câu trả lời của Carvalho bao gồm cả nhận xét về việc phải chạy sudo sysctl -Pđã giúp tôi nhiều nhất.

Tuy nhiên, trong trường hợp của tôi ít nhất:

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

và có vẻ như dòng thứ hai là cần thiết.

Có lẽ điều này có liên quan đến thực tế là tôi đang sử dụng TPU Link Archer T2U, do đó tôi phải tùy chỉnh xây dựng trình điều khiển từ nguồn.
Giả định của tôi là kết quả là, <mydevice>không được tính là một trong " all".
Vì vậy, tóm lại, nếu bạn đã tùy chỉnh thêm trình điều khiển mạng (tùy chỉnh), net.ipv6.conf.all.disable_ipv6 = 1có thể không đủ để vô hiệu hóa mạng IPv6.

Phải thừa nhận rằng tôi đã không thử dòng
net.ipv6.conf.default.disable_ipv6 = 1


1
Upvote để đề cập rằng việc vô hiệu hóa các thiết bị khác nhau đôi khi được yêu cầu.
Scone

Việc thiếu defaultdòng có lẽ là vấn đề ở đây. Nếu trình điều khiển của bạn chưa được tải tại thời điểm trong quá trình khởi động khi sysctl được thực thi, thì nó không được bao gồm trong all- nhưng cài đặt mặc định sẽ có nghĩa là nó sẽ nhận được cài đặt sau, khi nó được tải.
Charles Duffy

1
Tôi đã có defaultmục và tôi phải cấu hình thiết bị cụ thể để vô hiệu hóa thành công.
Alfonso Nishikawa

7

Dưới đây là cách kiểm tra xem ipv6 có được bật trên máy tính của bạn không

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

Nếu bạn thấy

Running kernel is IPv6 ready

nó được kích hoạt

Nếu bạn thấy không có đầu ra, thì không.

Để vô hiệu hóa ipv6 nếu các câu trả lời khác trên trang này không phù hợp với bạn, hãy liệt kê danh sách đen ipv6 cùng nhau. Để làm điều này, sử dụng lệnh sau:

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

Ngoài ra, điều này cũng có thể giúp:

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

Khởi động lại để những thay đổi có hiệu lực. Để kiểm tra xem nó có được kích hoạt sau khi khởi động chạy lại lệnh này không:

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

Không nên có đầu ra.

Bấm vào đây để biết thông tin về cách tắt IPV6 khi khởi động.


Câu trả lời này giả định rằng ipv6tính năng hạt nhân là một mô-đun hạt nhân (sử dụng blacklist.localđể ngăn chặn việc tải nó). Có một trường hợp ipv6 được biên dịch vào kernel (không phải mô-đun) trong trường hợp đó là cần thiết để khởi động kernel với ipv6.disable=1paremeter khởi động (để làm như vậy, người ta sẽ: (1) sudo gedit /etc/default/grub(2) tìm kiếm dòng GRUB_CMDLINE_LINUX_DEFAULT=<args>và (3) thêm ipv6.disable=1vào các tham số khởi động)
humanityANDpeace

@humanityANDpeace Bạn có thể quan tâm đến câu trả lời toàn diện hơn này: unix.stackexchange.com/a/190189
mchid

6

Nếu bạn đang sử dụng phiên bản hiện đại (Tôi đang sử dụng 16.04 LTS) của Ubuntu thì bạn có thể sử dụng giải pháp gọn gàng này:

Tạo /etc/sysctl.d/60-ipv6-disable.confchứa văn bản sau:

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

Chạy service procps start


2
đây là cách sạch nhất để làm điều đó - không hiểu tại sao lại bị hạ cấp. nó cũng hoạt động trên fedora / centos / redhat. nó có lợi thế là nó không làm thay đổi các tệp mặc định của hệ thống (như trực tiếp sysctl.conf như được đề xuất trong câu trả lời phổ biến nhất)
Costin Gușă

@Costin Tôi không downvote, nhưng điều này sẽ không luôn luôn hoạt động. Đôi khi bạn phải đặt tên thiết bị cụ thể (ví dụ trong trường hợp cài đặt trình điều khiển tùy chỉnh). Xem Alfonso Nishikawas bình luận về câu trả lời của tôi.
polynomial_donut

Tôi rất biết ơn tôi đã làm theo cách tiếp cận này, vì cuối cùng tôi đã mất kết nối trên một máy chủ từ xa ( cần IPv6) và rất dễ dàng chỉ đạo trợ lý của tôi trên trang web để xóa một tệp và khởi động lại.
Roger Dueck

service procps restartthay vào đó, tôi phải chạy trên Ubuntu 18.04
iPherian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.