如何设置网络/ WiFi /静态IP地址?


217

我遵循了(数百个中的任何一个)教程,但是它不起作用。

如何在Raspberry Pi上设置网络/ WiFi /静态IP地址?


(这是一个多萝西·迪克斯(Dorothy Dixer),希望可以解决数百个类似的问题。)

Answers:


253

本教程介绍自2015-05-05起如何使用Raspbian中包含的默认网络管理器dhcpcd设置网络。它适用于Raspbian BusterRaspbian StretchRaspbian Jessie和最后的Raspbian Wheezy的Foundation版本 压克力设置与拉伸相同。

如何设置Raspbian网络

如果将以太网连接与路由器配合使用,则无需进行任何配置,并且可以直接使用。


注意Pi3 / Pi Zero W内置WiFi不支持5GHz网络,在设置无线监管域之前,可能无法连接到2.4GHz网络上的Ch 12,13 。

在设置了无线监管域(Pi4B,Pi3B +,Pi3A +)之前,将禁用启用5GHz的设备上的WiFi

  • 可以通过Raspberry Pi Configuration(rc_gui)设置域,也可以通过将域raspi-config设置country=为适当的ISO 3166 alpha2国家/地区代码来进行设置/etc/wpa_supplicant/wpa_supplicant.conf

如果您使用的是WiFi和GUI,请遵循基础准则

如果您通过遵循基金会准则从命令行使用WiFi,则 这是设置不广播网络的唯一方法。SSID

这也可以用于设置“无头”系统,例如使用串行控制台电缆,但是如果您可以借用显示器和键盘进行设置,则非常容易。有关使用以太网电缆连接到PC的另一种可能的方法,请参见下文。

无头Raspbian WiFi设置

自2016年5月起,Raspbian会在引导目录中检查名为的文件wpa_supplicant.conf,并将该文件复制到中/etc/wpa_supplicant,替换wpa_supplicant.conf其中可能存在的任何现有文件。然后删除引导目录中的文件。可以使用wpa_supplicant.conf以下详细说明启用无头设置。(您可能还需要启用ssh。)

我的IP地址是什么?

如果您只想知道IP Address您的Pi正在使用hostname -I,请在命令行中输入。

SSH协议

从2016年11月发行版开始,Raspbian默认禁用SSH服务器。您将必须手动启用它。

sudo raspi-config在终端中输入,首先选择advanced options,然后导航至ssh,按Enter并选择启用或禁用ssh服务器。

对于无头设置,可以通过将名为“ ssh”的文件(没有任何扩展名)放置到SD卡的引导分区上来启用SSH。

网络文件

如果您正在运行最近的Raspbian,/etc/network/interfaces则应如下所示。如果您已将其放回原位。(或者Stretch只是删除它 -它实际上没有任何作用。)

#ifup(8)和ifdown(8)使用的interfaces(5)文件

#请注意,此文件被编写为与dhcpcd一起使用
#有关静态IP,请查阅/etc/dhcpcd.conf和'man dhcpcd.conf'

#包括/etc/network/interfaces.d中的文件:
源目录/etc/network/interfaces.d

该文件/etc/wpa_supplicant/wpa_supplicant.conf将通过推荐的设置方法进行创建/修改,但可以手动设置。最近的Raspbian可以选择raspi-config输入SSID和密码。它应包含以下内容:

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

network={
    ssid="ESSID"
    psk="Your_wifi_password"
}

如果您需要连接到专用网络 (即,不广播SSID),请scan_ssid=1内部添加线路network={⋯}

注意如果要连接到其他网络(例如,在公司或家里),则可以包含多个network={⋯}条目。

如果您可以访问多个网络并希望连接到特定网络,请priority=100network={⋯}条目内添加该行。
您可以为每个网络选择不同的优先级,将选择优先级最高的可访问网络;默认值为0。

还有许多其他选项可以使用参见man wpa_supplicant.conf

关于过时的操作系统的注意事项

Jessie不包含10-wpa_supplicant用于管理WiFi接口的挂钩,因此需要链接到wpa_supplicant。这些设置与可预测的网络接口名称不兼容。

/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

注意在中调用dhcp /etc/network/interfaces禁用 dhcpcd

可预测的网络接口名称

Stretch引入了1个 可预测的网络接口名称,这些名称已在其他发行版中使用了一段时间。

网络接口的名称将由前缀en-以太网或wl-wlan组成,后跟x指示MACMAC例如enxb827eb123456wlx00c140123456。连接的Pi4,Pi3和PIZeroW的板载WiFi sdio将使用该名称wlan0

这对于使用多个网络接口的用户可能是有益的,但是对于大多数Pi用户而言,具有单个以太网和WiFi接口的差别不大。如果在中传递内核命令行,则可以恢复以前的名称eth0和名称。wlan0net.ifnames=0/boot/cmdline.txt

有一个选项raspi-config可启用可预测的网络接口名称。

1.由于某些无法理解的原因,基金会在引入期待已久的功能后仅三周就决定“禁用以太网设备的可预测网络接口名称”。在Advanced Optionsof 下有一个选项raspi-config可切换此设置。


设置静态IP地址

查看单独的答案静态IP地址


高级dhcpcd配置

默认情况下,Raspbian dhcpcd用于管理网络接口。这是自动的,大多数用户只需要指定无线网络的SSID和密码即可。

dhcpcd通过在中输入选项可以配置工作方式/etc/dhcpcd.conf。看到man dhcpcd.conf。有一个很好的文章dhcpcdhttps://wiki.archlinux.org/index.php/dhcpcd

以下描述了一些更常见的配置:

后备资料

dhcpcd当DHCP租约失败时,可以在其中配置静态配置文件,然后将其回退。这对于无头机器尤其有用,在无头机器中,静态配置文件可用作“恢复”配置文件,以确保始终可以连接到该机器。静态配置文件设置为任何其他静态IP地址

    #定义静态配置文件
    资料static_eth0
    静态ip_address =⋯
    静态路由器=⋯
    静态domain_name_servers =⋯

    #退回到eth0上的静态配置文件
    eth0接口
    后备static_eth0

阻止dhcpcd配置接口

通常这样做是为了使Pi可以用作访问点(需要使用其他文件进行配置),同时允许DHCP在其他接口上进行常规配置。

添加denyinterfaces wlan0到文件的末尾(但在任何其他添加的接口行之上)。

阻止dhcpcd在接口上配置网关

如果您希望接口不安装任何默认路由(通常与静态IP地址结合使用),请指定

    Nogateway

主机特定配置

dhcpcd可以根据主机网络配置接口。这将使用地址解析协议(ARP)在尝试DHCP解析之前基于MAC或IP地址来探查主机。

    接口bge0
    设定192.168.0.1

    #我特定的192.168.0.1网络
    个人资料dd:ee:aa:dd:bb:ee
    静态ip_address = 192.168.0.10 / 24

    #通用192.168.0.1网络
    配置文件192.168.0.1
    静态ip_address = 192.168.0.98 / 24

如果您不使用这些功能并且网络简单,则可以通过禁用ARP探测来加快DHCP的速度。

    Noarp

使用不同的wpa_supplicant文件

可以将dhcpcd配置为对特定的无线接口使用不同的wpa_supplicant.conf文件。

创建一个以例如命名的文件wpa_supplicant-"$interface".conf,将仅由/etc/wpa_supplicant/wpa_supplicant-wlan0.confwlan0

/etc/wpa_supplicant/wpa_supplicant.conf 将用于任何其他无线接口。


将计算机连接到Pi

Raspbian的最新版本(使用dhcpcd)允许ssh在一个link-local地址上工作,并且avahi(这是一个零配置实现)使程序可以发现在本地网络上运行的主机。

这意味着您可以将Pi插入计算机(使用以太网电缆)或本地网络路由器,然后在不知道IP地址的情况下进行连接。

您可以轻松地从Linux和OS X使用ssh pi@hostname.local(默认主机名是raspberrypi)进行连接。这应该适用于流行的GUI ssh程序。对于某些版本的Windows和以非标准方式使用.local的网络,有时会出现问题。(请参阅https://en.wikipedia.org/wiki/.local

注意.local分辨率并不总是有效,例如在中rsync。以下内容应解析IP(并且可以包含在bash脚本中)
RemotePi=$(getent hosts hostname.local | awk '{ print $1 }')

如果您的系统不必getent查询hosts例如macOS,则可以使用以下命令:
RemotePi=$(arp -n hostname.local | awk '{x = $2; gsub(/[()]/, "", x); print x }')

如果您有多个Pi,则需要确保每个Pi都有一个唯一的主机名。

您可以使用交叉电缆,但不需要一根电缆(大多数现代接口会自动检测到)。

直接连接的一个缺点是Pi将无法访问Internet,并且日期也无法设置。您可以通过ssh pi@hostname.local sudo date -s$(date -Ins)在连接之前运行从主机复制日期。

范围:

本教程是关于设置常规的Raspbian安装,以使用附带的软件访问Internet。它还涵盖了到同一网络上其他计算机的连接。

它主要旨在帮助新用户努力使他们的Pi(特别是WiFi)正常工作。

它不包括:

  • 其他网络管理员。
  • 在Pi上运行高级网络(例如DHCP服务器,隧道,VPN,访问点)。
  • 的使用ipv6(尽管如果您有ipv6网络,这应该可以工作)。
  • 备用网络设置。(设置网络的方式有很多。)

2
我对“这不是您要在文件中键入的内容”感到困惑。如果我没记错的话,Milliways在这里的意思是您不会用这段文字替换整个文件。但是,最好在末尾添加此位(当然,可以根据自己的喜好修改参数)。另外,如果您不想通过该接口设置路由,则routersdomain_name_servers行是可选的。
2015年

4
因此,现在,要配置您的IP地址,您需要安装DHCP客户端并使用其配置来设置静态ip ?!如果我想在Raspbian上使用DHCP服务器,那将不起作用!DHCP客户端在DHCP服务器启动运行,因此尚未设置IP,从而使DHCP服务器(isc-dhcpd)抱怨。
Luc Stepniewski 2015年

16
正式记录在哪里?
Alastair McCormack

6
该文件记录在哪里?我的意思是,WTF。我遵循了这些指示以及许多其他指示,因此无法建立联系。我可以高兴地看到和扫描网络,但是它永远不会连接或关联。我对此很奇怪。
AaronJAnderson


64

设置静态IP地址

有关设置静态IP地址的问题是此站点上最常见的问题。教程很多(很多错误,过时或不完整的教程)。

免责声明

在继续之前,我认为必须声明不建议设置静态地址。电信工程师不这样做。静态IP地址可能是网络管理员生活的祸根。在某些情况下,需要静态IP地址,例如,如果您正在运行DHCP服务器,或者在没有DHCP服务器的隔离网络上运行。

如果您决定继续进行操作,则应确保操作正确。改编自 Foundation Network教程

查找本地网络的设置

这最容易通过Pi本身使用DHCP来完成,但是可以在网络上的任何计算机上完成,尽管命令在其他系统上可能有所不同。

ip -4 addr show | grep global

应该给出如下输出:

inet 10.1.1.30/24 brd 10.1.1.255 scope global eth0
inet 10.1.1.31/24 brd 10.1.1.255 scope global wlan0

第一个地址是您Pi在网络上的IP地址,斜杠后的部分是网络大小。您极有可能是/ 24。

第二个地址是网络的brd(广播)地址。

查找路由器(或网关)的地址

ip route | grep default | awk '{print $3}'

10.1.1.1

最后记下DNS服务器的地址,该地址通常与网关相同。

cat /etc/resolv.conf

# Generated by resolvconf
nameserver 10.1.1.1

然后按照ONE下列方法。(这里有没有记录的其他方法。这是最常见的上Raspbian。)(在任一方法替代相应的网络接口名称eth0wlan0可预见的网络接口名称

如果要查找接口名称(即使未连接),请运行以下命令 ls /sys/class/net/

无论采用哪种方法,都应选择未使用的IP地址。理想情况下,在同一子网内超出DHCP服务器使用的范围。

dhcpcd方法

保留/etc/network/interfaces默认值(如上所述)。

编辑/etc/dhcpcd.conf如下:

 Here is an example which configures a static address, routes and dns.
       interface eth0
       static ip_address=10.1.1.30/24
       static routers=10.1.1.1
       static domain_name_servers=10.1.1.1

       interface wlan0
       static ip_address=10.1.1.31/24
       static routers=10.1.1.1
       static domain_name_servers=10.1.1.1

ip_address是上面命令的地址和大小(或同一网络上的另一个未使用的地址), routers是路由器(或网关)的地址。 domain_name_servers是/etc/resolv.conf中的DNS地址。(请参阅man dhcpcd.conf

dhcpcdhttps://wiki.archlinux.org/index.php/dhcpcd上有一篇不错的文章。它Fallback profile是静态IP的替代方法


网络接口方法

注意不建议使用此方法(仅在禁用DHCP客户端守护程序时才有效),特别是在您计划同时使用两个接口时。

在您的Pi中配置静态网络地址 /etc/network/interfaces

auto eth0
iface eth0 inet static
        address 10.1.1.30
        netmask 255.255.255.0
        gateway 10.1.1.1

allow-hotplug wlan0
iface wlan0 inet static
        address 10.1.1.31
        netmask 255.255.255.0
        gateway 10.1.1.1
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

address是上面命令的地址(或同一网络上的另一个未使用地址), netmask255.255.255.0对应于网络大小/24gateway是路由器(或网关)的地址。

您也可以指定dns-nameservers,但这通常不是必需的。该broadcast自动源自addressnetmask和无需指定。有关更多详细信息,请参见https://wiki.debian.org/NetworkConfiguration

您可以设置一个或两个eth0,也可以设置wlan0一个可预测的网络接口名称

然后禁用DHCP客户端守护程序,切换到标准Debian网络

sudo systemctl disable dhcpcd
sudo systemctl enable networking

重新启动以使更改生效:

sudo reboot

1
您提到的这两种方法的优缺点是什么?
Elliott B

@ElliottB阅读上面的免责声明。
Milliways

1
我读过,我只是想知道dhcpcd与网络的两种方法。我想看看静态IP是否可以使其启动更快,因为我看到dhcpcd的延迟为15秒systemd-analyze
Elliott B

我都不使用-只是因为那里有很多人尝试(无论出于何种原因-这使我难以理解),但都弄错了,因为他们不了解网络。没有简单的答案,因为这取决于您在做什么。注意除非您使用非常慢的DHCP服务器,否则设置静态IP不会对启动时间产生任何影响。如果您有任何疑问,您应该提出一个问题-这不是讨论论坛。
Milliways

我已添加static domain_search=example.local到dhcpcd.conf方法。随时还原/编辑/与我联系。
MadMike

35

对于以太网连接上的静态IP地址:

  1. sudo nano /etc/dhcpcd.conf
  2. 在文件顶部键入以下几行:

    interface eth0
    static ip_address=192.168.1.XX/24
    static routers=192.168.1.1
    static domain_name_servers=192.168.1.1
    
  3. sudo reboot

对于最近的Jessie更新,需要这样做。/etc/network/interfaces应该一个人呆着。打开浏览器,输入路由器地址(大多数情况下为192.168.1.1),然后检查您的家庭网络,以确保Raspberry Pi显示为“静态”。


5
如果您打算复制部分答案,则至少应该正确。
Milliways

2
它可能在您的情况下确实起作用,但由于dhcpcd推断出网络掩码(通常无法针对其他地址范围)而无法正常运行。阅读man页面。
Milliways

1
您断言/ etc / network / interfaces应该单独放置,但是您没有说为什么。实际上,事实恰恰相反。请参阅下面的答案。
JayEye

2
如果要在不重新启动的情况下重新启动网络服务,请确保文件中有auto eth0上述iface eth0 inet manual/etc/network/interface。通过sudo service networking restart命令重启网络
Barmaley '16

3
这可以是复制的答案,但具有在树莓派上设置静态ip所需的一切,接受的答案不必要长。
佩德罗·洛比托

11

简短而简单的方法如何执行此操作:

覆盆子杰西&拉伸

这将设置一个固定的IP并启用ssh守护程序:

  • 打开/boot/cmdline.txt并添加ip=192.168.1.20到该行的末尾。
  • 创建一个空文件 /boot/ssh
  • 启动您的Raspberry Pi
  • 在Linux上,启动ssh pi@192.168.1.20密码为raspberry。在Windows上使用Putty通过ssh连接。

我正在使用它来访问我的Raspbian Jessie和Stretch,该靴子无需连接显示器即可启动,仅具有电源和以太网。使用ssh shell访问它之后,我可以继续设置。

经过这种处理后,Raspberry PI具有两个 IP:一个来自您指定的固定IP,一个来自运行在Raspberry Pi上的dhcp-client。

ifconfig将显示固定的IP。右上角的蓝色箭头图标显示dhcpd-IP。


1
请不要建议禁用IPv6。没有必要。
Anders

为什么我需要2个IP?
SiXandSeven8ths

@ SiXandSeven8ths不需要2个IP。我已经观察到了这种行为,并在此处进行描述以最大程度地减少意外。我会改善答案,但没有时间这样做。
MadMike '17

@MadMike我也观察到了这一点,它为我搞砸了,最终我将其整理了一下,但这令人困惑。
SiXandSeven8ths 17-10-20

1
@ SiXandSeven8ths很抱歉听到这个消息。对我来说很好。这也是在树莓派上不安装任何显示器和键盘的唯一方法。所以我认为这对其他人可能有用。
MadMike '17

4

您应该做的第一件事是使Raspberry pi的IP保持静态。这样,每当您打开Raspberry pi的电源时,它都应连接到您的访问点(热点)。

连接到您的接入点。在树莓派的终端中输入ifconfig并在下面输入该IP地址,在我的情况下为192.168.43.233

首先编辑dhcpcd.conf文件

sudo nano /etc/dhcpcd.conf

一直滚动到底部,然后根据您的连接(有线或无线)在末尾添加此行。

interface eth0

static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1


interface wlan0
static ip_address=192.168.43.233/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

按Ctrl + x保存并重新启动。现在打开树莓派的电源,它将自动连接到您的接入点。

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.