使用 systemd-resolved 进行基于域的路由

使用 systemd-resolved 进行基于域的路由

我知道这个问题已经讨论过很多次了,也在这个论坛上,但我仍然无法得到完整的答案。我在解析某个域时尝试使用某个 DNS 服务器。到目前为止,我尝试过:

cat /etc/systemd/network/eth0.network

[Match]
Name=*

[Network]
DNS=10.96.0.10
Domains=~cluster.local

此配置的问题在于,除了我感兴趣的链接(eth0 - 链接 2)之外,其他所有链接都按我想要的方式设置:

Global: 10.0.0.126
Link 13 (vxlan.calico):
Link 12 (cali8263d13a54d): 10.96.0.10
Link 9 (calia1d7a43e746): 10.96.0.10
Link 8 (cali29e422b71fc): 10.96.0.10
Link 7 (cali758004a940e): 10.96.0.10
Link 6 (calif05b5957d52): 10.96.0.10
Link 5 (cali306363bfd09): 10.96.0.10
Link 4 (cali56b877defb5): 10.96.0.10
Link 3 (docker0):
Link 2 (eth0): 10.0.0.126

有趣的是,从命令行运行它是可行的:

systemd-resolve --set-dns=10.96.0.10 --set-domain=cluster.local --interface=eth0
resolvectl dns
Global: 10.0.0.126
Link 13 (vxlan.calico):
Link 12 (cali8263d13a54d): 10.96.0.10
[..]
Link 4 (cali56b877defb5): 10.96.0.10
Link 3 (docker0):
Link 2 (eth0): 10.96.0.10

所以基本上我正在尝试将该命令转换为正确的配置。我正在使用 Ubuntu 20.04。

答案1

我按照这篇文章设置了基于 VirtulBox 主机的网络。操作方法如下:

# cat /etc/systemd/resolved.conf.d/milkiway.conf
[Resolve]
DNSStubListenerExtra=192.168.56.1

# cat /etc/systemd/network/vboxnet0.network 
[Match]
Name=vboxnet0

[Network]
DNS=192.168.56.10
DNS=192.168.56.20
Domains=~milkyway.site

# resolvectl query earth.milkyway.site
earth.milkyway.site: 192.168.56.10             -- link: vboxnet0

相关内容