Vô hiệu hóa IPv6 trên một giao diện duy nhất


9

Tôi hơi lạ vì thực tế là Ubuntu sẽ không xử lý ipv4 DHCP trừ khi bạn nói rõ ràng với nó, nhưng sẽ vui vẻ nhận ipv6 RA trừ khi bạn không nói. Có cách nào để thay đổi hành vi mặc định thành 'không làm gì trừ khi tôi bật nó một cách rõ ràng'?

(Lưu ý cho người trả lời: Tôi không muốn tắt ipv6 trên toàn cầu hoặc tắt hoàn toàn autoconf. Tôi đang tìm cách tắt autoconf theo mặc định (như trong, tôi không muốn ipv6 trừ khi tôi nói như vậy trong / etc / network / các giao diện, giống như cách tôi không nhận địa chỉ v4 trừ khi tôi bật dhcp một cách rõ ràng. Điều gì xảy ra là, đối với bất kỳ giao diện nào đang hoạt động - ví dụ: có cấu hình ipv4 - địa chỉ v6 có xu hướng chỉ bật trên giao diện cũng vậy, mặc dù thực tế là tôi chưa kích hoạt điều đó một cách rõ ràng. Các giải pháp cho đến nay vẫn ổn, nhưng nếu tôi vô hiệu hóa v6 hoặc autoconf trên toàn cầu, thì tôi không thể bật lại v6 trên một cơ sở trên mỗi giao diện với một lệnh đơn giản trong / etc / mạng / giao diện. Tôi khá chắc chắn rằng tôi đang yêu cầu mặt trăng trên một cây gậy, làm phiền bạn.)


1
Đây là một liên kết về cách vô hiệu hóa ipv6. Tôi đã không thử bản thân mình. Hãy cho tôi biết nếu nó hoạt động: Cách vô hiệu hóa IPV6 trong Ubuntu
BiggJJ

3
Có lẽ nó có, nhưng tôi không muốn vô hiệu hóa ipv6, chỉ ngăn chặn tự động cấu hình trên các giao diện trừ khi tôi đặc biệt thích chúng được cấu hình tự động.
ijw

Câu trả lời:


9

Autoconf là một phần của chức năng cơ bản của IPv6. Thông báo RA không phải là DHCP và máy chủ RA không gán địa chỉ. RA gần hơn với cấu hình tự động IPv4 được thực hiện trên dải IP 169.254.0.0/16. Nếu quyền riêng tư được bật, địa chỉ IPv6 của bạn sẽ thay đổi theo thời gian. Địa chỉ cũ của bạn sẽ bị loại bỏ và cuối cùng bị xóa.

Bạn có thể vô hiệu hóa ipv6 autoconf một cách dễ dàng bằng lệnh:

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

Thay thế allbằng tên giao diện để vô hiệu hóa một giao diện. Thay thế autoconfbằng disable_ipv6để vô hiệu hóa IPv6. Tạo một tệp /etc/sysctl.dvới các bài tập biến bạn muốn áp dụng cài đặt trong khi khởi động.

Để tìm tất cả các cài đặt liên quan đến ipv6, hãy chạy lệnh:

sudo sysctl -a | grep ipv6 | less

4

Để kiểm tra xem IPv6 có được bật hay tắt không

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

0 có nghĩa là nó được kích hoạt và 1 bị vô hiệu hóa.

Để tắt IPv6

$ su -
# nano /etc/sysctl.conf

và thêm các dòng này vào tập tin 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

Lưu tệp sysctl.conf với cấu hình mới, sau đó khởi động lại hệ thống của bạn

# reboot

Kiểm tra lại hệ thống của bạn

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

Bây giờ bạn sẽ thấy Tiếng 1 ″ có nghĩa là IPv6 đã bị vô hiệu hóa trên hệ thống của bạn.

Từ http://namhuy.net/1419/disable-ipv6-ubfox-linux-mint.html


Đã làm cho tôi. Ít nhất trên Centos, bạn có thể chạy "sudo sysctl -p" để tải lại mà không cần khởi động lại
Code Wiget

2

Tương tự, nhưng khác với, một trong những câu trả lời khác, tôi đã thử điều này với rất nhiều niềm vui:

Thêm tệp sysctl trong /etc/sysctl.d để tắt ipv6 - tuy nhiên, không phải như một trạng thái mặc định của giao diện:

net.ipv6.conf.default.disable_ipv6=1

Sau đó, trong tệp giao diện và chỉ các giao diện bạn muốn có ipv6, hãy thêm:

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

... do đó, các giao diện không nhận được địa chỉ IPv6 khi chúng xuất hiện (như hiện tại) nhưng có thể được thuyết phục để có chúng trong các trường hợp cụ thể. Bạn không thể nghi ngờ vô hiệu hóa RA trước khi bật ipv6 nếu đó cũng là điều bạn muốn.

Lưu ý - Tôi chưa thử nghiệm, nhưng dường như đó là cách sysctl nhìn thế giới.

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.