ipv6를 사용하여 LXC 컨테이너에 직접 액세스할 수 있도록 설정

ipv6를 사용하여 LXC 컨테이너에 직접 액세스할 수 있도록 설정

먼저 전용 서버에 특수 IPv6 주소가 할당되어 있습니다. 단 1. ::1/128 주소입니다.하지만eth0에 주소를 할당할 수 있습니다(예: ::2/128, ::3/128 등).

이제 나는 해당 서버에서 LXC 컨테이너를 실행하고 싶지만 그들이 일류 시민이 되기를 원하며, 그들이 자신의 IPv6 주소를 가지기를 바랍니다.

IPv4를 사용하는 LXC는 잘 작동합니다. 컨테이너를 시작하고 컨테이너에서 전 세계에 ping을 보낼 수 있습니다. 라는 브리지 장치가 있습니다 lxcbr0.

솔직히 어떻게 진행해야 할지 모르겠습니다. 내가 가지고 있는 특정 LXC 구성에서는 다음과 같습니다('접두사'는 할당된 접두사를 나타냄).

lxc.network.ipv6 = prefix::3/128
lxc.network.ipv6.gateway = prefix::2 # iffy, not sure this is correct

호스트에서 전달을 사용하도록 sysctl을 구성했습니다.

net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.eth0.forwarding = 1

이제 나는 길을 잃고 있습니다. 나생각하다브리지에 IP를 할당해야 합니다. 저는 접두사::2/128을 할당했습니다. 이는 위의 LXC 구성에서 사용합니다. '인터페이스'에서:

iface lxcbr0 inet6 static
        address prefix::2
        netmask 128
        # use arp proxy? Read that somewhere. 
        post-up /sbin/ip -6 neigh add proxy prefix::3 dev eth0 #container 1
        post-up /sbin/ip -6 neigh add proxy prefix::4 dev eth0 #container 2

말할 필요도 없이 이것이 작동하지 않습니다. 컨테이너를 시작하고 로그인할 수 있지만 아무 것도 ping6할 수 없습니다. 호스트에서 컨테이너를 ping할 수도 없습니다. 라우팅과 관련이 있는 것으로 알고 있습니다...?

현재 상태의 일부 출력: Host 'ip -6 a':

4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2607:5300:60:714::1/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::ea40:f2ff:feed:106f/64 scope link 
       valid_lft forever preferred_lft forever
8: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
    inet6 2607:5300:60:714::2/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::b07b:e3ff:fe33:22e7/64 scope link 
       valid_lft forever preferred_lft forever
18: vethPVJQ6M: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::fcb7:57ff:fe3c:bcd1/64 scope link 
       valid_lft forever preferred_lft forever

컨테이너 'ip -6 a':

20: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2607:5300:60:714::3/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe59:679f/64 scope link 
       valid_lft forever preferred_lft forever

호스트 'ip -6 r':

2607:5300:60:714::1 dev eth0  proto kernel  metric 256 
2607:5300:60:714::2 dev lxcbr0  proto kernel  metric 256 
2607:5300:60:7ff:ff:ff:ff:ff dev eth0  metric 1024 
fe80::/64 dev eth0  proto kernel  metric 256 
fe80::/64 dev lxcbr0  proto kernel  metric 256 
fe80::/64 dev vethPVJQ6M  proto kernel  metric 256 
fe80::/64 dev vethWT7OPQ  proto kernel  metric 256 
default via 2607:5300:60:7ff:ff:ff:ff:ff dev eth0  metric 1024 

컨테이너 'ip -6 r':

2607:5300:60:714::2 dev eth0  metric 1024 
2607:5300:60:714::3 dev eth0  proto kernel  metric 256 
fe80::/64 dev eth0  proto kernel  metric 256 
default via 2607:5300:60:714::2 dev eth0  metric 1024 

호스트는 Ubuntu 15.04, LXC 버전 1.1.2를 실행합니다.

몇 가지 조언을 해주시면 감사하겠습니다!

답변1

여기에서는 여러 가지 다른 내용을 융합하고 있는 것 같습니다. 첫째, 서버 이더넷 포트의 넷 마스크가 실제로 /128인지 의심됩니다. 나는 그것이 다른 것(아마도 /64)이고 귀하가 다른 고객과 공유 세그먼트에 있다고 생각합니다.

"ip -6 a" 명령의 출력으로 판단하면 다음과 같습니다.

4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2607:5300:60:714::1/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::ea40:f2ff:feed:106f/64 scope link 
       valid_lft forever preferred_lft forever
8: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
    inet6 2607:5300:60:714::2/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::b07b:e3ff:fe33:22e7/64 scope link 
       valid_lft forever preferred_lft forever
18: vethPVJQ6M: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::fcb7:57ff:fe3c:bcd1/64 scope link 
       valid_lft forever preferred_lft forever

인터페이스의 /128은 오류라고 말하고 싶습니다. 귀하의 접두사는 2607:5300:60:714::/64(대부분)인 것으로 보입니다.

그것이 맞다고 가정하면 다음과 같이 인터페이스 파일을 설정해야 합니다(필요에 따라 IPv4를 추가).

auto lxcbr0
iface lxcbr0 inet6 static
  bridge_ports eth0
  bridge_fd 0
  address 2607:5300:60:714::1
  net mask 64
  gateway 2607:5300:60:7ff:ff:ff:ff:ff

참고: 기본 게이트웨이에 도달하기 위해 2607:5300:60:7ff::/64에 어떻게 도달하는지 명확하지 않습니다. 공급자가 네트워크 구성을 어떻게 기대하는지 알고 있거나 공급자가 제공한 문서를 직접 살펴보는 것은 매우 유용합니다. 여기서 가장 좋은 추측은 2607:5300:60:714::/64 네트워크가 2607:5300:60:7ff::/64와 동일한 링크에 있다는 것입니다. 해당 2607:5300:60:7ff::/64는 공급자의 인프라에 사용됩니다. 2607:5300:60:714:/64 전체를 얻을 수 있는지, 아니면 동일한 링크에서 다른 고객과 공유할 수 있는지는 확실하지 않습니다.

해당 범위 내에서 주소를 자유롭게 할당할 수 있다고 가정하면 컨테이너를 동일한 lxcbr0 인터페이스에 연결하고 각 컨테이너의 주소를 해당 브리지 인터페이스에 할당하기만 하면 됩니다.

다시 한번 말씀드리지만 이는 귀하가 제공한 데이터를 기반으로 한 최선의 추측일 뿐입니다. 공급자의 실제 구성을 모르면 확실히 알 수 없습니다.

관련 정보