web-dev-qa-db-ja.com

ローカルネットワークからlxdコンテナに到達します

OS:Ubuntu 15.10
LXD:2.0.0.rc5

同じローカルネットワーク上の別のコンピューターからコンテナーにアクセスする方法を知りたいです。

私のPC(LXDホスト)のアドレス:192.168.1.112 (enp3s0)
Xenialコンテナ:10.0.3.181 (eth0), 10.0.4.1 (lxcbr0)
他のPC(Fedora 23):192.168.2.118 (wlp3s0)

他のPCからLXDホストおよび他のPCにpingできます。

5
Paradiesstaub

目的を達成するには、いくつかの異なる方法があります。

  1. 必要なポートをホストからゲストに転送する
  2. ルートネットワーク
  3. ブリッジデバイス

オプション1および2では、ホストでip-forwardingを有効にする必要があります。

# run time:
Sudo sysctl -w net.ipv4.ip_forward=1

# permanent:
echo 'net.ipv4.ip_forward = 1' | Sudo tee /etc/sysctl.d/30-virt-network

ゲストのhttp(ポート80)などの特定のサービスにアクセスする場合(ホストip-address + portでゲストポート80にアクセスする)、その同じポートでホストサービスを実行できない場合、最も簡単です。

# on lxd Host: (-i HOSTDEVICE to lan, usually enp3s0 or eth0)
Sudo iptables -t nat -A PREROUTING -i enp3s0 -p tcp -m tcp --dport 80 -j DNAT --to 10.0.3.181:80
# making this permanent is left to the reader (because that depends on your choice of fw setup)

オプション2はよりトリッキーで、ネットワークをどの程度修正できるかによって異なります。

Sudo iptables -L -n)チェーンFORWARD(ポリシーACCEPT)またはSudo iptables -I FORWARD -s 192.168.2.118 -j ACCEPTが明示的に許可していることを確認してください。ここで、ネットワークファイアウォール上で10.0.3.0/24を192.168.1.112ホストにルーティングするか、192.168.2.118のルートでテストします。

Sudo ip route add 10.0.3.181 via 192.168.1.112 dev wlp3s0

3番目のオプションは、lanの一部としてlxdゲストをlanに移動します。 eth0(あなたの場合はenp3s0)をブリッジに変換する命令 実行方法を参照してください。要するに:

  1. ホストでブリッジデバイスを作成する
  2. eth0またはenp3s0をそのブリッジに追加します
  3. ホストアドレスをブリッジに設定します(enp3s0ではありません)
  4. Lxdゲストデバイスをそのブリッジにバインドします

    stop network-manager
    brctl addbr br0
    brctl addif br0 enp3s0
    ifconfig enp3s0 up
    ifconfig br0 up
    dhclient br0
    lxc profile edit default
      - change lxcbr0 to br0
    
5
Manwe

他のコンピューターはコンテナーとは異なるサブネット上にあるため、他のコンピューターにコンテナーに到達する方法を指示する必要があります。つまり、「ルート」を設定する必要があります。以下は、他のコンピューターで作成できるサンプルルートです。 「コンテナ(.181)に到達するには、まずホスト(.112)と同じネットワーク上にあるデバイスを使用してホスト(.112)を通過します。他のコンピューターが別のデバイスを使用している場合は、それに応じて変更します。このルートは永続的ではないことに注意してください; not再起動後も生き残ります。

Sudo ip route add 10.0.3.181 via 192.168.1.112 dev eth0
0
pmatulis