2020-06-02

Fedora Linux 上使用 ddclient 更新動態 DNS

我想在 Linux 上使用 no-ip 的動態 DNS 服務,但我一直無法使用官方的 DUC,之後發現 ddclient 這支軟體可以更新許多免費動態 DNS 的服務,於是試著用 ddclient 來更新 no-ip。

安裝 ddclient

sudo dnf install ddclient

修改 /etc/ddclient.conf

ddclient.conf 裡已經準備好許多動態 DNS 服務所需的設定,但沒有給 no-ip 用的,所以請自行加入以下這段
## No-IP
protocol=noip
use=web, web=checkip.dyndns.com/
server=dynupdate.no-ip.com
login=no-ip 的帳號
password='no-ip 的密碼' 
no-ip.domain   # 在 no-ip 申請的域名

執行 ddclient

sudo ddclient

可以登入 no-ip 的網站,去看看所設定的域名 IP 有沒有更新,可能不會馬上更新要等一下。

參考網頁:
  1. 使用 ddclient 更新 No-IP

Linux 上移除 No-IP 的 Dynamic DNS Update Client

no-ip 是個提供動態 DNS 服務的網站,在 Windows 環境下可以安裝它的 Dynamic DNS Update Client(DUC) for Windows 來更新域名對應的 IP。no-ip 也有提供 Linux 下的 Dynamic DNS Update Client,目前是 2.1.9 ,也有安裝及使用的教學

照著官方的教學安裝時,遇到「make: not founded」的訊息,在 Fedora Linux 下使用以下的指令就能安裝 make
sudo dnf group install "Development Tools"
之後照著官方教學即可。

問題來了,官方的 DUC 不能使用,所以我想將它移除,找了一下終於知道要怎麼移除了,先在 no-ip.2.1.9-1/Makefile 最後面加上以下這段
uninstall: ${TGT}
        rm ${BINDIR}/${TGT}
        rm ${CONFDIR}/no-ip2.conf
要注意 rm 前的空白是 Tab 造成的不是空格,如果使用空格會有錯誤。

之後 cd/usr/local/src/no-ip.2.1.9-1/ 執行
sudo make uninstall
sudo remove
就能移除 DUC 了。

參考網頁:
  1. How to Install the Dynamic Update Client on Linux
  2. How to uninstall noip-duc

Linux 自動網路校時

在 Hyper-V 虛擬機器上設定了 crontab 卻不會執行,後來發現不是 cron 的問題,而是虛擬機器的時鐘變慢了,導致 cron 不會按時執行。我的解決方法是利用網路校時,並且排進 crontab 每 30 分鐘就校時一次。

網路校時的指令是
sudo ntpdate time.stdtime.gov.tw
選用的 NTP 伺服器是 time.stdtime.gov.tw。接著將正確時間寫入硬體時鐘
sudo hwclock -w

利用 crontab 定期校時
*/30 * * * * root (/usr/sbin/ntpdate time.stdtime.gov.tw && /sbin/hwclock -w) &> /dev/null

原先我是設定每 6 小時校時一次,沒想到過了一晚再看虛擬機器裡的時鐘竟然慢了 12 小時,只好改成每 30 分鐘就校時一次,希望能有所改善。

在查資料的時候,才發現原來 Hyper-V 本身就有讓 VM 與 Host 對時的服務,但我不知道為什麼我的電腦上沒有作用。可能是因為語系的關係,查詢有開啟「時間同步化」服務的 VM 的 powershell script 要改成如下:
Get-VMIntegrationService -VMName * | Where {$_.Name -eq '時間同步化'} | Select-Object VMName, Name, Enabled


參考網址:
  1. Linux 設定 crontab 例行性工作排程教學與範例
  2. Linux 設定 NTP 同步系統時間,自動網路校時教學
  3. How To Fix Hyper-V Clock Skew Issues