openvpn의 systemd 장치: .ovpn으로 끝나는 구성 파일을 사용하는 방법은 무엇입니까?

openvpn의 systemd 장치: .ovpn으로 끝나는 구성 파일을 사용하는 방법은 무엇입니까?

기본적으로 systemd openvpn 클라이언트 장치 파일은 모든 구성 파일이 .conf.로 끝나는 것으로 가정합니다 .ovpn. 내 환경에서는 파일 확장자를 변경하는 것이 바람직하지 않습니다.

기본 openvpn 클라이언트 장치 파일은 다음과 같습니다./usr/lib/systemd/system/[email protected]

[Unit]
Description=OpenVPN tunnel for %I
After=syslog.target network-online.target
Wants=network-online.target
Documentation=man:openvpn(8)
Documentation=https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO

[Service]
Type=notify
PrivateTmp=true
WorkingDirectory=/etc/openvpn/client
ExecStart=/usr/bin/openvpn --suppress-timestamps --nobind --config %i.conf
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ProtectSystem=true
ProtectHome=true
KillMode=process

[Install]
WantedBy=multi-user.target

ExecStart이렇게 파일을 편집하고 .conf 확장자를 제거하여 줄을 변경하면 안되는 이유가 있나요 ?

ExecStart=/usr/bin/openvpn --suppress-timestamps --nobind --config %i

이 경우 확장명을 포함한 전체 구성 파일 이름을 systemctl에 전달합니다. systemd에 관한 한 확장 기능을 포함하면 문제가 발생합니까? 파일 확장자를 사용할 수 없는 다른 이유가 있나요?

라인 관련 질문 ExecStart:

일반적으로 내 openvpn 명령줄에는 --daemonsystemd를 통해 시작할 때 필요하지 않습니까? 위에는 포함되어 있지 않은 것으로 나타났습니다. 데몬으로 실행하려면 이를 포함해야 합니까?

또한 왜 --suppress-timestamps포함되어 있습니까? 현재 로그/로그에 중복된 타임스탬프가 표시되지 않습니다. systemd를 통해 부팅하면 상황이 바뀌나요?

제가 제안한(테스트되지 않은) 유닛 파일은 다음과 같습니다.

[Unit]
Description=OpenVPN tunnel for %i
After=syslog.target network-online.target
StartLimitIntervalSec=0
Wants=network-online.target

[Service]
Type=notify
PrivateTmp=true
WorkingDirectory=/etc/openvpn/client
ExecStart=/usr/bin/openvpn --suppress-timestamps --nobind --daemon --config %i
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ProtectSystem=true
ProtectHome=true
KillMode=process
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

답변1

확장자가 없어도 작동해야 하며, 이는 단지 유닛 파일에 의해 설정된 규칙일 뿐입니다. systemctl단위 이름의 점에 대해 불평하지 마십시오.

systemd 장치는 일반적으로 시작하는 명령을 데몬화하지 않으므로 systemd가 실행 중인 프로세스를 더 쉽게 추적할 수 있습니다.

--suppress-timestamps어쨌든 시간이 추가되기 때문일 것입니다 journald. 둘 다 시도해보고 차이점을 확인해 보세요.

관련 정보