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
地址只需计算一次,通常可以根据该地址address
和netmask
指令正确计算。地址也一样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
,可以静态设置。在我们这个不那么静态的世界中,这种方法不太管用,所以通常你会有一个叫做resolvconf
installed的包。这让你可以在文件中设置这些设置/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.conf
和man resolv.conf
来man 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
部分。它可能是您想要的,也可能不是。