데비안 호스트의 LXC 컨테이너에서 openvpn을 실행하는 방법은 무엇입니까?


4

호스트에서 데비안 스트레치를 실행하고 있으며 Ubuntu xenial LXC 게스트 내부에서 openvpn을 구성하려고합니다.

openvpn에는 tun 장치가 필요하기 때문에 컨테이너 내에서 tun 장치를 만들 수 있도록 http://heider.io/blog/2013/10/26/openvpn-in-a-lxc-container/ 와 같은 가이드를 따랐습니다 .

불행히도 lxc.cgroup.devices.allow = c 10:200 rwm컨테이너의 구성 파일을 설정하면이 오류가 발생합니다.

  lxc-start ERROR    lxc_cgfsng - cgroups/cgfsng.c:cgfsng_setup_limits:1949 - No such file or directory - Error setting devices.allow to c 10:200 rwm for ubuntu
  lxc-start ERROR    lxc_start - start.c:lxc_spawn:1236 - Failed to setup the devices cgroup for container "ubuntu".
  lxc-start ERROR    lxc_start - start.c:__lxc_start:1346 - Failed to spawn container "ubuntu".

편집하다

권한이없는 LXC 컨테이너 에서이 작업을 수행하려고합니다.이 컨테이너의 전체 구성은 다음과 같습니다.

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.include = /usr/share/lxc/config/ubuntu.userns.conf
lxc.arch = x86_64

# Container specific configuration
lxc.id_map = u 0 100000 65536
lxc.id_map = g 0 100000 65536
lxc.rootfs = /home/myuser/.local/share/lxc/ubuntu/rootfs
lxc.rootfs.backend = dir
lxc.utsname = ubuntu

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = 00:11:22:aa:bb:cc
lxc.network.ipv4 = 192.168.1.101/24
lxc.network.ipv4.gateway = 192.168.1.1

# trying to get /dev/net/tun inside container
lxc.cgroup.devices.allow = c 10:200 rwm

컨테이너를 시작하기 위해 devices.allow 옵션을 설정하지 않으면 컨테이너 내부의 프로세스가 cgroup에 있습니다 /sys/fs/cgroup/devices/user.slice(컨테이너 외부에서 본 PID는 실제로이 cgroup.procs하위 디렉토리 의 파일에 있음). 그리고 여기에서 :

$ cat devices.list 
a *:* rwm

컨테이너 내부에서

# mknod /dev/net/tun c 10 200
mknod: /dev/net/tun: Operation not permitted

“장치”제어 그룹에 대한 커널 지원이 없을 수 있습니다.
Daniel B

왜 컨테이너에서 이것을 정확히하고 싶습니까? 컨테이너 오버 헤드가없는 것을 제외하고 컨테이너와 동일한 두 번째 네트워크 네임 스페이스를 설정하여보다 쉽게 ​​수행 할 수 있습니다.
MariusMatutiae

@MariusMatutiae : 테스트 목적으로 가상 머신을 실행하지 않고도 완전한 기능을 갖춘 Linux 컨테이너를 원합니다.
오메가

@DanielB : 어떻게 확인할 수 있습니까? 내가 무엇을 할 수 있습니까?
오메가

그래서 현재 데비안을 처음부터 설치했으며 옵션이 제대로 작동합니다. 모든 cgroup 파일 시스템 (cpuset, cpu / cpuacct, 장치, 냉동고, net_cls / net_prio, blkio 및 perf_event)이에 올바르게 마운트되어 있는지 확인하십시오 /sys/fs/cgroup. 그렇지 않은 경우 부팅 구성에 오류가있을 수 있습니다. systemd를 실행하고 있습니까? 데비안 설치가 오래되고 업그레이드 되었습니까?
Daniel B

답변:


1

첨가

lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file

컨테이너의 구성 파일에서 컨테이너 내부의 tun char 장치를 바인 마운트하여 문제를 해결하십시오.


고마워, 이것은 나를 위해 일했지만 컨테이너 내부의 루트로 openvpn을 실행하는 것을 잊지 마십시오 (sudo를 사용하는 것을 잊어 버렸고 다른 곳에서 문제가 발생했다고 생각했습니다).
baptx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.