Làm cách nào để tắt cấu hình tự động trên IPv6 trong Linux?


22

Làm cách nào để tôi có thể vô hiệu hóa vĩnh viễn cấu hình tự động của IPv6 trong Linux? Khi tôi cố xóa thủ công một địa chỉ khỏi giao diện với:

ip -6 addr del 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 dev eth1

Nó sẽ xuất hiện lại vài giây sau, tôi muốn nó biến mất vĩnh viễn, nhưng không vô hiệu hóa tất cả IPv6 cùng nhau.

Câu trả lời:


21

Cấu hình tự động có thể bị vô hiệu hóa tạm thời cho eth1 với:

sudo sysctl -w net.ipv6.conf.eth1.autoconf=0
sudo sysctl -w net.ipv6.conf.eth1.accept_ra=0

hoặc cho tất cả các giao diện với:

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

Tái kích hoạt hoạt động bằng cách sử dụng 1 thay vì 0 trong cuộc gọi.

Vô hiệu hóa nó vĩnh viễn có thể được thực hiện với một mục /etc/sysctl.conf. Trên Debian Etch (có lẽ cũng mới hơn), không cần cài đặt accept_ra, hệ thống sẽ tự động cấu hình bằng cách sử dụng địa chỉ Liên kết cục bộ ( fe80..)

Như Gart đã đề cập dưới đây, cấu hình địa chỉ tự động và phát hiện bộ định tuyến sẽ bị tắt nếu bản thân máy chủ là bộ định tuyến và accept_rakhông 2, nghĩa là

net.ipv6.conf.<iface|all|default>.forwarding=1

net.ipv6.conf.<iface|all|default>.accept_ra=0 hoặc net.ipv6.conf.<iface|all|default>.accept_ra=1.

ifacegiao diện của bạn ở đâu


3
Ngoài ra, cấu hình địa chỉ tự động và phát hiện bộ định tuyến sẽ bị tắt nếu bản thân máy chủ là bộ định tuyến, nghĩa net.ipv6.conf.all.forwarding=1là được đặt.
Gart

4

net.ipv6.conf.all.accept_ra = 0 ở trên không nên được thực hiện, vì RA là cần thiết để chỉ ra on-link và off-link cho tiền tố (theo RFC5942), cũng như cấu hình tự động của một số loại khác các tham số, chẳng hạn như MTU, thời gian chờ Neighbor Discovery, v.v.

Nếu bạn muốn tắt tự động cấu hình, hãy tắt chế độ tự động tắt tự động như trên hoặc tắt A (bit tự động cấu hình) trong Tùy chọn thông tin tiền tố (PIO) trong RA.


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

Điều này không làm việc cho tôi trên Debian Wheezy. Sau khi kiểm tra /etc/sysctl.conf tôi cần sử dụng

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

3

Các sysctlgiải pháp không làm việc cho chúng tôi trên Ubuntu 18,04 Bionic. Chúng tôi đã giải quyết nó bằng cách:

Chỉnh sửa /etc/netplan/01-netcfg.yaml, cấu hình:

network:
  ...
  ethernets:
    eth0:
      ...
      dhcp6: no
      accept-ra: no

Bạn có thể cần phải sử dụng tên giao diện của bạn thay vì eth0. Sau khi bạn lưu tệp thực thi:

netplan apply hoặc là reboot

Nếu bạn đã nhận được IP IPv6 từ tự động cấu hình và bạn muốn xóa nó mà không cần khởi động lại, bạn có thể thực thi:

ip -6 addr del 1111:2222:1:0:aaaa:bbbb:cccc:dddd/64 dev eth0 

Tất nhiên bạn cần thay thế IP và thiết bị trong lệnh này.


điều này vừa làm cho ngày của tôi gãi đầu trong vài tháng: D
anthonysomerset

2
Tôi thường chỉ cào Google cho đến khi tôi tìm thấy nó.
Jeroen Vermeulen - Magehost

1
Điều này hoạt động khi tôi thử nó, nhưng vấn đề là tắt chấp nhận khá nguy hiểm, như Mark S đã đề cập - nó có vẻ hoạt động nhưng sau đó bạn có thể thấy bạn bị thiếu gói vì chúng bị điểm phân mảnh hoặc bộ định tuyến chuyển đổi dự phòng Được sử dụng. Ngoài ra nó phá vỡ ping. Lý do tôi đã cố gắng làm điều này là để phù hợp với bản ghi SPF của tôi trong thư gửi đi nhưng sau đó tôi nhận ra rằng tôi nên sử dụng một mặt nạ trong bản ghi thay vì trong IPv6, một dải địa chỉ thực sự thuộc về một máy chứ không phải một địa chỉ duy nhất .
Phil McKerracher

2

Vấn đề với Ubuntu 18 và ipv6 là systemd-networkd kiểm soát các tham số kernel, do đó, mặc dù người ta có thể vô hiệu hóa ipv6 với sysctl, networkd sẽ rất vui khi bật chúng cho bạn, nếu cấu hình không nói khác.

Giải pháp của tôi để vô hiệu hóa ipv6 là cấu hình link-local trong netplan thành một vô hướng trống (với điều kiện bạn không có IPvv ip-link-local)

network:
     version: 2
     renderer: networkd
     ethernets:
     eth0:
        ..
        link-local: [ ]

Cấu hình sẽ biên dịch cấu hình cho networkd sẽ được đăng trong /run/systemd/network/10-netplan-eth0.network và điều đó sẽ thuyết phục Networkd không đưa ipv6 lên eth0

Nếu bạn có thể muốn vô hiệu hóa ipv6 trên loopback, có thể dễ dàng đạt được bằng cách đặt tham số kernel net.ipv6.conf.all.disable_ipv6 thành 1. networkd dường như không kiểm soát loopback.

sysctl -w net.ipv6.conf.all.disable_ipv6=1

Tôi thực sự thích giải pháp rất sạch sẽ của bạn. Vì chúng tôi không sử dụng các địa chỉ liên kết cục bộ thêm vô hướng trống, giải pháp hoàn hảo. Sau này, chúng tôi phải khởi động lại máy chủ vì áp dụng netplan giữ các địa chỉ IPv6 đã được gán trên cả hai giao diện ethernet của chúng tôi. Nhưng sau khi khởi động lại, mọi thứ hoạt động giống như bạn nói. Tôi không nghĩ có lý do để bận tâm đến việc vô hiệu hóa IPv6 trên giao diện loopback, vì vậy tôi chỉ bỏ qua phần sysctl. Cảm ơn!
Zoltan
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.