Debian / IPv6: Tuyến mặc định hết hạn sau 1800 giây, mất kết nối


10

Tôi đang chạy Debian 8 trên vServer. Sau khi cài đặt docker và kích hoạt IPv6, tôi nhận thấy một điều kỳ lạ. Tôi không biết docker có liên quan gì đến vấn đề này không, chỉ là tôi đã nhận thấy vấn đề này sau khi cài đặt nó.

Tuyến mặc định của tôi được định cấu hình hết hạn sau ca. 1800 giây. Tôi thực sự biến mất sau thời gian chờ này. Đây là khi tôi (rõ ràng) kết nối IPv6 lỏng lẻo.

root@wopr:~#  ip -6 route
xxxx:yyyy:zzz:xxxx::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev br-5c1ce68ea951  proto kernel  metric 256
fe80::/64 dev br-61f6bbfdbe87  proto kernel  metric 256
[a lot more routed for my docker containers]
default via fe80::1 dev eth0  proto ra  metric 1024  expires 1259sec hoplimit 64

Tại sao các tuyến được cấu hình hết hạn sau 1800 giây? Tôi có thể cấu hình cái này ở đâu?

[chỉnh sửa 2016-05-14 16:08]

Thêm một tuyến mặc định bằng tay dường như chỉ hoạt động tốt. Nó ở lại đặt. Nhưng tôi cần phải có một lộ trình không hết hạn sau khi khởi động.

[chỉnh sửa 2016-05-14 16:13]

Máy đang chạy trên máy chủ KVM được lưu trữ bởi netcup.de. Đó là sử dụng trình điều khiển virtio, theo khuyến nghị của nhà cung cấp của tôi.

root@wopr:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface lo inet6 loopback

auto eth0
iface eth0 inet dhcp

iface eth0 inet6 static
       address xxxx:yyyy:zzz:xxxx::1
       netmask 64
       gateway fe80::1

đức-những gì nói:

root@wopr:~# virt-what
kvm

[chỉnh sửa 2016-05-14 15:34] Có vẻ như tôi đã bỏ lỡ net.ipv6.conf.default.autoconfđược đặt thành 1. Bây giờ tôi đã thêm một tệp trong /etc/sysctl.d để chặn điều này khi khởi động:

root@wopr:~# cat /etc/sysctl.d/ipv6.conf
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.autoconf=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.eth0.autoconf=0

Ngoại trừ docker, không có nhiều ứng dụng khác chạy trên máy này.
lajuette

Câu trả lời:


8

Có vẻ như tôi đã bỏ lỡ rằng net.ipv6.conf.default.autoconf đã được đặt thành 1. Thêm một tệp trong /etc/sysctl.d để loại bỏ điều này khi khởi động đã giải quyết vấn đề cho tôi:

root@wopr:~# cat /etc/sysctl.d/ipv6.conf
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.autoconf=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.eth0.autoconf=0

Bây giờ tôi nhận được một tuyến đường không thể hết hạn vào lúc khởi động. Vấn đề được giải quyết. Cảm ơn đã chỉ cho tôi đi đúng hướng, Sander.


Cuối cùng tôi đã có giải pháp!
schnawel007

4

1800 giây nghe có vẻ như thời gian chờ mặc định cho Quảng cáo Bộ định tuyến.

Dự đoán đầu tiên của tôi là có một bộ định tuyến của Cisco trên mạng được cấu hình ipv6 nd ra suppresstrên giao diện. Trong chế độ đó, bộ định tuyến sẽ gửi RA khi máy chủ yêu cầu một máy chủ có RS, nhưng không làm mới nó thường xuyên. Một máy chủ gửi một RS khi đưa lên giao diện, điều này sẽ giải thích tại sao nó có một tuyến mặc định sau khi khởi động.

Cài đặt đó là một cài đặt Cisco vô dụng kỳ lạ. Một bộ định tuyến nên gửi RA khi được hỏi + thường xuyên (mặc định trên Cisco) hoặc hoàn toàn không ( ipv6 nd ra suppress all). Cài đặt nửa chừng ipv6 nd ra suppressgây ra hành vi kỳ lạ như thế này và không nên được sử dụng.


root @ wopr: ~ # cat / Proc / sys / net / ipv6 / conf / eth0 / accept_ra mang lại 0. Tôi đoán điều đó có nghĩa là eth0 đang bỏ qua RA?
lajuette

1
Có, trong trường hợp đó, nó không sử dụng RA. Nó có thể đã được chấp nhận trước khi accept_ra=0được thiết lập.
Sander Steffann

0

Trên thực tế, câu trả lời được đánh dấu là sai. Vấn đề là docker cho phép chuyển tiếp trên (các) giao diện và điều đó khiến kernel Linux bỏ qua RA trên giao diện cụ thể đó, xem: https://www.mattb.net.nz/blog/2011/05/12/linux-ignores -ipv6-bộ định tuyến-quảng cáo-khi-chuyển tiếp-được kích hoạt /

Vì vậy, giải pháp chính xác trong trường hợp này là đặt accept_rathành 2:

# cat /etc/sysctl.d/ipv6.conf
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.eth0.accept_ra=2

thay vì vô hiệu hóa hoàn toàn việc khám phá tuyến đường.


Tôi đã thêm điều này, vẫn là máy chủ đang chạy docker không có tuyến mặc định Một máy chủ không phải docker khác có tuyến mặc định.
Lenne
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.