欸,工時系統禁止報加班!?

— Weihang Lo 2020.4

這裡是 WWW 第拾參期,Wow Weihang Weekly 是一個毫無章法的個人週刊,出刊週期極不固定,從一週到五年都有可能。初期內容以軟體工程為主,等財富自由後會有更多雜食篇章。

The Facts: Mozilla’s DNS over HTTPs (DoH)

西元二零二零年二月二十五日起,Firefox 預設開啟了 DNS over HTTPS(DoH)的功能,這會導致:

  • 原本裸奔的 DNS query 可以透過 HTTPS 加密,不會再被看光光
  • DNS 隱私資料從被 ISP 幹走變成被 Cloudflare/NextDNS 或其他 DoH 供應商幹走
  • 因為不會走你家的 internal DNS service,有些解析會壞掉 👋
  • 你不會再看見色情守門員

DoH 算是一個容易起爭議的功能,例如:

  • Firefox DoH 預設是 Cloudflare 讓 OpenBSD 的 Firefox 版預設直接關閉 DoH
  • Chrome 的行為則是如果 DNS provider 有支援 DoH 才自動開啟,爭議點在很多人都用 8.8.8.8 那還不是一定會走 Google 的 DoH
  • 英國 ISP 商們票選 Mozilla 為 2019 年度網路惡棍,因為「DoH 阻撓網路監管,網路會成犯罪溫床」,帥
  • DoH 造成 DNS server 從集中在 ISP 變成集中在大型 DoH 網路公司

還是可以理解一下為什麼 Firefox 要預設 DoH,至於是否開啟就看個人囉。

No More Crypto Fails 現代密碼學入門

非常簡明的密碼學入門,沒有提到太多數學理論,花個十五分鐘閱讀,然後再花十五分鐘 google,搞懂不熟的知識點吧!

順便推薦個 Stanford 大學 Dan Boneh 的密碼學課程

DNS Lookups in Kubernetes

你以為 Kubernetes 的 DNS 解析只是 $service.$namespace.svc.cluster.local 嗎?其實 pod 的 DNS 解析一樣會看 /etc/resolv.conf 檔案,而且會做以下設定:

  • nameserver:指向 CoreDNS 服務 IP
  • search:欲解析的 domain 不是 FQDN 時,這個 search list 的 domain 會被當作 root domain,K8s 預設會加入 $namespace.svc.$zonesvc.$zone$zone 三個 domain
  • options ndots:5:表示只有 domain 有超過五個 . 時,才會被當作 FQDN,否則則是 prepend 到 search list 的 root domain來搜尋

綜合上述,如果我的服務叫做 my-service,DNS resolution 的順序可能會是:

  1. ndots < 5,不是 FQDN,不當作 FQDN 解析,嘗試 prepend 到 search list
  2. 我的 namespace 叫 my-ns,則嘗試解析 my-service.my-ns.svc.cluster.local.
  3. 若解析失敗,則嘗試解析 my-service.svc.cluster.local.
  4. 若解析失敗,則嘗試解析 my-service.cluster.local.
  5. 最後才會把 my-service. 當作 FQDN 來解析

Kubernetes 官方也有對這個 ndots:5 的設計做出解釋(但現在換成 CoreDNS 了?),是為了要同時支援解析 same-namespace、cross-namespace 還有 SRV record(_$port._$proto 的格式,講到這個就想到 external-dns 一直不 review 我的 SRV 相關 PR 🤯)。雖然有人說 ndots:5 有效能隱憂,但 DNS 照理說應該會被 cache 起來?總之,如果不是需要 low latency 的服務,使用 Kubernetes 預設值應該不會錯。