qua*_*uat 8 networking linux dns ubuntu resolv.conf
我已经将我的 Ubuntu 桌面升级到 Bionic Beaver,它切换到systemd-resolve。随着这一变化,LXD DNS 解析停止工作。
为了使 LXD 容器可被发现,我可以运行以下命令。注意,IP 10.78.38.1是lxdbr0网桥的 IP 。
$ sudo systemd-resolve --interface lxdbr0 --set-dns 10.78.38.1 --set-domain lxd
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以通过名称发现 LXD 容器,配置如下所示。
$ systemd-resolve --status
.
.
.
Link 10 (lxdbr0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.78.38.1
DNS Domain: lxd
.
.
.
Run Code Online (Sandbox Code Playgroud)
但是,在系统重新启动后,此配置将消失。
$ systemd-resolve --status
.
.
.
Link 10 (lxdbr0)
Current Scopes: none
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
.
.
.
Run Code Online (Sandbox Code Playgroud)
为了使上述内容持久化,我查看了systemd-resolve联机帮助页http://manpages.ubuntu.com/manpages/bionic/man8/systemd-resolved.service.8.html。它建议创建一个/etc/systemd/resolved.conf.d/lxd.conf文件,但没有可用的参数允许我针对一个特定的 NIC 进行此类配置。
小智 5
Systemd-networkd将网络配置存储在(至少)三个目录中,也许更多。与您最相关的一项是:
/etc/systemd/network/
Run Code Online (Sandbox Code Playgroud)
(它覆盖了其他两个,即/lib/systemd/network和/run/systemd/network)。
创建一个/etc/systemd/network类似于此的文本文件:
[Match]
Name=enp0s4
[Network]
DHCP=yes
DNS=192.168.1.1
Run Code Online (Sandbox Code Playgroud)
只要文件以 .network 结尾,它就可以有任何名称。我的叫做enp0s4.network。获得正确的内容至关重要。如果你弄错了,不好的事情就会发生,比如你的网络停止工作,至少在那个界面上,直到你恢复工作配置。这并不容易——我把我的搞砸了,我花了一个小时才把它整理好。
有关如何设置桥接的示例,请从此处阅读:
man systemd.network |grep -A 42 "Example 3"
Run Code Online (Sandbox Code Playgroud)
那里给出的示例加上我的代码片段可以设置:
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.78.38.1
Run Code Online (Sandbox Code Playgroud)
不确定 DNS 域的语法是什么,应该可以,手册页长 30 页!如果可以,请跳过它——试图Domain=搞砸我的系统。所以找到正确的语法或者不要把它放进去,除非你能恢复。
以下是我使用的参考资料:
如何检查网络是否正在运行:https : //superuser.com/questions/1187633/how-to-debug-systemd-networkd?rq=1#comment1807294_1187633
如果禁用如何启用:https : //askubuntu.com/posts/681768/revisions
重启systemd-resolved无需重启:
sudo systemctl restart systemd-resolved
Run Code Online (Sandbox Code Playgroud)
仅供参考:有一种方法可以告诉 systemd 让网络管理器处理接口,以及让它不受管理并使用/etc/resolv.conf. 但如果我在你的鞋子里,我会让它正常工作。
这会破坏您lxdbr0但正确的配置systemd-resolved:
根据链接的手册页man 8 systemd-resolved.service和man 5 systemd.network,您必须使用以下位置的每个链接配置文件/etc/systemd/network:
联系的 DNS 服务器由 中的全局设置
/etc/systemd/resolved.conf、文件中的每个链接静态设置/etc/systemd/network/*.network、通过 DHCP 接收的每个链接动态设置以及其他系统服务提供的任何 DNS 服务器信息确定。
为了使您的配置持久化,您必须创建该文件/etc/systemd/network/lxdbr0.network:
[Match]
Name=lxdbr0
[Network]
DNS=10.78.38.1
Domains=lxd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16274 次 |
| 最近记录: |