何时需要手动配置网络接口的网络、广播和网关?

何时需要手动配置网络接口的网络、广播和网关?

https://wiki.debian.org/NetworkConfiguration#Bridging_without_Switching

上面的 URL 显示了以下内容。但我不清楚它们何时是可选的,何时不是。您能否为我提供一些描述此内容的参考链接?谢谢。

如果您手动配置它,那么类似这样的操作将设置默认网关(网络、广播和网关是可选的):

auto eth0
iface eth0 inet static
    address 192.0.2.7
    netmask 255.255.255.0
    gateway 192.0.2.254

答案1

#如何设置静态IP地址以及原因#

注意!我不谈论使用 NetworkManager 等其他方式设置网络。文中提到的任何设备均/etc/network/interfaces不受 NM 的影响

为了能够通过 IP 网络(IPv4 和 IPv6)进行通信,计算机必须知道自己的 IP 地址。因此address需要指令来告诉计算机这一点。

当计算机想要与另一台计算机通信时,它会使用另一台计算机的 IP 地址来检查该计算机是否位于同一网络(LAN)中。如果是,则该计算机可以直接与另一台计算机通信。

那么计算机如何知道它正在与同一 LAN 上的计算机通信呢?通过使用网络netmask,其中地址的网络部分设置为 1,主机部分设置为 0。因此,通过在 IP 地址和网络掩码中的每个位之间进行按位与运算,我们将获得 IP 地址的网络地址,其中主机部分为零。因此,如果我们对计算机的 IP 地址和其他计算机的 IP 地址执行此操作,我们将获得每个网络地址。如果它们相等,则意味着计算机位于同一网络中,可以直接相互通信。

如果网络地址不相等,则它们位于不同的 LAN 上,无法直接相互通信。然后计算机需要使用连接到其他 LAN 的特殊计算机。该计算机是路由器(也可能有防火墙和 NAT)。因此,当计算机想要与 LAN 外的其他计算机通信时,它需要知道使用该gateway指令设置的该计算机的地址。如果另一个接口已经设置了值gateway,则您不需要也不应该为该接口设置另一个网关指令。该gateway指令为计算机设置默认路由,因此每台机器上只需要一个 IPv4 路由和一个 IPv6 路由。可以使用该指令手动设置此网络地址network

有时计算机想要与局域网中的所有计算机通信,它使用广播地址。此地址由同一局域网中的所有计算机监听。这基本上与网络地址相同,只是主机部分不是全零而是全一。此广播地址由接口broadcast中的指令设置。

接口network地址只需计算一次,通常可以根据该地址addressnetmask指令正确计算。地址也一样broadcast。因此您无需设置它们。事实上,如果您将其中一个或两个设置为错误的值,您可能会失去与互联网和 LAN 中其他计算机的连接。因此,除非您设置了一些奇怪的值,否则请让计算机为您计算它们。

因此,对于私有网络中的/etc/network/interfaces设备,最小静态设置或节可能如下所示:eth1

iface eth1 static inet
     address   192.168.44.10
     netmask   255.255.255.0
     gateway   192.168.44.1

#名称解析如何工作以及它如何与 DNS 绑定。#

域名用于在易于人类阅读和记忆的域名与计算机不太容易记住的 IP 地址之间进行转换,如上所述。这称为名称解析

这通常由文件/etc/nsswitc.conf和以 开头的行控制hosts:。如果您要求计算机连接到计算机my.example.com,它将查看此文件并尝试从名称 解析 IP 地址my.example.com。此文件实际上并没有回答“my.example.com 拥有哪个 IP”的问题,它只是告诉计算机在哪里可以找到答案。
通常它/etc/hosts首先尝试文件以获取静态本地名称,然后尝试 avahimDNS以获取动态本地名称,然后尝试 DNS 域名解析器从互联网获取名称。

如果其中某些程序回答您的问题很慢,则可能看起来像是计算机卡住了一段时间。因此,如果您遇到这种情况,请先检查名称解析。

因此,添加静态地址只需将其添加到文件中即可/etc/hosts。顺便说一句,如果您有静态地址,您可能应该将机器的 IP 地址更改为您的 IP 地址,而不是默认 IP 地址127.0.1.1(即 localhost 所在的 localnet 网络中127.0.0.1)。这仅适用于客户端,不适用于服务器。

您可以从装有软件包的 Linux 机器和 Apple 机器(以及装有 iTunes 的 MS Windows?)获得动态地址avahi。这是由“魔法”处理的,您无需修复它。

DNS 用于访问互联网,您需要告诉计算机您想要使用的 DNS 服务器在哪里、使用什么 IP 地址以及您的默认 DNS 域是什么。

这是在文件中完成的/etc/resolv.conf,可以静态设置。在我们这个不那么静态的世界中,这种方法不太管用,所以通常你会有一个叫做resolvconfinstalled的包。这让你可以在文件中设置这些设置/e/n/interfaces

因此,如果我们假设我们要添加 Google 的 DNS 服务器之一、8.8.8.8以及您的 ISP 的 DNS 服务器、192.0.2.1以及您的域my.example.org作为默认域,则只需编辑该/etc/network/interfaces文件并在静态设备的节中添加这两行。

    dns-nameservers   8.8.8.8  192.0.2.10
    dns-search        my.example.org

man您可能还会注意到,DNS解析器最多只能使用三个DNS服务器。请在的页面中查找resolv.conf。通常,您可以使用命令man nsswitch.confman resolv.confman resolvconf获取更多信息。

另请注意,我使用域 example.com 和 example.org 以及 IP 网络 192.0.2.0/24 作为 ISP 示例 DNS 服务器。这些是明确定义的,用于示例中。请参阅http://example.com/或者https://www.rfc-editor.org/rfc/rfc2606和 rfc5735

那么你如何检查它是否有效呢?
你可以用很多方法来做到这一点,但我通常使用

getent hosts my.test.com

测试整个名称解析设置。如果我只想检查 DNS 是否正常工作,我会使用以下命令之一:

host my.test.com
dig my.test.com

但请记住,这些只是通过文件中的设置来测试 DNS /etc/resolv.conf,而不是/etc/nsswitch.conf部分。它可能是您想要的,也可能不是。

相关内容