何时手动配置网络接口需要网络,广播和网关?
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
地址只需要计算一次,通常可以从该address
和netmask
指令中正确计算。 与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.conf
的man
-page中查看。 通常,您可以使用命令man nsswitch.conf
, man resolv.conf
和man 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
部分。 它可能是你想要的或不是。