DNS 확인을 처리할 준비가 된 경우에만 시작되도록 사용자 지정 systemd 서비스를 구성하려면 어떻게 해야 합니까?
이 서비스는 시작되자마자 장치의 현재 WAN 및 LAN IP 주소를 나에게 보내는 일회성 스크립트입니다. 예전에는 작동했는데 Pi-hole 설치 후 부팅시 자동으로 실행이 멈춥니다. 서비스를 수동으로 트리거하는 것은 sudo systemctl start mail-ip-at-boot.service
여전히 작동합니다.
시작 시 이름 확인 문제(예: 메일 서버의 호스트 이름)로 인해 실패합니다. 에서 /var/log/syslog
:
sendemail[1182]: ERROR => Connection attempt to smtp.<myisp>:25 failed IO:Socket::INET6 getaddrinfo: Temporary failure in name resolution.
비슷한 문제가 보고되었습니다 dig
(mailip 스크립트에서 사용함): dig: couldn't get address for 'resolver1.opendns.com': failure
. 저는 Resolver1 호스트 이름을 고정 IP 주소로 대체하여 이 문제를 해결했습니다. 물론 이것은 단지 해결 방법일 뿐입니다.
이 솔루션은 Pi-hole 설치 여부에 관계없이 작동합니다.
다음은 현재 서비스 정의입니다.
me@raspberripi:~$ cat /etc/systemd/system/mail-ip-at-boot.service
[Unit]
Description=Mail WAN and LAN IP address
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mailip.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
임시 해결 방법:
- 방법 1(작동하지 않음) 을 사용하고 있는 것 같습니다
nss-lookup.target
. "모든 호스트/네트워크 이름 서비스 조회의 동기화 지점으로 사용해야 하는 대상"이라고 설명되어 있습니다. (바라보다https://www.freedesktop.org/software/systemd/man/systemd.special.html). 예를 들어 다음 지시문과 함께 사용됩니다.
Wants=network-online.target nss-lookup.target
After=network-online.target nss-lookup.target
유망해 보이지만 방법 1은 작동하지 않는 것 같습니다.
- 방법 2. 참조하여 진행했습니다 . 해당 지침으로 인해 pihole-FTL을 사용할 수 없는 경우에도 여전히 작동하는 것
pihole-FTL.service
같습니다 .Wants
바라보다https://unix.stackexchange.com/a/423724/40237
Wants=network-online.target pihole-FTL.service
After=network-online.target pihole-FTL.service
2번 방법은 파이홀과의 커플링을 생성하기 때문에 전혀 마음에 들지 않습니다. 나쁜 습관
답변1
호스트 이름 조회가 제대로 작동할 때까지 차단하는 새로운 일회성 서비스를 만듭니다. 예를 들어 다음과 같습니다.
[Unit]
Description=Wait for DNS
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'while ! host smtp.example.com; do sleep 1; done'
그런 다음 "메일 WAN 및 LAN IP 주소" 서비스가 이에 따라 달라지도록 만드세요.
[Unit]
Description=Mail WAN and LAN IP address
Wants=network-online.target wait-for-dns.service
After=network-online.target wait-for-dns.service
...