LXCコンテナーのパブリックIPアドレス


26

わかりました。だから、LXCコンテナでネットワークを作成する方法を知りたいです。他のウェブサイトから得られる曖昧な情報だけでなく、それらを機能させるための本当の初心者向けガイドです。ほとんどの例は基本的にテストする人々のために設定されているので、たとえば、Webサーバー。

Ubuntu 12.04 LTSを実行しています。LXCがインストールされており、コンテナーを作成、開始、停止できます。私のサーバーには明らかに公開IPがあります。また、パブリックIPを持つことができるようにコンテナを設定する方法を知りたいです。既に現在のコンテナからのブリッジが配置されているように見えるので、コンテナが動作するためにパブリックなDHCP範囲をコンテナに与えるか、コンテナに静的IPアドレスを手動で割り当てる必要があるようです。

コンテナにIPを静的に割り当てたい場合、どうすればよいですか?ホスト上のブリッジ構成に変更を加える必要がありますか?実際には、MACVLANオプションを使用する方が良いでしょうか?

任意の助けをいただければ幸いです。


私はLXCに精通していませんが、通常のispは1つのパブリックIPアドレスのみを提供します。複数の静的IPを含むパッケージがありますか?
wlraider70

パブリックフェーシングIPだけがユースケースではありません。2つのパブリックIPをロードバランサーコンテナに割り当てる必要がありますが、他のさまざまなサービス専用の専用LAN IPが必要です。こうすれば、異なるハードウェア上でコンテナを移動する場合、IPを移動するのと同じくらい簡単です(使用するコンポーネントの一部では、この点でDNSは機能しません)
David Parks

回答:


23

私のアプローチは、サーバーに単一のNICがあり、ホストとLXCゲストの間でそのNICを共有する必要があることを前提としています。これには、ブリッジの使用が含まれます。ブリッジは所有し、管理しeth0ます。これで、ホストはのbr0代わりに独自のネットワークを構成しますeth0。LXCゲストは、ブリッジに接続するように構成されています。

  1. ホスト上でsudo apt-get install bridge-utils

  2. ホストeth0で、ブリッジに置き換えます。

    これは危険です。これを間違えると、サーバーからロックアウトされる可能性があります。問題が発生した場合にこの変更を元に戻すことができるように、ローカルログインを有効にして、ローカルコンソールアクセスが機能していることを確認してください。

    /etc/network/interfaces

    1. 交換してくださいauto eth0auto br0
    2. 交換:

      iface eth0 inet dhcp
      

      で:

      iface br0 inet dhcp
          bridge_ports eth0
      

      静的なネットワーク構成がある場合は、次のものを置き換えます。

      iface eth0 inet static
          address ...
          netmask ...
          gateway ...
          etc.
      

      で:

      iface br0 inet static
          bridge_ports eth0
          address ...
          netmask ...
          gateway ...
          etc.
      

      行を変更eth0br0て追加するだけですbridge_ports eth0

    3. ホストを再起動します。これをローカルで実行sudo ifdown eth0している場合は、開始前に実行し、sudo ifup br0その後も実行します。ブリッジが立ち上がるまでに少し時間がかかる場合があるため、すべてが失われたとみなす前に、再起動後5分でブリッジを設定してください。

  3. 指定された名前付きLXCコンテナーをパブリックIPに移動するには:

    1. コンテナを停止します。
    2. ホストで、編集してに変更します。/var/lib/lxc/container_name/configlxc.network.linkbr0
    3. ホストで、通常どおりパブリックIPを編集および構成します(必要に応じてDHCPまたは静的構成)。インターフェイスはコンテナの観点から呼び出されることに注意してください。/var/lib/lxc/container_name/rootfs/etc/network/interfaceseth0
    4. コンテナを再起動します。
  4. 新しいLXCコンテナのデフォルトを変更する/etc/lxc/default.confには、ホスト上で編集し、に変更lxc.network.linkbr0ます。

  5. LXCが提供するNATブリッジをまったく必要としない場合(つまり、すべてのコンテナが代わりに新しいブリッジを使用する場合)、ホスト上で編集して/etc/default/lxc、に変更USE_LXC_BRIDGE"false"、ホスト上で実行しsudo service lxc restartます。


ありがとう!似たような質問がたくさんあります。しかし、この答えは最終的に私が仕事をするのに役立ちました。
Mausy5043

1

ロビー、この回答を投稿してくれてありがとう、私はこれを実現しようとして髪を風袋引きしており、これが唯一の有効な方法です!

他の管理者への指示を明確にするために、私が見つけ出したいくつかのことを言及すべきだと思いました。

私のホストには、ゲストのeth0に割り当てられた複数の静的IPエイリアスがありました。例:

iface eth0:1 inet static
  address 5.5.5.5
  netmask 255.255.255.5
  gateway 5.5.5.1
etc.

同じ方法でbr0をセットアップしたくないので、上記のRobieのようなエイリアスのないIPが1つだけ必要です。

5.5.5.5をコンテナdebian8に割り当てたいとしましょう。

編集/var/lib/lxc/debian8/etc/network/interfacesして追加:

iface eth0 inet static 
      address 5.5.5.5
      netmask 255.255.255.5
      gateway 5.5.5.1
    etc.

次に、次のコマンドを発行します。 route add default gw <gateway-ip, in my case 5.5.5.1>

その後、コンテナを再起動すると、すべてが正常に機能するはずです!:)


1

私は同じ問題を抱えていて、この解決策を持っています(迅速で汚い)。

server: eth0 = 10.1.0.77/24
server: lxdbr0 (lxd bridge) = 10.255.255.77/24

container: eth0 = 10.255.255.100/24 (same network as lxdbr0)
container: eth0:0 = 194.99.99.99/28  (public ip address on eth0 alias)

サーバー上: route add -host 194.99.99.99 gw 10.255.255.100 dev lxdbr0

また、必要に応じて、アップストリームルータにルートを追加します。

おそらく、最善の解決策ではありませんが、大きな努力を必要としません!乾杯。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.