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

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 

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

注意! 我没有谈论像NetworkManager那样建立网络的其他方式。 NM不会触及/etc/network/interfaces中提到的任何设备

为了能够通过IP网络(IPv4和IPv6)进行通信,计算机必须知道它具有哪个IP地址。 因此需要address指令来告诉计算机。

当计算机然后想要与另一台计算机通信时,它使用其他计算机的IP地址来检查该计算机是否在同一网络LAN中。 如果是这样,计算机可以直接与另一台计算机通信。

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

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

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

接口network地址只需要计算一次,通常可以从该addressnetmask指令中正确计算。 与broadcast地址相同。 所以你不需要设置它们。 实际上,如果将一个或两个设置为错误的值,则可能会丢失与LAN中的Internet和其他计算机的连接。 因此,除非您对它们有一些奇怪的值,否则让计算机为您计算它们。

因此, /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 ,它将查看此文件并尝试从名称my.example.com IP地址。 这个文件实际上并没有回答“我做my.example.com有哪些IP”的问题,它只是告诉计算机它可以找到答案。
通常它首先尝试/etc/hosts文件用于静态本地名称,然后尝试avahi mDNS用于动态本地名称,然后尝试DNS域名resovler从Internet获取名称。

如果其中一些在回答您的问题时速度很慢,那么计算机可能会卡住一段时间。 因此,如果您这样做,请先检查名称解析。

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

您使用avahi软件包从Apple机器和Apple机器(以及带有iTunes的MS Windows)获得的动态地址。 这是由“魔术”处理的,你不需要修复它。

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

这在文件/etc/resolv.conf ,可以静态设置。 这在我们不那么静态的世界中效果不好,所以通常你会安装一个名为resolvconf软件包。 这使您可以在/e/n/interfaces文件中设置这些设置。

因此,如果我们假设我们想要添加一个谷歌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 

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

另请注意,我使用域example.com和example.org以及IP网络192.0.2.0/24作为ISP示例DNS服务器。 这些明确定义为在示例中使用。 请参阅http://example.com/或http://tools.ietf.org/html/rfc2606和rfc5735

你怎么检查它是否有效?
您可以通过多种方式实现这一目标,但我通常会使用

 getent hosts my.test.com 

测试整个设置以进行名称解析。 如果我只是想检查DNS是否有效,我使用以下命令之一:

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

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