讓 systemd-resolved 忽略 DNS 伺服器並僅使用我指定的伺服器

讓 systemd-resolved 忽略 DNS 伺服器並僅使用我指定的伺服器

我遇到了 DNS 問題,為了幫助縮小問題範圍,我被要求手動配置電腦的 DNS 設置,僅指定一個 DNS 伺服器,而不是透過 DHCP 返回的兩個伺服器,以便伺服器管理員可以確定我的問題是否存在僅發生在一台DNS 伺服器上或同時發生在兩台伺服器上。

但是我無法配置 systemd-resolved 以便它手動接受我的 DNS 配置。

我嘗試了以下操作,所有這些仍然在兩台伺服器之間隨機發送 DNS 請求,即使在重新啟動 和 後也是systemd-networkd如此systemd-resolved

  • DNS=1.2.3.4[Resolve]部分指定/etc/systemd/resolved.conf
  • DNS=1.2.3.4在(該資料夾中唯一的檔案)[Network]部分中指定/etc/systemd/network/eth0.conf
  • 編輯/etc/resolv.conf並註解掉其中一台伺服器

這些都沒有改變任何內容,仍然resolvectl將兩個 DNS 伺服器列出為可用,並且當我執行測試時,DNS 查詢在兩個伺服器之間拆分,而不是僅使用我指定的一台伺服器。

如何告訴 systemd 僅使用我指定的單一 DNS 伺服器,而不使用透過 DHCP 返回的伺服器?

答案1

我還沒有嘗試過這個,但我發現有一個選項可以忽略來自 DHCP 回應的 DNS 伺服器。在 systemd.network檔案中,新增 DHCP 部分(如果尚不存在)並使用以下UseDNS選項:

[Network]
DNS=8.8.8.8  # Specify your DNS server manually

[DHCPv4]
UseDNS=no  # Don't use DNS servers from DHCP

答案2

我沒有足夠的代表來發表評論馬爾維尼烏斯的回答。雖然他的答案是正確的,但 nspawn 容器需要命名該檔案80-container-host0.network以覆蓋主機的系統預設值。

來自systemd-nspawn文件:

請注意,systemd-networkd.service(8) 預設包含一個/usr/lib/systemd/network/80-container-ve.network與以此方式建立的主機端介面匹配的網路文件,其中包含透過DHCP 在建立的虛擬連結上啟用自動位址配置的設置,以及自動IP 路由到主機的外部網路介面。它還包含/usr/lib/systemd/network/80-container-host0.network匹配以這種方式建立的容器端接口,包含透過 DHCP 啟用客戶端位址分配的設定。如果 systemd-networkd 在主機和容器內部都運行,則可以使用從容器到主機的自動 IP 通信,並進一步連接到外部網路。

/etc/systemd/network/80-container-host0.network

# https://www.freedesktop.org/software/systemd/man/systemd.network.html#UseDNS=
#
# Disable adding the DNS from DHCP
#
[Match]
Virtualization=container
Name=host0

[Network]
DHCP=ipv4
DNS=

[DHCPv4]
UseDNS=false

答案3

如果可以設定靜態 IP,則可以指定 DNS 伺服器。向網路管理員詢問您可以使用的靜態 IP,然後嘗試一下。不要僅使用任何 IP,否則您很容易會得到重複的 IP。

相關內容