ホストに複数のLXCコンテナーをセットアップしようとしています。それぞれに独自のパブリック静的IPがあります。
私のホストは最新のUbuntuを実行しています。 eth0という名前の単一のネットワークインターフェイスがあります。静的IPはインターネットからping可能で、名前はeth0:210、eth0:211 ...です。コロンの後の数字は、アドレスの最下位バイトです。これらのインターフェイスに加えて、ホストのパブリックIPにbr0を設定しています。 lo、veth2LPP9A、およびlxcbr0インターフェイスもあります。 lxcbr0にはプライベートIPのアドレスがあります。
ホスト/ etc/network/interfacesは次のようになります。
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
[...]
これまでのところ、私は LXCコンテナーをホストeth0にブリッジして、パブリックIPを持つことができるようにする を含むさまざまなオンラインソースを使用して、これをセットアップするのを助けてきました。
コンテナの設定ファイルには次のものが含まれます:
lxc.network.type = veth
lxc.network.link = br0
問題が発生したため、このファイルから静的lxc.network.ipv4構成を削除しました。この構成でlxc-ls --fancyを実行すると、出力に同じパブリックIPが2回表示されます。さらに、コンテナの/ etc/network/interfacesのサブネット構成が混乱します。
コンテナのインターフェースファイルと言えば、次のようになります。
auto eth0
iface eth0 inet static
address [...]
netmask 255.255.255.255
#gateway [...]
dns-nameservers 8.8.8.8
post-up route add [...] dev eth0
post-up route add default gw [...]
post-down route del [...] dev eth0
post-down route del default gw [...]
ゲートウェイをコメントアウトして、このファイルにroute addコマンドを追加する必要がありました。そうしないと、コンテナーが起動するのに数分かかります。
ホスト上の/ proc/sys/net/bridge/bridge-nf- *ファイルはすべて0に設定されています。/proc/sys/net/ipv4/ip_forward値は1です。
問題は、コンテナーの「route -n」が正常に見えても、コンテナーからpingできないということです。コンテナーのIPであるはずのものにSSH接続すると、ホストに接続されます。
編集:コンテナーの静的IPをホストから削除すると助けになりましたが、今は新しいエラーが発生しています。ホストからコンテナにpingを実行しようとすると、Redirect HostFrom、New nexthopが発生します。パケットはゲートウェイからホストに繰り返し送信されます。ホストからtracerouteを実行すると、最初のストップがゲートウェイにあることがわかります。その後、他のすべてのルートは* * *です。コンテナーがオンラインかどうかに関係なく、同じ問題が発生します。
実際、あなたはcanアドレスとゲートウェイをwithinからHostそして、キーワード manual
を使用して、インターフェイスにまったく触れないようにコンテナを構成します。
これをゲスト内に配置します/etc/network/interfaces
:
auto eth0
iface eth0 inet manual
また、インターフェースを設定するために、それをコンテナの設定ファイルに任せます:
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxc-bridge-nat
lxc.network.ipv4 = 192.168.100.16/24
lxc.network.ipv4.gateway = auto
ゲストは、BIOSがすでにインターフェースをセットアップし、それを使用するように動作します。
特に探検 lxc.network.ipv4.gateway
。
ブリッジしているので、ホストではなくコンテナにIPアドレスを設定する必要がありますonly。ホストは自身の IPアドレスのみを持つ必要があります。
私が見つけて最も速い方法は、lxcプロファイルを使用することです
lxc profile list
-あなたが持っているすべてのプロファイルをリストするコマンド
lxc profile copy default minecraft
(これは新しいプロファイルの名前です)
次にlxc profile edit minecraft
これが出てきます
devices:
eth0:
ipv4.address: 192.168.1.114/24 - add this line and enter any ip address you like
name: eth0
nictype: macvlan - this is my setting
parent: enp0s25
type: nic
root:
path: /
pool: lxc_zfs
type: disk
name: mine
used_by:
それを保存します
次に、このようにLXCコンテナにプロファイルを割り当てます
lxc profile assign YOUR_CONTAINER_NAME YOUR_NEW_PROFILE_NAME
次に、コンテナを再起動すると、新しいIPアドレスがそのコンテナに設定されます
私は先日Ubuntu 14.04でそれをやった。簡単です。コンテナー内の/etc/network/interfaces
ファイルを編集して、次のように設定するだけです。
auto eth0
iface eth0 inet static
address $IP
netmask $NETMASK
gateway $GW
dns-nameservers $DNS
すべての変数を目的の値に置き換えます。
あなたDO N'T他に何もする必要はありません!
PS:一部の行の前のスペースに注意してください。それが必須です。
@Enrique Moreno Tentの回答に従ってlxcコンテナを正しくセットアップできたので、他のアイテムのセットアップ方法がわからない場合の対処方法について詳しく説明します。
lxc-attach
コマンドを使用してLXCコンテナにアクセスしますコマンド:
$ lxc-attach -n YOUR-CONTAINER-NAME
ifconfig
を使用して現在の構成を確認しますコマンド
root@mycontainer:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.3.160 netmask 255.255.255.0 broadcast 10.0.3.255
inet6 fe80::216:3eff:fec9:2fa0 prefixlen 64 scopeid 0x20<link>
ether 00:16:3e:c9:2f:a0 txqueuelen 1000 (Ethernet)
RX packets 62 bytes 7142 (7.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 60 bytes 9788 (9.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<Host>
loop txqueuelen 1 (Local Loopback)
RX packets 20285 bytes 175021803 (175.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 20285 bytes 175021803 (175.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
「」
上記のifconfig
コマンドの結果を見ると、次のことがわかります。
Addressは必要なアドレスです。10.0.3.166に変更できます。
ネットマスクがあります:255.255.255.0
Gateway:使用するゲートウェイの場合broadcastアドレスはここで10.0.3.255です
上記のように、現在、ゲスト(コンテナー)/etc/network/interfaces
に入力するために必要なすべての情報が揃っています。
dns-nameservers
値を取得します。次のコマンドを発行します。
cat /etc/resolv.conf
しかし、おそらく8.8.8.8
と8.8.4.4
/etc/network/interfaces
の編集auto eth0 iface eth0 inet static address 10.0.3.166 netmask 255.255.255.0 gateway 10.0.3.255 dns-nameservers 8.8.8.8