重啟 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
最後,我先暫時使用第三點的方案,之後再弄出第二點的方案。
留言