각각 공개 정적 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.8
및8.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