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


10

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

2
在使用dnsmasq的最新Ubuntu版本中,您还需要声明DNS名称服务器。
chili555 2014年

@ chili555,如果您添加软件包resolvconf则可以使用。读下我的答案。;-)你同意吗,user1424739?
Anders 2014年

我相信在最新的Ubuntu版本中,默认情况下会安装resolvconf。没有??
chili555 2014年

1
您能否抽出一些时间来评论@Anders答案。请参阅当有人回答我的问题时该怎么办?
user.dz 2014年

@ chili555是的。但是我只是想弄清楚该软件包与/ e / n / interfaces中的dns服务器之间的连接。对不起,如果我不清楚。
Anders 2014年

Answers:


25

如何设置静态IP地址以及为什么

注意!我没有谈论使用NetworkManager设置网络的其他方式。/etc/network/interfacesNM不会触摸其中提到的任何设备

为了能够通过IP网络(IPv4和IPv6)进行通信,计算机必须知道其拥有的IP地址。因此address,需要使用指令来告知计算机。

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

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

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

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

接口network地址只需要计算一次,通常可以通过该地址addressnetmask指令正确计算。与broadcast地址相同。因此,您无需设置它们。实际上,如果将一个或两个都设置为错误的值,则可能会失去与Internet和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首先尝试使用文件来获取静态本地名称,然后使用avahi mDNS来获取动态本地名称,然后再使用DNS域名解析程序从Internet上获取名称。

如果其中一些回答问题的速度很慢,则计算机似乎会停滞一段时间。因此,如果知道,请先检查名称解析。

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

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

DNS用于连接Internet,您需要告诉计算机您要使用的DNS服务器在哪里,要使用的IP地址以及默认的DNS域是什么。

这是在文件中完成的/etc/resolv.conf,可以静态设置。在我们这个不那么静态的世界中,这不能很好地工作,因此通常您有一个名为resolvconfinstall 的软件包。这使您可以在/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

您可能还会注意到,DNS解析器最多将仅使用三个DNS服务器。请在此查找起来man的-page resolv.conf。由于通常,你可以使用命令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文件中的设置而不是/etc/nsswitch.conf部分来测试DNS 。它可能是您想要的,或者不是。


1
很好的解释,谢谢。正如chili555提到DNS在解析域名方面的重要性一样,如果您对它添加一点,那就太好了。(对于Internet或WAN连接,需要全部设置)
user.dz 2014年

像这样吗
2014年

1
别客气。:-)想知道这是否是对user1424739的足够好的答案
Anders

无论如何,/etc/internet/interfacesUbuntu将废弃它们NetPlan/etc/netplan/*.yaml而使用自己的,see 和NM(可以使用进行修改nm-tools)。
安德斯'18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.