Previous Article Next Article 使用 systemctl restart named.service 卻啟動失敗
Posted in Linux

使用 systemctl restart named.service 卻啟動失敗

使用 systemctl restart named.service 卻啟動失敗 Posted on 2018 年 09 月 12 日Leave a comment

重啟 systemctl restart named.service

Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.

查看狀態 systemctl status named.service

named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 二 2018-09-11 15:21:20 CST; 15s ago
Process: 30412 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=1/FAILURE)
Main PID: 10158 (code=exited, status=0/SUCCESS)

9月 11 15:21:18 localhost bash[30412]: zone ssorc.tw/IN: loaded serial 2011122802
9月 11 15:21:18 localhost bash[30412]: zone ssorc.tw/IN: ssorc.tw/MX 'mail.ssorc.tw' has no address records (A or AAAA)
9月 11 15:21:18 localhost bash[30412]: zone ssorc.tw/IN: loaded serial 2011051200
9月 11 15:21:18 localhost bash[30412]: zone ssorc.tw/IN: loaded serial 2014070318
9月 11 15:21:18 localhost bash[30412]: zone ssorc.tw/IN: ssorc.tw/MX 'mail.ssorc.tw' has no address records (A or AAAA)
9月 11 15:21:18 localhost bash[30412]: zone ssorc.tw/IN: loaded serial 2011051200
9月 11 15:21:20 localhost systemd[1]: named.service: control process exited, code=exited status=1
9月 11 15:21:20 localhost systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).
9月 11 15:21:20 localhost systemd[1]: Unit named.service entered failed state.
9月 11 15:21:20 localhost systemd[1]: named.service failed.

或 journalctl -xe 或 journalctl -u named.service 查看

檢查一下 zone 檔

named-checkzone ssorc.tw /var/named/ssorc.tw.db

它是 OK 的,但是有檢查出 MX 沒有指定 A 記錄

zone ssorc.tw/IN: ssorc.tw/MX 'mail.ssorc.tw' has no address records (A or AAAA)
zone ssorc.tw/IN: loaded serial 2013073100
OK

它是能被 named 允許的,但 systemctl 收到了訊息是有誤,因為

在 /usr/lib/systemd/system/named.service 裡看到它定義了一行

ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi'

就是因為啟動 named 前會檢查 named-checkconf -z /etc/named.conf ,回應了 exit 1,所以啟動失敗

解決方式

1. 直接用 named -u named 啟動,如果要習慣 systemctl restart named.service 啟動的話,就不要這麼作了,只是暫時。
2. 改寫 ExecStartPre 檢查程式,想辦法讓它 exit 0
3. 註解 ExecStartPre 不檢查 zone
4. 或在 /etc/sysconfig/named 加入 DISABLE_ZONE_CHECKING=”yes”,並確認 named.service 檔裡面的 EnvironmentFile 是不是長這樣 EnvironmentFile=/etc/sysconfig/named,我剛看時是長這樣 EnvironmentFile=-/etc/sysconfig/named (多了 – dash),這點不考濾,這樣子是讓我改兩個地方了咧。

改了 named.service 後要 systemctl daemon-reload

最後,我先暫時使用第三點的方案,之後再弄出第二點的方案。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *