Debian / IPv6: Rute default berakhir setelah 1800 detik, kehilangan konektivitas


10

Saya menjalankan Debian 8 menggunakan vServer. Setelah menginstal buruh pelabuhan dan mengaktifkan IPv6 saya mencatat sesuatu yang aneh. Saya tidak tahu apakah buruh pelabuhan ada hubungannya dengan ini, hanya saja saya perhatikan masalah ini setelah menginstalnya.

Rute default saya dikonfigurasi untuk kedaluwarsa setelah ca. 1800secs. Saya benar-benar menghilang setelah batas waktu ini. Ini adalah saat saya (jelas) kehilangan konektivitas IPv6.

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

Mengapa router dikonfigurasi untuk kedaluwarsa setelah 1800 s? Di mana saya bisa mengkonfigurasi ini?

[sunting 2016-05-14 16:08]

Menambahkan rute default secara manual tampaknya berfungsi dengan baik. Itu tetap tinggal. Tetapi saya perlu memiliki rute yang tidak kedaluwarsa setelah boot.

[sunting 2016-05-14 16:13]

Mesin ini berjalan pada host KVM yang di-host oleh netcup.de. Itu menggunakan driver virtio, seperti yang direkomendasikan oleh penyedia saya.

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

kebajikan-apa yang dikatakan:

root@wopr:~# virt-what
kvm

[edit 2016-05-14 15:34] Sepertinya saya ketinggalan yang net.ipv6.conf.default.autoconfdiatur ke 1. Sekarang saya menambahkan file di /etc/sysctl.d untuk menekan ini saat boot:

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

Kecuali untuk buruh pelabuhan, tidak banyak aplikasi lain yang berjalan di mesin ini.
lajuette

Jawaban:


8

Sepertinya saya melewatkan net.ipv6.conf.default.autoconf disetel ke 1. Menambahkan file di /etc/sysctl.d untuk menekannya saat boot menyelesaikan masalah untuk saya:

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

Sekarang saya mendapatkan rute defaualt yang tidak akan kedaluwarsa pada saat boot. Masalah terpecahkan. Terima kasih telah mengarahkan saya ke arah yang benar, Sander.


Akhirnya saya mendapat solusinya!
schnawel007

4

1800 detik terdengar seperti batas waktu default untuk Iklan Router.

Dugaan pertama saya adalah ada router Cisco di jaringan yang dikonfigurasi dengan ipv6 nd ra suppressantarmuka. Dalam mode itu router akan mengirimkan RA ketika host meminta satu dengan RS, tetapi tidak menyegarkannya secara teratur. Host mengirim RS ketika membuka antarmuka, yang akan menjelaskan mengapa ia mendapatkan rute default setelah boot.

Pengaturan itu adalah pengaturan Cisco tidak berguna yang aneh. Perute harus mengirim RA ketika ditanya + secara teratur (default pada Cisco), atau tidak sama sekali ( ipv6 nd ra suppress all). Pengaturan setengah jalan ipv6 nd ra suppressmenyebabkan perilaku aneh seperti ini dan tidak boleh digunakan.


root @ wopr: ~ # cat / proc / sys / net / ipv6 / conf / eth0 / accept_ra menghasilkan 0. Saya kira itu berarti eth0 mengabaikan RAS?
lajuette

1
Ya, dalam hal ini tidak menggunakan RA. Mungkin sudah menerima satu sebelum accept_ra=0ditetapkan.
Sander Steffann

0

Sebenarnya, jawaban yang ditandai salah. Masalahnya adalah bahwa buruh pelabuhan memungkinkan penerusan pada antarmuka dan yang membuat kernel Linux mengabaikan RA pada antarmuka tertentu, lihat: https://www.mattb.net.nz/blog/2011/05/12/linux-ignores -ipv6-router-advertisements-when-forwarding-diaktifkan /

Jadi, solusi yang benar dalam hal ini adalah mengatur accept_rake 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

alih-alih sepenuhnya menonaktifkan penemuan rute.


Saya menambahkan ini, masih tuan rumah menjalankan buruh pelabuhan tidak mendapatkan rute default Tuan rumah non-buruh pelabuhan lain mendapatkan rute default.
Lenne
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.