GNU/Linux >> Belajar Linux >  >> Debian

Debian – Tidak Yakin Apa yang Memulai File Unit Systemd Ini?

Jadi saya telah melihat konfigurasi openvpn di server berbasis Debian 9 saya dan menemukan sesuatu yang tidak dapat saya jelaskan di file unit systemd untuk daemon openvpn. Daemon itu sendiri mulai dan bekerja tanpa masalah, tetapi saya tidak tahu mengapa… Mari saya jelaskan 🙂

Jadi saya telah menginstal openvpn dan memiliki konfigurasi yang tepat di /etc/openvpn/server.conf mengajukan. Tidak ada yang salah sejauh ini.

Namun ternyata ada dua unit systemd yang berjalan untuk openvpn, yaitu openvpn.service dan [dilindungi email] . Yang terakhir tampaknya menjadi orang yang benar-benar menerima koneksi vpn masuk dan semacamnya, yang pertama tampaknya tidak berbuat banyak sama sekali. Tampaknya hanya berjalan untuk memulai yang terakhir, saya kira ...

Memeriksa /etc/systemd/system/multi-user.target.wants/ direktori untuk file terkait openvpn hanya menampilkan file openvpn.service, yang sumbernya merupakan symlink ke file bernama serupa di /lib/systemd/system. Isi dari file ini adalah:

# 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

OK keren. Jadi ini hanya berjalan /bin/true. Lalu apa sebenarnya yang memulai [email protected] daemon? Saya tahu bahwa file unit untuk ini /lib/systemd/[email protected] tetapi saya tidak dapat menemukan petunjuk apa pun di sistem saya tentang apa sebenarnya yang menjalankan file unit ini. (Saya berharap menemukan symlink untuk ini di bawah /etc/systemd/system di suatu tempat, tetapi tidak ada.) Isi file ini adalah:

[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

Jadi file unit ini memiliki lebih banyak substansi daripada file openvpn.service. Tapi apa yang memulainya? Saya melihat PartOf=openvpn.service bagian dalam file di atas, tetapi mencari maknanya di halaman manual tidak membuat saya lebih bijaksana.

Saya akan terus mencari karena saya hanya ingin tahu apa yang membuat hal ini menarik!

Jika Anda memiliki petunjuk tentang bagaimana file unit khusus ini dijalankan, atau apa yang memulainya, beri tahu saya 🙂

Jawaban yang Diterima:

Anda perlu mengetahui dua hal:

  • Ada beberapa lagi tidak berdokumen direktori tempat systemd menyimpan file unit.
  • Debian dan Ubuntu menyediakan generator di /lib/systemd/system-generators/openvpn-generator yang menempatkan tautan simbolik "ingin" ke salah satu direktori tidak berdokumen tersebut, satu untuk setiap *.conf file di /etc/openvpn .

Tautan simbolis menyebabkan openvpn.service berperilaku seperti target dan "menginginkan" semua berbagai contoh template Anda; seperti yang dijelaskan oleh komentar di awal unit layanan.

Perhatikan bahwa Debian dan Ubuntu tidak selaras dengan apa yang sendiri oleh orang OpenVPN supply untuk systemd, yang digunakan pada Arch, CentOS, Fedora, dan sejenisnya. Debian dan Ubuntu sepenuhnya menggantikan apa yang disediakan di OpenVPN sendiri untuk semua ini, dengan barang-barang mereka sendiri untuk systemd. Jadi setidaknya berhati-hatilah saat membaca doco sistem operasi apa yang diasumsikan oleh doco Anda miliki.

Terkait:Linux – Bagaimana cara beralih antara sesi tty dan xorg?

Orang-orang OpenVPN dulu berikan [email protected] unit template tetapi tidak ada generator atau openvpn.service target-sebagai-layanan. Seseorang harus secara eksplisit mengaktifkan dan menonaktifkan [email protected]name sendiri dengan mekanisme systemd biasa untuk melakukannya, dan mereka "dicari" secara langsung oleh multi-user.target , bukan oleh target-as-a-service perantara.

Orang-orang OpenVPN saat ini berikan [email protected] . yang berbeda dan [email protected] template, terus tidak menyediakan generator atau openvpn.service target-as-a-service, dan mengharapkan Anda untuk secara eksplisit mengaktifkan dan menonaktifkan [email protected]name dan [email protected]name diri Anda dengan mekanisme systemd biasa untuk melakukannya. *.conf file telah dipindahkan dari /etc/openvpn dan ke /etc/openvpn/client dan /etc/openvpn/server , juga.

Bacaan lebih lanjut

  • Jonathan de Boyne Pollard (2016). “Jalur pencarian sistem tidak ada dari systemd.unit halaman manual“. Kesalahan untuk systemd dokter . Jawaban yang Sering Diberikan.
  • https://unix.stackexchange.com/a/233581/5132
  • https://unix.stackexchange.com/a/206490/5132
  • “konfigurasi layanan systemd“. OpenVPN . Wiki lengkung.
  • “konfigurasi layanan systemd“. OpenVPN . wiki Parabola.
  • Christian Hesse (2016-12-30). Pembaruan OpenVPN 2.4.0 memerlukan interaksi administratif . Berita utama.
  • https://askubuntu.com/a/640026/43344

Debian
  1. Perbaiki `Nama pengguna tidak ada dalam file sudoers. Insiden ini dilaporkan di Debian

  2. Bagaimana cara menggunakan Systemd untuk memulai kembali layanan saat down?

  3. redirect log layanan systemd ke file

  1. Mengaktifkan File Systemd Secara Kondisional Melalui Kemasan Debian?

  2. Systemd Unit File - WantedBy dan After

  3. File layanan ada tetapi tidak ditemukan oleh systemd

  1. Debian – Getty “askfirst” Dengan Systemd (“tekan Enter Untuk Mengaktifkan Konsol Ini”)?

  2. Debian – Cara Tepat Menggunakan Onfailure Di Systemd?

  3. Systemd:Tidak Dapat Menonaktifkan File Unit yang Dihasilkan?