わかりました。だから、LXCコンテナでのネットワーキングの方法を知りたいです。他のウェブサイトから得られる曖昧な情報だけでなく、それらを機能させるための本当の初心者向けガイドです。ほとんどの例は基本的にテストする人々のために設定されているので、たとえば、Webサーバー。
Ubuntu 12.04 LTSを実行しています。LXCがインストールされており、コンテナーを作成、開始、停止できます。私のサーバーには明らかにパブリックIPがありますが、パブリックIPを持つことができるようにコンテナーをセットアップする方法を知りたいです。私の現在のコンテナから既にブリッジが配置されているように見えるので、コンテナが動作するためにパブリックなDHCP範囲をコンテナに与えるか、コンテナに静的IPアドレスを手動で割り当てる必要があるようです。
コンテナにIPを静的に割り当てたい場合、どうすればよいですか?ホスト上のブリッジ構成に変更を加える必要がありますか?実際には、MACVLANオプションを使用する方が良いでしょうか?
助けていただければ幸いです。
私のアプローチでは、サーバーに単一のNICがあり、そのNICをホストとLXCゲストの間で共有する必要があると想定しています。これには、ブリッジの使用が含まれます。ブリッジはeth0
を所有および管理します。ホストは、br0
ではなくeth0
で独自のネットワークを構成するようになりました。 LXCゲストは、ブリッジに接続するように構成されています。
ホストで、Sudo apt-get install bridge-utils
。
ホストで、eth0
をブリッジに置き換えます。
これは危険です。これを間違えると、サーバーからロックアウトされる可能性があります。問題が発生した場合にこの変更を元に戻すことができるように、ローカルログインを有効にしてローカルコンソールにアクセスしてください
/etc/network/interfaces
で:
auto eth0
をauto br0
に置き換えます。交換:
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.
eth0
のbr0
を変更し、bridge_ports eth0
行を追加するだけです。
ホストを再起動します。これをローカルで実行している場合は、開始する前にSudo ifdown eth0
を実行し、その後Sudo ifup br0
も実行します。ブリッジが立ち上がるまでに少し時間がかかる場合があるため、すべてが失われたとみなす前に、再起動後5分でブリッジを設定してください。
指定されたLXCコンテナをパブリックIPに移動するには:
/var/lib/lxc/container_name/config
を編集し、lxc.network.link
をbr0
に変更します。/var/lib/lxc/container_name/rootfs/etc/network/interfaces
を編集し、通常どおりパブリックIPを構成します(必要に応じてDHCPまたは静的構成)。インターフェースは、コンテナの観点からはまだeth0
と呼ばれていることに注意してください。新しいLXCコンテナのデフォルトを変更するには、ホストで/etc/lxc/default.conf
を編集し、lxc.network.link
をbr0
に変更します。
LXC提供のNATブリッジがまったく必要ない場合(つまり、すべてのコンテナが代わりに新しいブリッジを使用する場合)、ホスト上で/etc/default/lxc
を編集し、USE_LXC_BRIDGE
を"false"
に変更してから、ホストはSudo service lxc restart
を実行します。
私は同じ問題を抱えていて、この解決策を持っています(迅速で汚い)。
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
また、必要に応じて、アップストリームルータにルートを追加します。
おそらく、最善の解決策ではありませんが、大きな努力を必要としません!乾杯。
ロビー、この回答を投稿してくれてありがとう、私はこれを成功させるために私の髪を風袋引きしており、これがうまくいった唯一の方法です!
他の管理者への指示を明確にするために、私が見つけ出したいくつかのことを言及すべきだと思いました。
私のホストには、ゲストの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>
その後、コンテナを再起動すると、すべてが正常に機能するはずです! :)