데비안 / IPv6 : 기본 경로가 1800 초 후에 만료되어 연결이 끊어짐


10

vServer에서 Debian 8을 실행하고 있습니다. 도커를 설치하고 IPv6을 활성화 한 후 이상한 점을 발견했습니다. 도 커가 이것과 관련이 있는지 모르겠습니다. 설치 후이 문제를 발견 한 것입니다.

내 기본 경로는 ca 후에 만료되도록 구성되어 있습니다. 1800 초 이 시간 초과 후에 실제로 사라집니다. 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

1800 초 후에 rout이 만료되도록 구성된 이유는 무엇입니까? 어디서 구성 할 수 있습니까?

[편집 2016-05-14 16:08]

기본 경로를 수동으로 추가하면 정상적으로 작동하는 것 같습니다. 그대로 유지됩니다. 그러나 부팅 후 만료되지 않는 경로가 필요합니다.

[편집 2016-05-14 16:13]

컴퓨터가 netcup.de에서 호스팅하는 KVM 호스트에서 실행 중입니다. 내 공급자가 권장하는 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

미덕-뭐라고 :

root@wopr:~# virt-what
kvm

[edit 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인터페이스에 구성된 네트워크에 Cisco 라우터가 있다는 것입니다 . 이 모드에서 라우터는 호스트가 RS를 요구할 때 RA를 전송하지만 정기적으로 새로 고치지는 않습니다. 호스트는 인터페이스를 표시 할 때 RS를 전송하여 부팅 후 기본 경로를 얻는 이유를 설명합니다.

그 설정은 이상한 쓸모없는 시스코 설정입니다. 라우터는 요청이있을 때 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설정 하기 전에 이미 수락했을 수 있습니다 .
샌더 스테판

0

실제로 표시된 답변이 잘못되었습니다. 문제는 docker가 인터페이스에서 전달을 가능하게하고 Linux 커널이 해당 특정 인터페이스의 RA를 무시하게 만듭니다. https://www.mattb.net.nz/blog/2011/05/12/linux-ignores 전달할 때 -ipv6-router-advertisements /

따라서이 경우 올바른 해결책은 다음으로 설정 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.