在 Linux 的 /etc/resolv.conf 裡可以設定你 Linux 本機 DNS 查詢是用那台 server
像
# cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4
# dig ssorc.tw (省略) ;; Query time: 18 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Sun Dec 15 08:32:34 CST 2024 ;; MSG SIZE rcvd: 69
一般情況下,會先從 8.8.8.8 這台去查,當查不到時,再去查 8.8.4.4
不過現在我要讓它輪替,交替查詢
在 /etc/resolv.conf 加入 options rotate
# cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 options rotate
再這樣子去驗證
strace -e trace=connect,sendto getent hosts ssorc.tw
結果 ↓ 會看到 inet_addr 的位址有在作變化
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")}, 16) = 0
sendto(3, "\4\210\1\0\0\1\0\0\0\0\0\0\5ssorc\2tw\0\0\34\0\1", 26, MSG_NOSIGNAL, NULL, 0) = 26
2606:4700:3035::6815:34f8 ssorc.tw
2606:4700:3033::ac43:ce0f ssorc.tw
+++ exited with 0 +++
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")}, 16) = 0
sendto(3, "\227\220\1\0\0\1\0\0\0\0\0\0\5ssorc\2tw\0\0\34\0\1", 26, MSG_NOSIGNAL, NULL, 0) = 26
2606:4700:3033::ac43:ce0f ssorc.tw
2606:4700:3035::6815:34f8 ssorc.tw
+++ exited with 0 +++
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.4.4")}, 16) = 0
sendto(3, "\362\355\1\0\0\1\0\0\0\0\0\0\5ssorc\2tw\0\0\34\0\1", 26, MSG_NOSIGNAL, NULL, 0) = 26
2606:4700:3033::ac43:ce0f ssorc.tw
2606:4700:3035::6815:34f8 ssorc.tw
+++ exited with 0 +++
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")}, 16) = 0
sendto(3, "\261\346\1\0\0\1\0\0\0\0\0\0\5ssorc\2tw\0\0\34\0\1", 26, MSG_NOSIGNAL, NULL, 0) = 26
2606:4700:3035::6815:34f8 ssorc.tw
2606:4700:3033::ac43:ce0f ssorc.tw
留言