我正在尝试从网络管理器生成的域搜索列表中删除所有值。但是我无法让它提供空白列表。我尝试使用“ignore-auto-dns”,但域仍然存在。还有其他命令可以用于从列表中删除所有域吗?
我也尝试了以下方法:
nmcli con mod "System eth0" ipv4.dns-search ""
和
nmcli con mod "System eth0" ipv4.dns-search "."
,但都无法search c.project.internal
从中删除/etc/resolv.conf
[[email protected]:/home] $ nmcli con mod "System eth0" ipv4.ignore-auto-dns no
[[email protected]:/home] $ nmcli con down "System eth0" && nmcli con up "System eth0"
Connection 'System eth0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
[[email protected]:/home] $ nmcli device show eth0
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 42:01:0A:F8:06:9A
GENERAL.MTU: 1460
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: System eth0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 10.248.6.154/32
IP4.GATEWAY: 10.248.0.1
IP4.ROUTE[1]: dst = 10.248.0.1/32, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.248.0.1, mt = 100
IP4.ROUTE[3]: dst = 10.248.6.154/32, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 10.248.253.253
IP4.DNS[2]: 10.248.254.254
IP4.DNS[3]: 169.254.169.254
IP4.DOMAIN[1]: c.project.internal
IP6.ADDRESS[1]: fe80::4001:aff:fef8:69a/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
[[email protected]:/home] $ cat /etc/resolv.conf
# Generated by NetworkManager
search c.project.internal google.internal
nameserver 10.248.253.253
nameserver 10.248.254.254
nameserver 169.254.169.254
[[email protected]:/home] $ nmcli con mod "System eth0" ipv4.ignore-auto-dns yes
[[email protected]:/home] $ nmcli con down "System eth0" && nmcli con up "System eth0"
Connection 'System eth0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[[email protected]:/home] $ nmcli device show eth0
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 42:01:0A:F8:06:9A
GENERAL.MTU: 1460
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: System eth0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 10.248.6.154/32
IP4.GATEWAY: 10.248.0.1
IP4.ROUTE[1]: dst = 10.248.0.1/32, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.248.0.1, mt = 100
IP4.ROUTE[3]: dst = 10.248.6.154/32, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 10.248.253.253
IP4.DNS[2]: 10.248.254.254
IP6.ADDRESS[1]: fe80::4001:aff:fef8:69a/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
[[email protected]:/home] $ cat /etc/resolv.conf
# Generated by NetworkManager
search c.project.internal
nameserver 10.248.253.253
nameserver 10.248.254.254
上面的例子表明,ignore-auto-dns 实际上忽略了 DHCP 传递的域,但网络管理员仍然从某处获取域。
答案1
我假设您想从“域搜索列表中删除所有值” /etc/resolv.conf
。
查看文档高级 VPC 概念:
DNS 服务器
每个实例的元数据服务器都充当 DNS 服务器。它存储本地 VPC 网络中所有 VPC 网络 IP 地址的 DNS 条目,并调用 Google 的公共 DNS 服务器获取 VPC 网络外的条目。您无法配置此 DNS 服务器。每个实例上的 DHCP 客户端都配置为管理实例的 /etc/resolv.conf 文件。
/etc/resolv.conf
您可以通过修改 DHCP 策略将您自己的搜索域或名称服务器添加到实例中 。许多 Linux 发行版允许通过 保留这些修改/etc/dhcp/dhclient.conf
。请参阅内部 DNS文档以获取更多信息。
另外,请查看文档内部 DNS部分内部 DNS 和 resolv.conf:
默认情况下,大多数 Linux 发行版将 DHCP 信息存储在 resolv.conf 中。Compute Engine 实例配置为每 24 小时续订一次 DHCP 租约对于启用了区域 DNS 的实例,DHCP 租约每小时到期一次。DHCP 续订将覆盖此文件,撤消您可能做出的任何更改。使用区域 DNS 的实例在 resolv.conf 文件中同时具有区域和全局条目。
并在部分通过内部 DNS 访问虚拟机:
重要的:Compute Engine 实例会在其 DHCP 租约中接收内部 DNS 解析信息。默认情况下,内部 DNS 名称的解析由实例的元数据服务器 (169.254.169.254) 处理。如果您更改实例的名称服务器配置,则可能无法使用内部 DNS 名称。任何替代名称服务器软件必须支持RFC 3442。
此外,请查看文档VPC 防火墙规则概览部分VPC 文档:
Google 在每个实例旁边运行一个本地元数据服务器,地址为 169.254.169.254。此服务器至关重要实例的运行,因此无论您配置了什么防火墙规则,实例都可以访问它。
因此,如果您确实想要更改值,resolv.conf
修改 DHCP 策略会更安全。
答案2
来自man nm-settings
以下部分dns-search
:
以波浪号(“~”)开头的域被视为“路由”域,仅用于决定必须转发查询的接口;它们不用于完成不合格的主机名。
据我所知,您需要一些命令:
nmcli con mod "System eth0" ipv4.dns-search "~c.project.internal"
nmcli con mod "System eth0" +ipv4.dns-search "~google.internal"
# probably also want the ipv6 version too:
nmcli con mod "System eth0" ipv6.dns-search "~c.project.internal"
nmcli con mod "System eth0" +ipv6.dns-search "~google.internal"
如果我理解手册页正确的话,这将导致你所有的常规c.project.internal
和google.internal
查询仍可继续System eth0
连接,但 DNS搜索(用于确定主机名的 FQDN)将不再执行。
免责声明:我自己刚刚学到这一点——我可能在某些细节上是错误的。