고정 IP로 브리지 된 LXC 컨테이너 설정

각각 공개 정적 IP가있는 호스트에 여러 개의 LXC 컨테이너를 설정하려고합니다.

호스트가 최신 Ubuntu를 실행 중입니다. eth0이라는 단일 네트워크 인터페이스가 있습니다. 정적 IP는 인터넷에서 핑이 가능하며 이름은 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
        [...]

지금까지 eth0을 호스팅하기 위해 LXC 컨테이너 브리징을 포함한 다양한 온라인 소스를 사용 하여 공개 IP 를 설정하여이 설정을 도와 줄 수있었습니다.

컨테이너의 설정 파일은 다음과 같습니다.

lxc.network.type = veth
lxc.network.link = br0

문제가 발생했기 때문에이 파일에서 정적 lxc.network.ipv4 구성을 제거했습니다. 이 구성으로 lxc-ls –fancy를 실행하면 동일한 퍼블릭 IP가 두 번 출력됩니다. 또한 컨테이너 / 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가 무엇인지 SSHing하면 호스트에 연결됩니다.

편집 : 호스트에서 컨테이너의 정적 IP를 제거하는 것이 도움이되었지만 지금은 새로운 오류가 발생합니다. 호스트에서 컨테이너를 핑하려고하면 Redirect HostFrom, New nexthop이 발생합니다. 패킷은 게이트웨이에서 호스트로 반복적으로 전달됩니다. 호스트에서 추적 경로를 실행하면 첫 번째 중지가 게이트웨이에 있음을 나타냅니다. 그런 다음 다른 모든 경로는 * * *입니다. 컨테이너가 온라인인지 여부에 관계없이 동일한 문제가 발생합니다.



답변

사실 당신은 할 수 에서 주소와 게이트웨이를 설정 내에서 호스트 키워드를 사용하여 모든의 인터페이스를 만지지 않도록 컨테이너를하고 구성합니다 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 주소를 설정해야 합니다. 호스트에는 고유 한 IP 주소 만 있어야 합니다 .


답변

방금 우분투 14.04와 함께했습니다. 간단하다. /etc/network/interfaces컨테이너 내부 의 파일 을 편집 하고 다음을 설정해야합니다.

auto eth0
iface eth0 inet static
 address $IP
 netmask $NETMASK
 gateway $GW
 dns-nameservers $DNS

모든 변수를 원하는 값으로 바꾸십시오.

당신은 하지 마십시오 다른 작업을 수행해야합니다!

추신 : 일부 줄 앞의 공백을 확인하십시오. 필수입니다.


답변

내가 찾는 가장 빠른 방법은 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 주소가 해당 컨테이너로 설정됩니다.


답변

@Enrique Moreno Tent의 답변을 따른 후 lxc 컨테이너를 올바르게 설정할 수 있으므로 다른 항목을 설정하는 방법을 모르는 경우 더 자세히 설명합니다.

1. lxc-attach명령을 통해 LXC 컨테이너에 액세스

명령:

$ lxc-attach -n YOUR-CONTAINER-NAME

2. 현재 구성을 확인하십시오 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

“`

3. 주소, 넷 마스크 및 게이트웨이 얻기

ifconfig위 명령 의 결과를 보면 다음과 같습니다.

주소 는 원하는 주소 이며 10.0.3.166으로 변경할 수 있습니다.

넷 마스크 가 있습니다 : 255.255.255.0

게이트웨이 : 게이트웨이의 브로드 캐스트 주소는 10.0.3.255입니다.

위에서 볼 수 있듯이 현재 게스트 (컨테이너)를 채우는 데 필요한 모든 정보가 있습니다 /etc/network/interfaces.

4. dns-nameservers가치 얻기 .

다음 명령을 실행하십시오.

cat /etc/resolv.conf

하지만 어쩌면 최고의 구글 DNS, asre 사용 8.8.8.88.8.4.4

5. /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


답변