2020年11月20日 星期五

[暫存]開啟mdns設定

mDNS(multicast DNS)

It is a zero-configuration service

Network: 224.0.0.251:5353/UDP

It is implemented by the Apple Bonjour and open source Avahi software packages.


原理

1)每個進入局域網的主機, 如果開啟了mDNS服務的話,都會向局域網內的所有主機組播一個消息,我是誰,和我的IP地址是多少。

2)然後其他也有該服務的主機就會響應,也會告訴你,它是誰,它的IP地址是多少。


Avahi 是一個在內網內, 用來廣播自己是什麼服務以及用來尋找那些服務的一個工具,

Avahi 是 mdns 的 server, 用來廣播通知他人我的 ip (利用.local)

nss-mdns 是解析它人 .local 位址


安裝完nss-mdns後,到 /etc/nsswitch.conf, 找到 hosts: , 設成以下:

hosts:      files mdns4_minimal mdns4 [NOTFOUND=return] dns


http://pjack1981.blogspot.com/2012/07/avahi.html

-------------以上記錄一下目前收集的mDns基礎知識,沒太多時間把它好好整理


一般來說都是給系統(普遍都是 DHCP 配發 DNS server 給各位)處理,也就是系統內的 Name Service Switch(簡稱 NSS)去做解析,但是這東西有些年頭了,新的協定像是 DNSSEC、DNS over TLS 都沒有支援,對於安全性來說是減少了許多。

於是在 systemd 裡面就有了 systemd-resolved 出現來代替 NSS 的位置。

大部分前面都說過了,就從設定檔開始說起吧!

大致上跟域名解析會有幾個檔案有關係:


/etc/hosts

這是本機的 DNS 查詢,這個優先權最大,有符合的話會直接被套用不會再查詢。

/etc/resolv.conf

這是 DNS 伺服器設定的位置,需要查詢就會從這裡抓伺服器。

/etc/systemd/resolved.conf

這是 systemd-resolved 的設定檔,也是今天的主軸。



/etc/systemd/resolved.conf

MulticastDNS=yes


設定完重啟服務

sudo systemctl daemon-reload

sudo systemctl restart systemd-networkd

sudo systemctl restart systemd-resolved


另一個方法

sudo systemctl start systemd-resolved

sudo systemctl enable systemd-resolved

sudo systemctl restart NetworkManager //會讓systemd-resolve的配置重置


查到各個網路界面與 Global 的設定的詳細內容,可以用這個檢查剛才的設定是否成功

systemd-resolve --status 


如果已在名稱伺服器組態中使用了 .local 網域,則必須在 /etc/host.conf 中關閉此選項


設定 systemd-resolved說明

DNS=

基本上是會從 DHCP 裡面撈,如果撈不到就會抓 /etc/resolv.conf 來用。

FallbackDNS=

如果連 /etc/resolv.conf 都沒有可以用的,就會抓這裡的來用,基本上不太會用到這裡的位置。

DNSSEC=

有 yes、no 以及 allow-downgrade,最後一個(也是預設選項)就是如果查詢時簽名驗證失敗的話,也允許使用結果。

但是有開啟 DNSSEC 的話都會增加一點反應時間,如果覺得查詢變很慢的話,可以考慮關閉一下 DNSSEC。

Cache=

開啟本機快取,算是最主要得功能之一,因為你查詢過後,就可以直接從本機撈不用再往外跑一次,速度會快上許多,又如果有開啟 DNSSEC 的話,更不用走大老遠再次查詢已經驗證過的資料了。


上面設定完後,可以看一下下面的工具,方便偵錯或是檢視運作情況。


resolvectl

常用的會有:

resolvectl query domain | ip address

用於 DNS 的正向或反向查詢,取決於輸入資料。

裡面也會寫查詢的協議、回應時間等等資料。

resolvectl status

查詢目前 systemd-resolved 的設定。

resolvectl statistics

查詢 systemd-resolved 的統計資料,像是快取數量及命中率。

resolvectl flush-caches

清除本機 DNS 快取,一般來說應該用不到,除非 DNS 被污染而快取錯誤的資料吧。


改完config,run 這個

sudo systemd-resolve --interface eno1 --set-mdns=yes

sudo systemctl restart systemd-resolved

avahi-daemon -r


REF

https://www.freedomwolf.cc/2020/01/dns_by_systemd/

https://itw01.com/8TCKBEK.html

PSA: mDNS and .local ICE candidates are coming



mDNSResolver

https://github.com/madpilot/mDNSResolver/tree/master/src


Particle_mDNSResolver

https://github.com/thedim-witted/Particle_mDNSResolver


libmicrodns

https://github.com/videolabs/libmicrodns


mdnsresolver

https://github.com/martinevsky/mdnsresolver/blob/master/main.cpp


How to configure systemd-resolved for mdns multicast dns on local network?

Couldn't resolve mDNS address #1692

使用 raspberry.local 連到你的 Raspberry Pi

沒有留言:

張貼留言