我有深我的 LAN 适配器配置有问题,使用 Debian 9.5,所以我将描述发生的情况,然后提出我的问题。
- 第一步:
在安装 Debian 9.5 时,我给出了我想要给 LAN 适配器的地址(无 DHCP):192.168.58.168,带有网络掩码、网络、广播和网关:安装后,我首先尝试ip a
检查网络参数,发现我的网卡名为“ens33”:
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 00:0c:29:3a:e1:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.58.168/24 brd 192.168.58.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe24:2134/64 scope link
valid_lft forever preferred_lft forever
然后我编辑/etc/resolv.conf
添加了 2 个 DNS,之后 LAN 工作得非常好:我可以 ping 通 LAN 上的所有计算机并通过 Firefox 浏览网页。
尽管如此,我拥有的文档告诉我适配器是在文件中定义的
/etc/network/interfaces
但是当我用 来显示它时cat
,我惊讶地发现“ens33”接口没有出现在该文件中,尽管我可以 ping 它并且我可以看穿它ip a
。这对我来说看起来很奇怪......
- 第二步:apt-get install
然后我通过,包括resolvconf
和samba
, 添加了一定数量的包后,我很满意地看到,在 Dolphin 中,我的 Windows 域 LAN 的所有计算机都是可见的,我什至可以访问我的 Windows 文件服务器的共享目录并使用 VLC 播放音乐或视频文件:太棒了!
--第三步:
然后我重新启动了电脑,一切都不再起作用:我没有任何 LAN 访问权限,如果我键入ip a
查看 LAN 定义,我可以看到“ens33”适配器已丢失其属性:
ens33: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:3a:e1:17 brd ff:ff:ff:ff:ff:ff
所以我将该ens33
部分添加到文件中
/etc/network/interfaces
现在该文件如下:
'# The loopback network interface
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.58.168
netmask 255.255.255.0
network 192.168.58.0
broadcast 192.168.58.255
gateway 192.168.58.11
iface dns-nameservers 192.168.58.11 192.168.58.21
正如你所看到的,resolvconf
添加了我在文件中定义的2个DNS
/etc/resolvconf/resolv.conf.d/base
因为当我将它们添加到resolv.conf
文件中时,它们会被自动删除,因为我安装了 resolvconf ...
但即使重新启动后也没有解决问题:所以,我尝试了:
ifup ens33
但系统却回答道:
ifup: /etc/network/interfaces:16: unknown or no address type and no inherits keyword specified
ifup: couldn't read interfaces file "/etc/network/interfaces"
这 ”无法读取接口文件“对我来说非常难以理解,因为如果我输入:
cat /etc/network/interfaces
它显示的正是我上面报告的内容。
所以,“interfaces”文件似乎没有真正的力量,因为:
1:一开始,ens33没有出现在该文件中,并且网络仍然完全运行
2:当我在该文件中添加接口的定义时,它对机器没有影响
所以我想知道:哪个 Linux 文件真正从根本上定义了 LAN 适配器的参数???
答案1
为什么接口文件没有提到我的 ens33 接口,尽管它完全可以运行?
因为,正如评论中已经提到的,有一种运动用“/etc/network/interfaces
新”的使用方式systemd
和网络管理器来取代“传统”的使用方式。
为什么“resolvconf”确实阻止使用“resolv.conf”并强制使用“base”并将其自身写入“interfaces”中的DNS属性,而有人告诉我不应该这样写?
不确定我是否正确理解了这个问题,但是很久很久以前,当网络是静态的并且在大型组织中时,resolv.conf
是手工编写的,并且 DNS 服务器是组织的一部分。那是在 Windows 之前有正确的网络(或 Novell 的东西)。然后大家和他的叔叔开始在家里上网,家庭路由器充当DHCP服务器、DNS代理,ISP提供DNS。因此添加了一个额外的层,它resolv.conf
根据 DHCP 提供的信息自动生成。
为什么重启后“ens33”界面的参数就消失了?
如果我正确理解你的描述,它们并没有消失。
ifup: /etc/network/interfaces:16: unknown or no address type and no inherits keyword specified
表示文件中存在语法错误,并且
ifup: couldn't read interfaces file "/etc/network/interfaces"
意味着由于错误,它无法读取信息在文件中(当然它可以读取文件本身,否则它不会抱怨第16行的错误)。
到底哪些是定义 LAN 适配器属性的有效文件?
这完全取决于您运行的是新系统还是传统系统。 (就我个人而言,我不喜欢新系统,所以我无法回答这个问题;甚至传统系统随着时间的推移也获得了很多钩子,所有这些都可能会修改最终结果。有充分的理由,因为有些情况你需要它)。
一个更有用的问题是:“我需要修改哪些文件才能为这台机器正确配置网络?”这取决于您的网络 - 对于家庭路由器中具有 DHCP 服务器的典型家庭网络,答案是“您不需要修改任何内容”。如果您想要具体答案,请编辑问题并描述您的网络。
对于这四个问题,我一直在网上和“手册”页面上搜索,但找不到任何答案。
这是因为网络上的旧内容(以及许多手册页)是在只有“传统”方法的情况下编写的,而撰写有关新方法的人通常不会提及旧方法。
在我看来,这证明了本页的标题是正确的,尽管我似乎欺骗了三位专家,他们没有试图帮助初学者,而是牺牲了一些宝贵的时间来消除我的问题......
如果我可以在这里添加我的个人观点:中性措辞的问题,将你的个人感受放在一边,以及“事情应该如何”的想法,将更容易避免否决。
答案2
该iface
关键字引入了网络配置部分。您已将 DNS 服务器定义放在一行中,iface
而不是放在上一节中。这很令人不安,ifup
因为它不理解对象行的开头iface dns-namservers
。
如果您打算使用该interfaces
文件,那么您的配置可能如下所示
auto ens33
iface ens33 inet static
address 192.168.58.168
netmask 255.255.255.0
broadcast 192.168.58.255
gateway 192.168.58.11
dns-nameservers 192.168.58.11 192.168.58.21
interfaces
但是,如果您在执行此操作时完全忽略文件中的说明,则可能需要禁用 NetworkManager。可悲的是。