Debian / IPv6: เส้นทางเริ่มต้นหมดอายุหลังจาก 1800 วินาทีทำให้การเชื่อมต่อขาดหาย


10

ฉันใช้ Debian 8 บน vServer หลังจากติดตั้งตัวเทียบท่าและเปิดใช้งาน IPv6 ฉันสังเกตเห็นบางสิ่งที่แปลก ฉันไม่ทราบว่านักเทียบท่ามีส่วนเกี่ยวข้องกับเรื่องนี้หรือไม่ฉันเพิ่งสังเกตเห็นปัญหานี้หลังจากติดตั้งแล้ว

เส้นทางเริ่มต้นของฉันถูกกำหนดค่าให้หมดอายุหลังจาก ca 1800secs ที่จริงฉันหายตัวไปหลังจากหมดเวลานี้ นี่คือเมื่อการเชื่อมต่อ IPv6 i (ชัด) หลวม

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

เหตุใดจึงกำหนดค่าการกำหนดเส้นทางให้หมดอายุหลังจาก 1800 วินาที ฉันจะกำหนดค่านี้ได้ที่ไหน

[แก้ไข 2016-05-14 16:08]

การเพิ่มเส้นทางเริ่มต้นด้วยตนเองดูเหมือนว่าจะทำงานได้ดี มันยังคงอยู่ แต่ฉันต้องมีเส้นทางที่ไม่หมดอายุหลังจากบูต

[แก้ไข 2016-05-14 16:13]

เครื่องกำลังทำงานบนโฮสต์ KVM ที่โฮสต์โดย netcup.de กำลังใช้ไดรเวอร์ virtio ตามที่ผู้ให้บริการของฉันแนะนำ

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

virt-what พูดว่า:

root@wopr:~# virt-what
kvm

[แก้ไข 2016-05-14 15:34] ดูเหมือนว่าฉันพลาดที่net.ipv6.conf.default.autoconfถูกตั้งค่าเป็น 1 ตอนนี้ฉันเพิ่มไฟล์ใน /etc/sysctl.d เพื่อระงับสิ่งนี้ตอนบูต:

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

ยกเว้นนักเทียบท่าไม่มีแอปพลิเคชั่นอื่น ๆ อีกมากมายที่ทำงานบนเครื่องนี้
lajuette

คำตอบ:


8

ดูเหมือนว่าฉันพลาด net.ipv6.conf.default.autoconf ถูกตั้งค่าเป็น 1 การเพิ่มไฟล์ใน /etc/sysctl.d เพื่อระงับสิ่งนี้เมื่อบูตแก้ไขปัญหาสำหรับฉัน:

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

ตอนนี้ฉันได้รับเส้นทางเริ่มต้นที่จะไม่หมดอายุในเวลาบูต แก้ไขปัญหา. ขอบคุณที่ชี้นำฉันในทิศทางที่ถูกต้องซานเดอร์


ในที่สุดฉันก็ได้ทางออก!
schnawel007

4

1800 วินาทีดูเหมือนว่าการหมดเวลาเริ่มต้นสำหรับโฆษณาเราเตอร์

การเดาครั้งแรกของฉันคือว่ามีเราเตอร์ของซิสโก้ในเครือข่ายที่กำหนดค่าด้วยipv6 nd ra suppressบนอินเทอร์เฟซ ในโหมดนั้นเราเตอร์จะส่ง RA เมื่อโฮสต์ร้องขอด้วย RS แต่ไม่รีเฟรชเป็นประจำ โฮสต์จะส่ง RS เมื่อนำอินเตอร์เฟสขึ้นมาซึ่งจะอธิบายว่าทำไมจึงได้รับเส้นทางเริ่มต้นหลังจากบูต

การตั้งค่านั้นเป็นการตั้งค่า Cisco ที่ไร้ประโยชน์ เราเตอร์ควรส่ง RA เมื่อมีการถาม + เป็นประจำ (ค่าเริ่มต้นบน Cisco) หรือไม่เลย ( ipv6 nd ra suppress all) การตั้งค่าครึ่งทางipv6 nd ra suppressทำให้เกิดพฤติกรรมแปลก ๆ เช่นนี้และไม่ควรใช้


root @ wopr: ~ # cat / proc / sys / net / ipv6 / conf / eth0 / accept_ra ให้ผลตอบแทน 0 ฉันคิดว่านั่นหมายความว่า eth0 ไม่สนใจ RA หรือไม่?
lajuette

1
ใช่ในกรณีนั้นมันไม่ได้ใช้ RA อาจได้รับการยอมรับก่อนหน้าaccept_ra=0นี้แล้ว
Sander Steffann

0

จริงๆแล้วคำตอบที่ทำเครื่องหมายไว้นั้นผิด ปัญหาคือนักเทียบท่าเปิดใช้งานการส่งต่อบนอินเทอร์เฟซและทำให้เคอร์เนล Linux ไม่สนใจ RA บนอินเทอร์เฟซนั้นดู: https://www.mattb.net.nz/blog/2011/05/12/linux-ignores -ipv6 เตอร์-โฆษณาเมื่อการส่งต่อจะถูกเปิดใช้งาน /

ดังนั้นวิธีแก้ไขที่ถูกต้องในกรณีนี้คือตั้งค่าaccept_raเป็น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

แทนที่จะปิดใช้งานการค้นพบเส้นทางอย่างสมบูรณ์


ฉันเพิ่มสิ่งนี้ยังโฮสต์ที่ทำงานนักเทียบท่าไม่ได้รับเส้นทางเริ่มต้นโฮสต์ที่ไม่ใช่นักเทียบท่าอื่นจะได้รับเส้นทางเริ่มต้น
Lenne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.