web-dev-qa-db-ja.com

LXCコンテナにipv6で直接アクセスできるようにする

まず、専用サーバーに特別なIPv6アドレスを割り当てます。1つだけです。:: 1/128アドレス。 しかし eth0にアドレスを割り当てることができます(例::: 2/128、:: 3/128など)。

今度はそのサーバーでLXCコンテナーを実行したいのですが、それらをファーストクラスの市民にし、独自のIPv6アドレスを持たせたいと思います。

IPv4を使用したLXCは正常に動作します。コンテナを起動して、そこから世界にpingを送信できます。 lxcbr0というブリッジデバイスがあります。

正直なところ、どうすればいいのかわかりません。私が持っている特定のLXC設定で(「prefix」は割り当てられた、まあ、プレフィックスを表します):

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

今、私は道に迷っています。 I thinkブリッジに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を実行することもできません。ルーティングにビジネスがあることは知っています...?

現在の状態の出力:ホスト '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 

ホストはUbuntu15.04、LXCバージョン1.1.2を実行します。

私はいくつかのポインタをいただければ幸いです!

5
harm

あなたはここで多くの異なることを混同しているように私には思えます。まず、サーバーのイーサネットポートのネットマスクが実際には/ 128であるとは思えません。それは別のもの(おそらく/ 64)であり、他の多くの顧客と共有セグメントにいるのではないかと思います。

「ip-6a」コマンドの出力から判断すると、次のようになります。

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インターフェースに接続し、各コンテナーのアドレスをそのブリッジインターフェースに割り当てることだけです。

繰り返しますが、これはあなたが提供したデータに基づく最良の推測です。プロバイダーの実際の構成を知らなければ、確実に判断することは不可能です。

2
Owen DeLong