/etc/dhcpcd.conf和/ etc / network / interfaces之间的区别?


63

我在/ etc / network / interfaces中有此配置:

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan0
#iface wlan0 inet dhcp
        iface wlan0 inet static
        address 192.168.0.110
        netmask 255.255.255.0
        network 192.168.0.1
        gateway 192.168.0.1
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp


iface eth0 inet static
    address 192.168.0.115
    netmask 255.255.255.0
    network 192.168.0.1
    gateway 192.168.0.1

无线静态IP有效,但eth0无效。

所以我尝试在/etc/dhcpcd.conf中进行配置:

interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

而且有效。我很困惑,这里有几个问题:

  1. 什么时候使用哪个文件?

  2. 为什么wifi可以与/ etc / network / interfaces一起使用,而eth0却不能呢?

  3. dhcpcd是否比/ etc / network / interface具有优先级 ?

  4. 如何检查哪个服务具有优先级或优先级?哪个服务使用/ etc / network / interface


4
好问题和我要问的事情#raspbian。作为多年的Un * x管理员,我发现这种根本性的变化令人困惑,而绝对缺乏文档。经过一个小时的反复试验,我碰巧发现了这个问题。我希望我能找到raspberrypi.stackexchange.com/questions/37920/...更早
阿拉斯泰尔·麦科马克

我认为应该在评论中问这个问题:eth0到底是怎么失败的?什么是ip addr输出和systemctl status networking输出?因为如果OP尝试通过ssh并使用eth0 ip进行ssh转换,那么修改后的eth0 ip将被分配为eth0的辅助ip,以保持正在进行的ssh会话不间断,因此我尝试将eth0 ip更改为OP提到但通过wlan0进行sshing,它比dhcp起作用,并且优先于dhcp,在我的情况下,它是Stretch上的dhclient,但通过eth0进行shclient,则发生了前面提到的情况。
Pavel Sayekat

是的,dhcpcd也已经过测试,没有人优先于/etc/network/interfaces设置。
Pavel Sayekat

Answers:


65

这个问题的所有答案都有其优点,但是我认为在一定范围内可以直接解决您的特定问题。

  1. 什么时候使用哪个文件?

我将假设您正在遭受当前(在更广泛的Raspberry Pi社区中)普遍出现的混乱程度,因为引入了Debian'Jessie '来代替Debian'Wheezy'。这一更改使大量教程过时了,但也使人困惑。

问题的答案是,使用Wheezy时/etc/network/interfaces,出于设置网络接口的目的而对文件进行更改是正常的(见图)。使用Jessie时,有必要对'/etc/dhcpcd.conf'进行更改。但是,如果更改无线连接(wlan0),则还需要更改/etc/wpa_supplicant/wpa_supplicant.conf添加网络ssid和密码的位置。

  1. 为什么wifi可以与/ etc / network / interfaces一起使用,而eth0却不能呢?

我不确定wifi连接的工作方式,因为文件中至少缺少一些信息(至少有ssid)。正如janos指出的那样,在wlan0详细信息之后,优先于etho连接详细信息可能使它们可操作(因为在读取文件的过程中它们将最后被看到)。

  1. dhcpcd是否比/ etc / network / interface具有优先级?

不,它们是不同的,在杰西(Jessie)下旨在满足不同的目的。为了以一种非常简单的方式使用Jessie,您几乎可以忽略该interfaces文件并使用dhcpcd.confand wpa_supplicant.conf

  1. 如何检查哪个服务具有优先级或优先级?哪个服务使用/ etc / network / interface?

再一次,我将假设问题更多是“ 我使用哪个文件,是否必须使用优先级高的文件?' 题。答案是,随着从Wheezy到Jessie的改变(从更广泛的意义上讲,通过systemd的采用),将“ dhcpcd.conf”和“ wpa_supplicant.conf”的配置作为标准,而将保留“ interfaces”文件到自己的设备。

这对您意味着什么?

好(再次)假设您要尝试使用静态IP地址建立硬线(eth0)和无线(wlan0)连接,您希望interfaces文件是最初安装时的默认文件;

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

您可能希望dhcpcd.conf文件在文件的末尾包括两个接口的连接详细信息,其他条目可能看起来像这样;

# Custom static IP address for eth0.
interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

# Custom static IP address for wlan0.
interface wlan0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

最后,您需要编辑wpa_supplicant.conf文件,使其包含wifi网络的ssid和密码。它可能看起来像这样;

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="homenetwork"
    psk="h0mepassw0rd"
}

我希望能掩盖一切。我的假设很可能是不正确的,但是由于我最近经历了类似的学习过程,所以我希望数据有用。

实际上,我已经写了这篇文章,您可以从Leanpub 的免费电子书Just Just Raspberry Pi中获得信息。


1
不要工作 如果我们打开两个接口,例如,ifconfig eth0向上ping到外部,而ssh从外部不起作用。如果我们将其中一个接口放入dhcp,则一切正常。
giuseppe

希望有人能够协助您解决问题
d3noob

对于我没有用,有几个原因。首先,这个问题是笼统的,如果答案是杰西,那是很久以前的事了,我们已经转移了大部分精力,而本周却是破灭。我的interfaces文件没有您提到的内容。
Brian Bulkowski

6

优先级与您的init或systemd配置有关。关于dhcp:如果您有一个静态或手动配置的接口,并且dhcp之后开始请求地址,它将覆盖您已经拥有的地址。在Debian上,为指定了dhcp的接口启动dhcp,而不仅仅是靠魔术本身。如果您有意外行为,则可能在后台运行了另一个系统,例如NetworkManager。

每点:

  1. 根本不要使用dhcpcd.conf,请保留它。
  2. 您没有eth0允许热插拔线路。
  3. 如果dhcpcd在网络连接后启动,并且您已将其设置为接管接口,则它将启动。
  4. 检查启动这些服务的顺序。

4

无线静态IP有效,但eth0无效。

eth0接口可能未在系统启动时启动,因为该auto行未列出。来自man interfaces

以单词“ auto”开头的行用于标识在使用-a选项运行ifup时要启动的物理接口。(系统引导脚本使用此选项。)物理接口名称应在同一行上的单词“ auto”之后。可以有多个“自动”节。ifup以列出的顺序启动命名接口。

更改此行:

auto lo

对此:

auto lo eth0

然后它应该工作。

其他答案已解决您的其他问题。我希望这有帮助。


2
这就是答案。OP也有其他问题,但是对于像我这样遵循其他指南的用户,这些指南仅向其中添加了静态信息/etc/network/interfaces,而缺少的只是auto eth0重新启动网络或重启!
亚当·卡普兰

2

有关如何设置网络的详细信息,请参阅如何设置网络/ WiFi /静态IP

如果需要,可以使用较旧的/etc/network/interfaces方法。不幸的是,您列出的文件包含许多错误。您应该坚持使用标准配置之一。

如果您确实要使用/etc/network/interfaces (默认设置除外),则需要禁用dhcpcd

dhcpcd对于该论坛的解释太复杂了,但是链接 https://wiki.archlinux.org/index.php/dhcpcd提供了很好的摘要。


2

首先,将/etc/network/interfaces文件恢复为原始版本...

# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult `/etc/dhcpcd.conf` and `man dhcpcd.conf`

# Include files from `/etc/network/interfaces.d`:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

然后,保持对/etc/dhcpcd.conf文件的更改简单且仅用于无线...

(在文件底部...)

nohook lookup-hostname

interface wlan0
    static ip_address=192.168.0.53/24
    static routers=192.168.0.1
    static domain_name_servers=8.8.8.8

/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
    ssid="The SSID of your Router"
    psk="daPassword"
    scan_ssid=1
    key_mgmt=WPA-PSK
}

0

请注意,最新版本的Raspbian Jessie(12/30/2016)在interfaces文件的第二行中包含一个缺陷。第二行缺少开头的#符号,以将该行指定为注释。此问题导致接口文件无法被系统读取。在发现此错误之前,我花了很多时间试图使wifi正常工作。

要解决此问题,只需在行首添加#符号。

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.