2017-01-24 12 views
1

LAN에 연결된 서버 집합이 있습니다. 나는 기계에 LXD 컨테이너를 설치하고 작업 할 수 있지만 나에게있어서 컨테이너를 네트워크에서 볼 수는 없다. 나는 아무 소용이 URL을 따라하려고했습니다 다음과 같이LAN을 통해 통신하는 LXD 컨테이너를 설정하는 방법

내 서버 설정은 다음과 같습니다

  1. eth0를 - 하드웨어 NIC가 인터넷에 연결되어 있습니다.
  2. eth1를 - 나는 설정에 lxdbr0 통해의 eth1 장치에 다리를하려고하면 하드웨어 NIC가 LAN

에 연결, 컨테이너는 LAN에 표시되지 않습니다. 브릿지 된 br0 장치를 수동으로 설치하려고 시도하고 eth1에 연결되고 DHCP를 사용하면 장치가 시작되지 않습니다.

내을/etc/네트워크/인터페이스

은 다음과 같습니다

iface lo inet loopback 

# The primary network interface 
iface eth0 inet static 
    address x.x.x.x 
    netmask 255.255.255.224 
    gateway x.x.x.x 

iface eth1 inet static 
    address 192.168.0.61/23 

iface br0 inet dhcp 
    bridge_ports eth1 
    bridge-ifaces eth1 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0 

auto lo eth0 eth1 br0 

는 LAN에 볼 수 있으며 인터넷에 연결할 수있는 컨테이너를 만들 수 있습니까? 우분투 16.04에

LXD의 V2.7은

답변

5

예, 이것은 매우 가능하다. LXD 2.3에 도입 된 모든 새로운 네트워킹 기능을 사용 해본 적이 없으므로 그 어떤 것도 말할 수는 없지만 꽤 간단한 네트워크 레이아웃을 원한다고 생각합니다. 따라서 이러한 기능이 작동하지 않을 수도 있습니다 . 나는 네트워크 레이아웃과 다소 비슷한 것을한다. 내 모든 서버에 4 개의 NIC가 있습니다. 첫 번째 2 개는 본드에 넣고 관리 네트워크에 연결하고 나머지 두 개는 LAG (다른 본드)에 넣고 모든 LXD 트래픽에 사용합니다. 내 LAG가 트렁크 포트로 설정되어 있고 연결할 수 있도록하려는 각 VLAN에 대해 VLAN 장치를 생성하기 위해 여러 개의 VLAN이 있습니다. 그런 다음 해당 VLAN 장치를 실제 컨테이너가 사용하는 브리지에 넣습니다.

모든 본딩 및 원시 VLAN 장치를 제거하고 본질적으로 동일한 설정 즉, LXD 호스트 관리 용 NIC 하나, LXD 컨테이너 트래픽 용 브리지 하나를 제거하십시오. 나는 기본 lxcbr0 장치를 사용하지 않지만 모든 개념은 동일해야합니다.

간단한 예를

먼저 NIC 또는 NIC의 당신의 다리의 일부가 될 것을 정의합니다. 귀하의 경우에는 마치 하나의 NIC (eth1)를 사용하고있는 것처럼 보입니다. NIC를 수동으로 설정해야합니다. 주소를 지정하지 마십시오.

auto eth1 
iface eth1 inet manual 

다음으로 브리지를 정의하면 여기에 IP 주소가 정의되지 않습니다. 컨테이너 안의 모든 컨테이너 IP를 할당하는 것을 선호합니다. 다리를 수동으로 설정하십시오. 컨테이너가 시작되면 장치가 시작됩니다.

auto br0 
iface br0 inet manual 
    bridge_ports eth1 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0 

이제이 브리지를 컨테이너 프로필에 사용하면됩니다.

[email protected]:~$ lxc profile show default 
name: default 
config: {} 
description: "" 
devices: 
    eth0: 
    name: eth0 
    nictype: bridged 
    parent: br0 

이제 컨테이너를 시작하고 네트워크 구성을 편집하십시오. 예를 들어 데비안 기반 시스템에서는 (컨테이너에있는)/etc/network/interfaces를 편집합니다. Red Hat 기반 시스템에서는/etc/sysconfig/network-scripts/ifcfg-eth0 (컨테이너 내)을 편집합니다. 다음은 데비안 예제입니다. 만큼

auto eth0 
iface eth0 inet dhcp 

DHCP는 (당신의 LXD 호스트)가 eth1를 네트워크에 노력하고 있습니다로는 주소를 확인하고 해당 네트워크에 라우팅 할 수 있어야 다음 용기에 연결되어 있습니다. 인터넷 액세스를 얻으려면 eth1을 인터넷에 액세스 할 수있는 서브넷에 연결해야하며 컨테이너에 의존하지 않아야합니다.

복잡한 네트워킹

서로 다른 VLAN의에 컨테이너를 넣어하려는 경우

더는 호스트에 결함 허용하려는, 또는 둘 다, 다음이 좀 더 설정이 필요합니다. 내 LXD 호스트에서 아래의 구성 파일을 사용합니다.

############################ 
# PHYSICAL NETWORK DEVICES # 
############################ 

# Management network interface 
auto enp2s0f0 
iface enp2s0f0 inet static 
    address 10.1.31.36/24 
    gateway 10.1.31.1 
    dns-nameserver 10.1.30.2 10.1.30.3 75.75.75.75 
    dns-search harmonywave.com 

#iface enp2s0f0 inet6 dhcp 

# Second network interface 
auto enp2s0f1 
iface enp2s0f1 inet manual 

# LXD slave interface (1) 
auto enp3s0f0 
iface enp3s0f0 inet manual 
    bond-master bond1 

# LXD slave interface (2) 
auto enp3s0f1 
iface enp3s0f1 inet manual 
    bond-master bond1 

########################## 
# BONDED NETWORK DEVICES # 
########################## 

# Bond network device 
auto bond1 
iface bond1 inet manual 
    bond-mode 4 
    bond-miimon 100 
    bond-lacp-rate 1 
    bond-slaves enp3s0f0 enp3s0f1 
    bond-downdelay 400 
    bond-updelay 800 

#################### 
# RAW VLAN DEVICES # 
#################### 

# Tagged traffic on bond1 for VLAN 10 
iface bond1.10 inet manual 
    vlan-raw-device bond1 

# Tagged traffic on bond1 for VLAN 20 
iface bond1.20 inet manual 
    vlan-raw-device bond1 

# Tagged traffic on bond1 for VLAN 30 
iface bond1.30 inet manual 
    vlan-raw-device bond1 

# Tagged traffic on bond1 for VLAN 31 
iface bond1.31 inet manual 
    vlan-raw-device bond1 

# Tagged traffic on bond1 for VLAN 42 
iface bond1.42 inet manual 
    vlan-raw-device bond1 

# Tagged traffic on bond1 for VLAN 50 
iface bond1.50 inet manual 
    vlan-raw-device bond1 

# Tagged traffic on bond1 for VLAN 90 
iface bond1.90 inet manual 
    vlan-raw-device bond1 

########################## 
# BRIDGE NETWORK DEVICES # 
########################## 

# Bridged interface for VLAN 10 
auto br0-10 
iface br0-10 inet manual 
    bridge_ports bond1.10 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0  

# Bridged interface for VLAN 20 
auto br0-20 
iface br0-20 inet manual 
    bridge_ports bond1.20 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0  

# Bridged interface for VLAN 30 
auto br0-30 
iface br0-30 inet manual 
    bridge_ports bond1.30 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0 

# Bridged interface for VLAN 31 
auto br0-31 
iface br0-31 inet manual 
    bridge_ports bond1.31 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0 

# Bridged interface for VLAN 42 
auto br0-42 
iface br0-42 inet manual 
    bridge_ports bond1.42 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0 

# Bridged interface for VLAN 50 
auto br0-50 
iface br0-50 inet manual 
    bridge_ports bond1.50 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0 

# Bridged interface for VLAN 90 
auto br0-90 
iface br0-90 inet manual 
    bridge_ports bond1.90 
    bridge_stp off 
    bridge_fd 0 
    bridge_maxwait 0 

하자. 먼저 물리적 NIC를 정의합니다. 그 부분은 PHYSICAL NETWORK DEVICES입니다. 첫 번째 NIC (내게는 eth0, 내게는 enp2s0f0)에 대해서는 내 것과 다른 점이 없습니다. 방금 정적으로 정의하고 주소를 지정합니다. 이 NIC에 대해 관리 네트워크에 주소를 할당합니다. 세 번째 및 네 번째 NIC는 컨테이너 트래픽에 사용됩니다. LAG에서 LACP를 사용하여 장치를 수동으로 정의하고 "bond1"에 대한 종속 장치로 만들려고했습니다.

다음으로 본드 장치를 정의합니다. 그 부분은 BONDED NETWORK DEVICES입니다. 이 경우 컨테이너 교통량에 대한 단 하나의 본드. 다시 매뉴얼로 설정하고 본드 모드를 4 (LACP)로 정의합니다. 다른 유형의 본드 (액티브 - 패시브, 액티브 - 액티브 등)를 쉽게 설정할 수 있습니다.

다음으로 스위치의 트렁크 포트에 물리적으로 연결된 세 번째 및 네 번째 NIC가 있으므로 트래픽에 실제로 태그가 지정되도록 dot1Q를 지정해야합니다. 컨테이너가있을 수있는 각 VLAN에 대해 원시 VLAN 장치를 만듭니다. "XX"가 VLAN ID 인 .XX를 추가합니다. 더 이상 필요하지 않습니다. 쉽게 식별 할 수 있도록이 작업을 수행합니다. 그런 다음 "vlan-raw-device"스탠자로 장치에 태그를 지정하십시오. 이것은 RAW VLAN DEVICES 섹션입니다.

마지막으로 BRIDGE NETWORK DEVICES 섹션에서 각 VLAN 장치에 대한 브리지를 만듭니다. 이것은 컨테이너가 실제로 사용할 것입니다. 다시, 나는 이것을 수동으로 설정하고 컨테이너 내부에 정의 된 IP 주소를 정의하지 않는다.

이제 컨테이너에 원하는 VLAN에 브리지가 무엇이든 할당해야합니다. 간단하게 모든 컨테이너를 구성하는 것을 피하기 위해 각 브리지/VLAN에 대한 프로필을 만듭니다. 예를 들어 여기 난 그냥이 시점에서 VLAN 31에 내가 원하는 모든 컨테이너에이 프로필을 할당 그런

[email protected]:~$ lxc profile show 31_vlan_int_server 
name: 31_vlan_int_server 
config: {} 
description: "" 
devices: 
    eth0: 
    name: eth0 
    nictype: bridged 
    parent: br0-31 
    type: nic 

VLAN 31에 대한 내 프로필이다 나는 DHCP와 같은 중 하나를 설정 내 컨테이너의/etc/네트워크/인터페이스 파일을 수 (DHCP가 해당 VLAN에서 활성화 된 경우) 또는 해당 VLAN의 일부인 고정 IP 주소를 제공하십시오.

전체 네트워크 레이아웃은 다음과 같습니다.

LXD Multi-VLAN setup

컨테이너 (LXD 작성하는) 다리 내부 veth 장치를 사용한다. 호스트는 원시 VLAN 장치를 브릿지에 추가하며 둘 다 실제 본드 장치를 사용하며, 실제 본드 장치는 실제 NIC를 사용합니다.마지막으로, 인터넷에 연결할 수없는 당신의 문제와 직결 된 당신의 용기가 사용하고 다리는 인터넷 접속이 있는지 확인

연결 문제에 관한

. 저는 단계별로 문제를 해결하는 방법을 선호합니다.

  1. eth1이 인터넷에 액세스 할 수 있는지 확인하십시오. 일시적으로 본드 및 브리지 구성을 제거하고 호스트에서 직접 eth1을 사용하십시오. 수동에서 정적으로 변경하고 IP 주소를 지정하십시오.
    • 호스트에서 NIC의 IP 주소를 핑 (ping) 할 수 있습니까?
      • 예? NIC가 작동 중이고 문제 해결을 계속하십시오. 아니? NIC가 제대로 설정되지 않으면 모든 것이 실패합니다.
    • 호스트에서 동일한 서브넷의 다른 호스트를 핑 할 수 있습니까?
      • 예? 스위칭이 올바르게 설정 되었으면 문제 해결을 계속하십시오. 아니? 네트워크 연결 문제. 상자 자체에서 발생할 수있는 고정 경로 지정 문제, 스위치의 가능한 문제
    • 호스트에서 다른 서브넷의 컴퓨터에 대해 ping을 수행 할 수 있습니까 (ping 8.8.8.8 시도)?
      • 예? 라우팅이 제대로 작동하면 문제 해결을 계속하십시오. 아니? 호스트에서 게이트웨이가 잘못 구성되었을 수 있습니다. 라우터에서 발생할 수있는 문제. 상자의 정적 라우팅에서 가능한 문제 (마지막 수단 게이트웨이 확인).
    • DNS 주소를 확인할 수 있습니까 (시도 ping www.google.com)?
      • 예? DNS 확인이 올바르게 설정 되었으면 문제 해결을 계속하십시오. 아니? DNS 확인 관련 문제. /etc/resolv.conf 또는 resolvconf 설정을 확인하십시오.
  2. 이 정적으로 다음 NIC가 올바르게 작동하는지 알고 설정되면 모든 eth1를 작업하는 경우. 다음 단계는 eth1을 수동으로 다시 변경하고 고정 IP를 제거한 다음 브리지를 다시 작성하는 것입니다. 이제 브리지 자체에 고정 IP 주소를 할당하고 1 단계의 모든 하위 단계를 반복하십시오.

모든 것이 성공적으로 이루어지면 브리지를 수동으로 다시 설정 한 후 컨테이너에 연결할 수 있어야합니다. 고정 IP 제거). 그렇지 않은 경우 컨테이너 (정적 또는 DHCP)에 주소를 가져 와서 1 단계의 하위 단계를 반복하십시오.