systemd ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๋ฆด๋ฆฌ์Šค 248

248๊ฐœ์›” ๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž systemd 2์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ์‹œ์Šคํ…œ ๋””๋ ‰ํ„ฐ๋ฆฌ ํ™•์žฅ์„ ์œ„ํ•œ ์ด๋ฏธ์ง€, /etc/veritytab ๊ตฌ์„ฑ ํŒŒ์ผ, systemd-cryptenroll ์œ ํ‹ธ๋ฆฌํ‹ฐ, TPM2 ์นฉ ๋ฐ FIDO2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ LUKSXNUMX ์ž ๊ธˆ ํ•ด์ œ๋ฅผ ์œ„ํ•œ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ, ๊ฒฉ๋ฆฌ๋œ IPC ์‹๋ณ„์ž ๊ณต๊ฐ„์˜ ์‹คํ–‰ ์œ ๋‹›, ๋ฉ”์‹œ ๋„คํŠธ์›Œํฌ์šฉ BATMAN ํ”„๋กœํ† ์ฝœ, systemd-nspawn์šฉ nftables ๋ฐฑ์—”๋“œ. Systemd-oomd๊ฐ€ ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ :

  • /usr/ ๋ฐ /opt/ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ํ™•์žฅํ•˜๊ณ  ์ง€์ •๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งˆ์šดํŠธ๋œ ๊ฒฝ์šฐ์—๋„ ๋Ÿฐํƒ€์ž„์— ์ถ”๊ฐ€ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ ํ™•์žฅ ์ด๋ฏธ์ง€ ๊ฐœ๋…์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํ™•์žฅ ์ด๋ฏธ์ง€๊ฐ€ ๋งˆ์šดํŠธ๋˜๋ฉด ํ•ด๋‹น ์ฝ˜ํ…์ธ ๋Š” OverlayFS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ /usr/ ๋ฐ /opt/ ๊ณ„์ธต ๊ตฌ์กฐ์— ์˜ค๋ฒ„๋ ˆ์ด๋ฉ๋‹ˆ๋‹ค.

    ์‹œ์Šคํ…œ ํ™•์žฅ์˜ ์ด๋ฏธ์ง€๋ฅผ ์—ฐ๊ฒฐ, ์—ฐ๊ฒฐ ํ•ด์ œ, ๋ณด๊ธฐ ๋ฐ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ systemd-sysext๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถ€ํŒ… ์ค‘์— ์ด๋ฏธ ์„ค์น˜๋œ ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด systemd-sysext.service ์„œ๋น„์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์‹œ์Šคํ…œ ํ™•์žฅ ์ˆ˜์ค€์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด os-release ํŒŒ์ผ์— "SYSEXT_LEVEL=" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์žฅ์น˜์˜ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ํ™•์žฅ ์ด๋ฏธ์ง€๋ฅผ ๊ฐœ๋ณ„ ๊ฒฉ๋ฆฌ ์„œ๋น„์Šค์˜ FS ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ณ„์ธต ๊ตฌ์กฐ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ExtensionImages ์„ค์ •์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • dm-verity ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋ก ์ˆ˜์ค€์—์„œ ๋ฐ์ดํ„ฐ ํ™•์ธ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด /etc/veritytab ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ํ˜•์‹์€ /etc/crypttab - "section_name device_for_data device_for_hashes check_hash_root options"์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ ์žฅ์น˜์— ๋Œ€ํ•œ dm-verity ๋™์ž‘์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด systemd.verity.root_options ์ปค๋„ ๋ช…๋ น์ค„ ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • systemd-cryptsetup์€ LUKS11 ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ—ค๋”์—์„œ JSON ํ˜•์‹์œผ๋กœ PKCS#2 ํ† ํฐ URI์™€ ์•”ํ˜ธํ™”๋œ ํ‚ค๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์™ธ๋ถ€ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์•”ํ˜ธํ™”๋œ ์žฅ์น˜ ์—ด๊ธฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์žฅ์น˜ ์ž์ฒด์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • systemd-cryptsetup์€ ์ด์ „์— ์ง€์›๋œ PKCS#2 ํ† ํฐ ์™ธ์—๋„ TPM2 ์นฉ ๋ฐ FIDO2 ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ LUKS11 ์•”ํ˜ธํ™” ํŒŒํ‹ฐ์…˜ ์ž ๊ธˆ ํ•ด์ œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. libfido2 ๋กœ๋”ฉ์€ dlopen()์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ€์šฉ์„ฑ์€ ๊ณ ์ •๋œ ์ข…์†์„ฑ์ด ์•„๋‹Œ ์ฆ‰์„์—์„œ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.
  • ์•”ํ˜ธํ™” ๋ฐ ์•”ํ˜ธ ํ•ด๋…๊ณผ ๊ด€๋ จ๋œ I/O์˜ ๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด systemd-cryptsetup์˜ /etc/crypttab์— ์ƒˆ๋กœ์šด ์˜ต์…˜ "no-write-workqueue" ๋ฐ "no-read-workqueue"๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • systemd-repart ์œ ํ‹ธ๋ฆฌํ‹ฐ์—๋Š” TPM2 ์นฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ํŒŒํ‹ฐ์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ(์˜ˆ: ์ฒซ ๋ฒˆ์งธ ๋ถ€ํŒ… ์‹œ ์•”ํ˜ธํ™”๋œ /var ํŒŒํ‹ฐ์…˜ ์ƒ์„ฑ)์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • TPM2, FIDO2 ๋ฐ PKCS#11 ํ† ํฐ์„ LUKS ํŒŒํ‹ฐ์…˜์— ๋ฐ”์ธ๋”ฉํ•˜๊ณ , ํ† ํฐ์„ ๊ณ ์ • ํ•ด์ œ ๋ฐ ํ™•์ธํ•˜๊ณ , ์˜ˆ๋น„ ํ‚ค๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๊ณ , ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด systemd-cryptenroll ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ„๋„์˜ ์‹๋ณ„์ž์™€ ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฉ๋ฆฌ๋œ IPC ๊ณต๊ฐ„์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋‹จ์œ„ ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” PrivateIPC ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์ƒ์„ฑ๋œ IPC ์‹๋ณ„์ž ๊ณต๊ฐ„์— ์žฅ์น˜๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด IPCNamespacePath ์˜ต์…˜์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŠน์ • ๋ถ€๋ถ„์— noexec ํ”Œ๋ž˜๊ทธ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ExecPaths ๋ฐ NoExecPaths ์„ค์ •์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • systemd-networkd๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ธ์ ‘ ๋…ธ๋“œ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜๋Š” ๋ถ„์‚ฐํ˜• ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” BATMAN(Better Approach To Mobile Adhoc Networking) ๋ฉ”์‹œ โ€‹โ€‹ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ์œ„ํ•ด .netdev์˜ [BatmanAdvanced] ์„น์…˜, .network ํŒŒ์ผ์˜ BatmanAdvanced ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์ƒˆ๋กœ์šด ์žฅ์น˜ ์œ ํ˜• "batadv"๊ฐ€ ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค.
  • systemd-oomd ์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์— ๋Œ€ํ•œ ์กฐ๊ธฐ ๋Œ€์‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๊ตฌํ˜„์ด ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์žฅ์น˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ์ „์— ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด DefaultMemoryPressureDurationSec ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Systemd-oomd๋Š” PSI(Pressure Stall Information) ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ์ง€์—ฐ ์‹œ์ž‘์„ ๊ฐ์ง€ํ•˜๊ณ  ์‹œ์Šคํ…œ์ด ์•„์ง ์œ„ํ—˜ ์ƒํƒœ์— ์žˆ์ง€ ์•Š๊ณ  ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ๋‹จ๊ณ„์—์„œ ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ง‘์ค‘์ ์œผ๋กœ ์บ์‹œ๋ฅผ ๋‹ค๋“ฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์™‘ ํŒŒํ‹ฐ์…˜์œผ๋กœ ์˜ฎ๊ธฐ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • Tmpfs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RAM์— ์žˆ๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์— ๋ฃจํŠธ ํŒŒํ‹ฐ์…˜์„ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ ๋ช…๋ น์ค„ ๋งค๊ฐœ๋ณ€์ˆ˜ "root=tmpfs"๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ ํ‚ค ํŒŒ์ผ์„ ์ง€์ •ํ•˜๋Š” /etc/crypttab ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ AF_UNIX ๋ฐ SOCK_STREAM ์†Œ์ผ“ ์œ ํ˜•์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์†Œ์ผ“์— ์—ฐ๊ฒฐํ•  ๋•Œ ํ‚ค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ‚ค๋ฅผ ๋™์ ์œผ๋กœ ๋ฐœ๊ธ‰ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๋ฐ systemd-hostnamed์—์„œ ์‚ฌ์šฉํ•  ๋Œ€์ฒด ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์€ ์ด์ œ os-release์˜ DEFAULT_HOSTNAME ๋งค๊ฐœ๋ณ€์ˆ˜์™€ $SYSTEMD_DEFAULT_HOSTNAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. systemd-hostnamed๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์˜ "localhost"๋„ ์ฒ˜๋ฆฌํ•˜๊ณ  DBus๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ "HardwareVendor" ๋ฐ "HardwareModel" ์†์„ฑ์„ ๋‚ด๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋…ธ์ถœ๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๋ธ”๋ก์€ ์ด์ œ ์ปค๋„ ๋ช…๋ น์ค„ ๋ฐ ์œ ๋‹› ํŒŒ์ผ ์„ค์ •๋ฟ๋งŒ ์•„๋‹ˆ๋ผ system.conf ๋˜๋Š” user.conf์˜ ์ƒˆ๋กœ์šด ManagerEnvironment ์˜ต์…˜์„ ํ†ตํ•ด ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ ํƒ€์ž„์— execve() ๋Œ€์‹  fexecve() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ ํ™•์ธ๊ณผ ์ ์šฉ ์‚ฌ์ด์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ์œ„ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ TPM2 ์žฅ์น˜ ๋ฐ ๊ฐœ๋ณ„ CPU ๊ธฐ๋Šฅ์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์กฐ๊ฑด๋ถ€ ์ž‘์—… ConditionSecurity=tpm2 ๋ฐ ConditionCPUFeature๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ConditionCPUFeature=rdrand๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์„œ๊ฐ€ RDRAND ์ž‘์—…์„ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ).
  • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค๋„์˜ ๊ฒฝ์šฐ seccomp ํ•„ํ„ฐ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํ…Œ์ด๋ธ” ์ž๋™ ์ƒ์„ฑ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ ๋„ ์„œ๋น„์Šค์˜ ๊ธฐ์กด ๋งˆ์šดํŠธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ์ƒˆ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ฒด๋Š” 'systemctl bin' ๋ช…๋ น์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ...' ๋ฐ 'systemctl ๋งˆ์šดํŠธ ์ด๋ฏธ์ง€ โ€ฆ'.
  • StandardOutput ๋ฐ StandardError ์„ค์ •์—์„œ "truncate:" ํ˜•์‹์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ยป ์‚ฌ์šฉ ์ „ ์ฒญ์†Œ๋ฅผ ์œ„ํ•ด.
  • sd-bus์— ๋Œ€ํ•œ ๋กœ์ปฌ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์ง€์ •๋œ ์‚ฌ์šฉ์ž ์„ธ์…˜์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด "systemctl -user -M lennart@ start quux"์ž…๋‹ˆ๋‹ค.
  • ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” [Link] ์„น์…˜์˜ systemd.link ํŒŒ์ผ์— ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.
    • ๋ฌด์ฐจ๋ณ„(Promiscuous) - ์žฅ์น˜๋ฅผ "๋ฌด์ฐจ๋ณ„" ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜์—ฌ ํ˜„์žฌ ์‹œ์Šคํ…œ์— ์ฃผ์†Œ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ํŒจํ‚ท์„ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • TX ๋ฐ RX ๋Œ€๊ธฐ์—ด ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ TransmitQueues ๋ฐ ReceiverQueues;
    • TransmitQueueLength๋Š” TX ๋Œ€๊ธฐ์—ด ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. GenericSegmentOffloadMaxBytes ๋ฐ GenericSegmentOffloadMaxSegment๋Š” GRO(์ผ๋ฐ˜ ์ˆ˜์‹  ์˜คํ”„๋กœ๋“œ) ๊ธฐ์ˆ  ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ œํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • systemd.network ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ์„ค์ •์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค:
    • [๋„คํŠธ์›Œํฌ] RouteTable ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • [RoutingPolicyRule] ๋ผ์šฐํŒ… ์œ ํ˜•์— ๋Œ€ํ•œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค("๋ธ”๋ž™ํ™€, "์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ", "๊ธˆ์ง€").
    • [IPv6AcceptRA] ํ—ˆ์šฉ ๋ฐ ๊ฑฐ๋ถ€๋œ ๊ฒฝ๋กœ ๊ณต์ง€ ๋ชฉ๋ก์— ๋Œ€ํ•œ RouteDenyList ๋ฐ RouteAllowList.
    • [DHCPv6] DHCP์—์„œ ๋ฐœ๊ธ‰ํ•œ ์ฃผ์†Œ๋ฅผ ๋ฌด์‹œํ•˜๋ ค๋ฉด Addres๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
    • [DHCPv6PrefixDelegation] ManageTemporaryAddress;
    • ์ธํ„ฐํŽ˜์ด์Šค ํ™œ๋™์— ๊ด€ํ•œ ์ •์ฑ…์„ ์ •์˜ํ•˜๋Š” ActivationPolicy(ํ•ญ์ƒ UP ๋˜๋Š” DOWN ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ "ip link set dev" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ)
  • VLAN ํŒจํ‚ท ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด systemd.netdev ํŒŒ์ผ์— [VLAN] ํ”„๋กœํ† ์ฝœ, IngressQOSMaps, EgressQOSMaps ๋ฐ [MACVLAN] BroadcastMulticastQueueLength ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • /dev/sgx ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์‹คํ–‰ ๊ฐ€๋Šฅ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ noexec ๋ชจ๋“œ์—์„œ /dev/ ๋””๋ ‰ํ† ๋ฆฌ ๋งˆ์šดํŠธ๋ฅผ ์ค‘์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋™์ž‘์„ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด NoExecPaths=/dev ์„ค์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • /dev/vsock ํŒŒ์ผ ๊ถŒํ•œ์ด 0o666์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉฐ /dev/vhost-vsock ๋ฐ /dev/vhost-net ํŒŒ์ผ์ด kvm ๊ทธ๋ฃน์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•˜๋“œ์›จ์–ด ID ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ ˆ์ „ ๋ชจ๋“œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€์›ํ•˜๋Š” USB ์ง€๋ฌธ ์ธ์‹๊ธฐ๋กœ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • systemd-resolved์—๋Š” ์Šคํ… ํ™•์ธ์ž๋ฅผ ํ†ตํ•ด DNSSEC ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐœํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ํด๋ผ์ด์–ธํŠธ๋Š” ์ž์ฒด์ ์œผ๋กœ DNSSEC ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด, ์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋ณ€๊ฒฝ ์—†์ด ์ƒ์œ„ DNS ์„œ๋ฒ„๋กœ ํ”„๋ก์‹œ๋ฉ๋‹ˆ๋‹ค.
  • Resolved.conf์— CacheFromLocalhost ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •๋œ ๊ฒฝ์šฐ systemd-resolved๋Š” 127.0.0.1์˜ DNS ์„œ๋ฒ„์— ๋Œ€ํ•œ ํ˜ธ์ถœ์—๋„ ์บ์‹ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์š”์ฒญ์˜ ์บ์‹ฑ์€ ์ด์ค‘ ์บ์‹ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค).
  • systemd-resolved๋Š” ๋กœ์ปฌ DNS ํ™•์ธ์ž์— RFC-5001 NSID์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ์ปฌ ํ™•์ธ์ž ๋ฐ ๋‹ค๋ฅธ DNS ์„œ๋ฒ„์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • resolvectl ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค(๋กœ์ปฌ ์บ์‹œ, ๋„คํŠธ์›Œํฌ ์š”์ฒญ, ๋กœ์ปฌ ํ”„๋กœ์„ธ์„œ ์‘๋‹ต)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ์•”ํ˜ธํ™” ์‚ฌ์šฉ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ๊ฒฐ์ • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด --cache, --synthesize, --network, --zone, --trust-anchor ๋ฐ --validate ์˜ต์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • systemd-nspawn์€ ๊ธฐ์กด iptables ์ง€์› ์™ธ์— nftables๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฉํ™”๋ฒฝ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. systemd-networkd์˜ IPMasquerade ์„ค์ •์—๋Š” nftables ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • systemd-localed์—๋Š” ๋ˆ„๋ฝ๋œ ๋กœ์ผ€์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด locale-gen์„ ํ˜ธ์ถœํ•˜๋Š” ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • --pager/-no-pager/-json= ์˜ต์…˜์ด ํŽ˜์ด์ง• ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  JSON ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. SYSTEMD_COLORS ํ™˜๊ฒฝ ๋ณ€์ˆ˜(โ€œ16โ€ ๋˜๋Š” โ€œ256โ€)๋ฅผ ํ†ตํ•ด ํ„ฐ๋ฏธ๋„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ƒ‰์ƒ ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ„๋„์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ(๋ถ„ํ•  / ๋ฐ /usr)์™€ cgroup v1 ์ง€์›์ด ํฌํ•จ๋œ ๋นŒ๋“œ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Git์˜ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์ด '๋งˆ์Šคํ„ฐ'์—์„œ '๋ฉ”์ธ'์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€