Systemd
使用 fstab 或 systemd 在wireguard 之後掛載smb 共享
在建立線保護連接後,我正在嘗試安裝 SMB 共享。因此我做了以下事情:
- 創建了一個wireguard配置
- 使 systemd 在啟動時啟動連接
systemctl enable wg-quick@wg0.service
- 將以下條目添加到 fstab
//192.168.0.10/home /mnt/smb cifs x-systemd.after=wg-quick@wg0.service,credentials=/home/user/.smbcredentials,vers=3.0,uid=user,pid=user,users,_netdev 0 0
重新啟動後,網路共享未掛載。知道 fstab 中的每個條目都轉換為 systemd-unit 後,我檢查了 unit 的狀態
systemctl status mnt-smb.mount
。● mnt-smb.mount - /mnt/smb Loaded: loaded (/etc/fstab; generated; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2022-02-09 16:55:28 CET; 1min 17s ago Where: /mnt/smb What: //192.168.0.10/home Docs: man:fstab(5) man:systemd-fstab-generator(8) Process: 496 ExecMount=/bin/mount //192.168.0.10/home /mnt/smb -t cifs -o x-systemd.after=wg-quick@wg0.service,credentials=/home/user/.smbcredentials,vers=3.0,uid=user,gid=user,users,_netdev (code=exited, status=32) Feb 09 16:55:28 homeserver systemd[1]: Mounting /mnt/smb... Feb 09 16:55:28 homeserver systemd[1]: mnt-smb.mount: Mount process exited, code=exited status=32 Feb 09 16:55:28 homeserver systemd[1]: Failed to mount /mnt/smb. Feb 09 16:55:28 homeserver systemd[1]: mnt-smb.mount: Unit entered failed state.
查看
dmesg
提供了以下資訊:[ 17.612210] Key type cifs.spnego registered [ 17.612253] Key type cifs.idmap registered [ 17.758816] wireguard: loading out-of-tree module taints kernel. [ 17.775249] wireguard: WireGuard 0.0.20191206 loaded. See www.wireguard.com for information. [ 17.775273] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. [ 27.752548] CIFS VFS: Error connecting to socket. Aborting operation. [ 27.752576] CIFS VFS: cifs_mount failed w/return code = -115
基於關於stackoverflow 的以下問題,我假設 115 表示“進行中”。如果wireguard vpn連接沒有啟動,我也看到了同樣的行為。
查看生成的單元文件:
# Automatically generated by systemd-fstab-generator [Unit] SourcePath=/etc/fstab Documentation=man:fstab(5) man:systemd-fstab-generator(8) Before=remote-fs.target [Mount] What=//192.168.0.10/home Where=/mnt/smb Type=cifs Options=x-systemd.after=wg-quick@wg0.service,credentials=/home/user/.smbcredentials,vers=3.0,uid=user,gid=user,users,_netdev
如果我
mount -a
在登錄後執行,一切都會按預期進行。所以我認為這是單位之間的時間問題。因此,我還創建了一個自己的 systemd 單元並從 fstab 中刪除了該條目:[Unit] Description=Homeserver SMB Before=remote-fs.target After=wg-quick@wg0.service Requires=wg-quick@wg0.service [Mount] Type=cifs What=//192.168.0.10/home Where=/mnt/smb Options=credentials=/home/user/.smbcredentials,vers=3.0,uid=user,gid=user,users [Install] WantedBy=multi-user.target
將其移至
/etc/systemd/system/mnt-smb.mount
並通過 啟動它systemctl enable mnt-smb.mount
。這適用於一次重新啟動,但在下次重新啟動後停止工作。問題:
- 如何解決這個時間問題?
- 可以在單元文件或 fstab 中使用哪些 systemd 選項?
我懷疑wireguard的介面設置還沒有準備好只是因為服務啟動了。您的問題可能與此有關,在這種情況下,解決方案是等待虛擬設備。
After=network.target wg-quick@wg0.service Requires=sys-devices-virtual-net-wg0.device