Wireguard 연결을 설정한 후 SMB 공유를 마운트하려고 합니다. 그래서 나는 다음을 수행했습니다.
- Wireguard 구성이 생성되었습니다.
- 부팅 시 systemd가 연결을 시작하도록 허용
systemctl enable [email protected]
- fstab에 다음 항목을 추가합니다.
//192.168.0.10/home /mnt/smb cifs [email protected],credentials=/home/user/.smbcredentials,vers=3.0,uid=user,pid=user,users,_netdev 0 0
다시 시작한 후에는 네트워크 공유가 마운트되지 않습니다. fstab의 모든 항목이 systemd-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 [email protected],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 <[email protected]>. All Rights Reserved.
[ 27.752548] CIFS VFS: Error connecting to socket. Aborting operation.
[ 27.752576] CIFS VFS: cifs_mount failed w/return code = -115
다음을 기반으로스택오버플로우에 대한 질문, 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
[email protected],credentials=/home/user/.smbcredentials,vers=3.0,uid=user,gid=user,users,_netdev
mount -a
로그인 후 실행 하면 모든 것이 예상대로 작동합니다. 그래서 유닛 간의 타이밍 문제인 것 같아요. 따라서 나는 또한 내 자신의 시스템 단위를 만들고 fstab에서 항목을 삭제했습니다.
[Unit]
Description=Homeserver SMB
Before=remote-fs.target
[email protected]
[email protected]
[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 옵션을 사용할 수 있나요?
답변1
서비스가 시작되었다고 해서 wireguard에서 설정한 인터페이스가 준비되지 않은 것이 아닌가 의심됩니다. 귀하의 질문은 다음과 같습니다.이와 관련이 경우 해결책은 가상 장치를 기다리는 것입니다.
After=network.target [email protected]
Requires=sys-devices-virtual-net-wg0.device