추가 읽기

추가 읽기

그래서 Debian 9 기반 서버의 openvpn 구성을 살펴보던 중 openvpn 데몬의 systemd 유닛 파일에서 설명할 수 없는 내용을 발견했습니다. 데몬 자체가 시작되어 잘 작동하지만 이유를 모르겠습니다... 설명하겠습니다 :)

그래서 openvpn을 설치하고 올바르게 구성했습니다./etc/openvpn/server.conf문서. 지금까지는 문제가 없습니다.

그러나 openvpn에는 두 개의 시스템 장치가 실행되는 것으로 보입니다.VPN 서비스 열기그리고[이메일 보호됨]. 후자는 들어오는 VPN 연결을 실제로 허용하는 것으로 보이지만 전자는 전혀 많은 일을 하지 않는 것 같습니다. 분명 후자를 시작하는 게 맞는 것 같은데...

조사하다/etc/systemd/system/multi-user.target.wants/openvpn 관련 파일의 디렉터리에는 openvpn.service 파일만 표시됩니다. 해당 파일의 소스는 /lib/systemd/system에 있는 비슷한 이름의 파일에 대한 심볼릭 링크입니다. 파일 내용은 다음과 같습니다.

# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.

[Unit]
Description=OpenVPN service
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true
WorkingDirectory=/etc/openvpn

[Install]
WantedBy=multi-user.target

네, 나쁘지 않습니다. 따라서 이것은 /bin/true만 실행됩니다. 그래서 정확히 무슨 일이 시작됐나openvpn@서버악마? 나는 이것에 대한 단위 파일을 알고 있습니다/lib/시스템/[이메일 보호됨]하지만 내 시스템에서는 이 유닛 파일이 정확히 무엇을 실행하고 있는지에 대한 어떤 단서도 찾을 수 없습니다. (아래에서 심볼릭 링크를 찾고 싶습니다./etc/systemd/시스템어딘가에 있지만 아닙니다. ) 이 파일의 내용은 다음과 같습니다.

[Unit]
Description=OpenVPN connection to %i
PartOf=openvpn.service
ReloadPropagatedFrom=openvpn.service
Before=systemd-user-sessions.service
Documentation=man:openvpn(8)
Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO

[Service]
PrivateTmp=true
KillMode=mixed
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid
PIDFile=/run/openvpn/%i.pid
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
ProtectSystem=yes
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_READ_SEARCH CAP_AUDIT_WRITE
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw

[Install]
WantedBy=multi-user.target

따라서 이 단위 파일에는 openvpn.service 파일보다 더 많은 내용이 포함되어 있습니다. 그런데 무엇이 시작되었나요? 나는 알아차렸다부분=openvpn.service위 파일의 일부이지만 매뉴얼 페이지에서 그 의미를 찾아봐도 전혀 현명해지지 않습니다.

왜 이런 일이 발생했는지 알고 싶기 때문에 계속 검색하겠습니다!

이 특정 단위 파일이 어떻게 실행되거나 시작되는지에 대한 단서가 있으면 알려주십시오. :)

답변1

다음 두 가지를 알아야 합니다.

  • 몇 가지 더 있습니다문서화되지 않은systemd가 유닛 파일을 저장하는 디렉터리입니다.
  • 데비안과 우분투에서 사용 가능발전기/lib/systemd/system-generators/openvpn-generator"원하는" 심볼릭 링크를 문서화되지 않은 디렉토리 중 하나에 *.conf각 파일마다 하나씩 배치 합니다 /etc/openvpn.

기호 링크는 openvpn.service서비스 단위 시작 부분의 주석에 설명된 대로 대상처럼 작동하고 모든 다양한 템플릿 인스턴스화를 "원"하게 합니다.

Debian과 Ubuntu는 OpenVPN에서 서로 의견이 일치하지 않습니다.그들 자신Arch, CentOS, Fedora 등에서 사용되는 systemd 프로비저닝 Debian과 Ubuntu는 OpenVPN 자체에서 제공하는 모든 기능과 자체 시스템 기능을 완전히 대체합니다. 따라서 doco를 읽을 때 적어도 doco가 사용자가 가지고 있다고 가정하는 운영 체제에 대해 알고 있어야 합니다.

OpenVPN 사람들습관템플릿 단위를 제공 [email protected]하지만 생성기나 openvpn.service대상을 서비스로 제공하지는 않습니다. 이를 위해서는 일반적인 시스템 메커니즘을 사용하여 명시적으로 활성화 및 비활성화해야 하며 이는 "원하는" 것입니다.openvpn@name곧장multi-user.target중개 Target-as-a-Service를 통하지 않고 를 통해 이동하세요 .

OpenVPN 사람들지금다른 [email protected]템플릿을 제공하면 [email protected]계속해서 생성기나 대상을 서비스로 제공하지 않으며 openvpn.service이를 위해 일반 시스템 메커니즘을 사용하여 명시적으로 활성화 및 비활성화해야 합니다. 파일도 안팎으로 이동되었습니다.openvpn-service@nameopenvpn-client@name*.conf/etc/openvpn/etc/openvpn/client/etc/openvpn/server

추가 읽기

관련 정보