wireguard 후에 fstab 또는 systemd를 사용하여 smb 공유 마운트

wireguard 후에 fstab 또는 systemd를 사용하여 smb 공유 마운트

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

관련 정보