나는 나만의 Debian 버전(trixie, 6.1.0-9-amd64)을 실행하고 있습니다. 네트워크 네임스페이스를 설정하고 이를 통해 VPN 트래픽을 라우팅하기 위해 사용자 지정 systemd 서비스를 설정했습니다(서비스는 1년 넘게 완벽하게 작동했습니다). 최신 시스템 업데이트 후 다음과 같이 네트워크 네임스페이스 생성이 실패합니다.
종속 작업[이메일 보호됨]실패. 자세한 내용은 "journalctl -xe"를 참조하세요.
다음은 Journalctl의 관련 (희망하는) 줄입니다.
Sep 29 23:23:50 [redacted] systemd[1]: /lib/systemd/system/[email protected]:10: Failed to resolve unit specifiers in 'netns@%I.service', ignoring: Invalid slot
Sep 29 23:23:54 [redacted] systemd[1]: Starting [email protected] - Named network namespace ovpn...
Sep 29 23:23:54 [redacted] env[xxxx]: umount: /var/run/netns/ovpn: not mounted.
Sep 29 23:23:54 [redacted] systemd[1]: [email protected]: Main process exited, code=exited, status=32/n/a
░░ Subject: Unit process exited
░░ An ExecStart= process belonging to unit [email protected] has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 32.
Sep 29 23:23:54 [redacted] systemd[1]: Dependency failed for [email protected] - NAT service for netns ovpn.
Sep 29 23:23:54 [redacted] systemd[1]: [email protected]: Job [email protected]/start failed with result 'dependency'.
"...의 단위 지정자를 확인할 수 없습니다." 오류는 이제 네임스페이스 구성 파일에 문제가 있음을 나타내지만 %I/%i
이를 탈출하려고 시도했지만 소용이 없었습니다. 이 오류를 일으키는 또 다른 원인은 무엇입니까?
추가하려면 수정하세요.
나는 파일을 호출하고 실행할 것이라고 생각되는 시작 네임스페이스를 사용합니다.'systemctl start [email protected]
[이메일 보호됨]':
[Unit]
Description=NAT service for netns %I
Documentation=https://github.com/Jamesits/systemd-named-netns
BindsTo=netns@%i.service
After=netns@%i.service
Before=network.target network-online.target
Conflicts=netns-bridge@%i.service
JoinsNamespaceOf=netns@%I.service
[Install]
WantedBy=network-online.target
WantedBy=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/env netnsinit nat %I up outside
ExecStart=/usr/bin/env ip netns exec %I /usr/bin/env netnsinit nat %I up inside
ExecStop=/usr/bin/env ip netns exec %I /usr/bin/env netnsinit nat %I down inside
ExecStop=/usr/bin/env netnsinit nat %I down outside
스크립트는 netnsinit
다음에서 찾을 수 있습니다.https://github.com/Jamesits/systemd-named-netns/blob/master/scripts/netnsinit
답변1
위에서 정확히 무슨 일이 일어나고 있는지는 모르지만 내 데비안 설정에 더 깊은 문제가 있는 것 같습니다(다른 프로그램에서 알 수 없는 세그폴트가 발생하기 시작했습니다). 데비안을 처음부터 다시 설치하고 네임스페이스를 다시 설정한 후 모든 것이 잘 작동했습니다.