大部分情况下树莓派会自动进行网络配置,但有时又不得不自行配置网络,接下来讨论如何配置树莓派的网络。
如何把树莓派连接到网络并且获取网络的相关信息呢?只需要用一根网线将树莓派连接到以太网或者直接无线连接到无线局域网上,就可以与外界通信了。这背后的原理是DHCP协议,可以帮助你自动对网络进行配置。一般来说,树莓派会被分配一个IPv4格式的地址,比如192.168.0.37。其中,192.168代表一段私有网络范围的起点,在你房间里的设备会有192.168.0.0到192.168.255.255的IP地址。
想要获取你的树莓派的网络连接信息,可以使用ifconfig命令,如图2-1所示。在输出的信息中,你应该会看到自己的IPv4地址,比如上面的192.168.0.37。这些数字是在eth0板块下的,这是因为你现在连接的是以太网。顺便提一下,最快获知IP地址的方法是使用命令hostname -I。
图2-1
一般来说,IP地址是一个在区间192.168.0.0到192.168.255.255之内的私有地址,放在eth0板块下,这里的IP地址是196.168.0.37。
ifconfig命令会返回你的网络地址(包括IPv4地址)。
通常在你的树莓派连接到局域网的时候,系统会自动分配一个IP地址。当然,这个自动分配的地址每次连接的时候都会变化。如果你想要每次连接的时候都有相同的IP地址,那么应该怎么做呢?
首先,需要修改文件/etc/dhcpcd.conf,如图2-2所示。
图2-2
通过编辑这个文件,可以自定义连接时的IP地址。
通过nano打开文件,拉到脚本的底端,添加如下脚本:
接下来保存文件并退出nano。
使用ping可以在另一台电脑上测试树莓派的网络情况,如图2-3所示。
图2-3
现在每次连接网络时树莓派都会有一样的IP地址,即192.168.0.20。不使用192.168.0.1的原因是已经被路由器占用了。当然,你也可以根据喜好自行设定,但要注意范围是从192.168.0.2到192.168.0.255。
重启,然后输入“hostname –I”,你应该会看到自己的IP地址已经设定成192.168.0.20。一般最好不要把IP地址设成静态的,如果想要改回去,只要把刚才添加的内容删除即可。
刚才添加到dhcpcd.conf中的192.168.0.1 8.8.8.8设定了域名服务器(DNS)。域名服务器的作用是将字符串型的网址映射为IP地址(比如树莓派官网raspberrypi.org到93.93.128.230)。如果想要通过浏览器和域名来访问网站,DNS是必需的。
Ping是最基础的网络连接测试命令,会发送一个ICMP的ECHO_REQUEST信号到网络上的设备。ICMP是每个设备都会内置的用于网络检测的模块。Ping返回的信息包括是否成功连接、延迟、丢包情况等。
一般来说,ping localhost如果正常工作,就会告诉你本地网络回环是正常工作的,并且localhost被解析到127.0.0.1。注意,名字的解析有时会引发很多问题。
从同一局域网内的另一台计算机上输入“ping 192.168.0.20”;如果在Windows机器上,Ping会测试5次;在Linux机器上则会一直测试,直到你按下Ctrl+C快捷键。你也可以自己指定测试的次数:
$ ping -c 5 raspberrypi.org
192.168.0.4之类的地址是IPv4地址,最新的标准是IPv6。一个IPv6地址是128位的,比如fd51:42f8:caae:d92e::1。你可以通过dhcpcd.conf来了解如何设定一个静态的IPv6地址。
除了动态DNS,一些网站(比如FreeDNS.com)提供公用DNS服务器。如果你不想使用Google的DNS服务,就自行寻找其他替代品。
有时你可能想要远程连接一台树莓派设备。在树莓派上使用远程登录非常简单,因为底层的UNIX系统提供了大量的远程连接工具。
在现在的互联网远程连接工具中,使用最多的应该就是SSH了。SSH凭借独特的加密特性取代了telnet和rlogin。在第一次初始化完成后,你可以很容易建立一个加密连接。需要注意的是,在使用SSH之前,你应该先使用passwd修改默认的树莓派密码。
可能在你现在的设备上SSH服务还没有被打开,那么你应该输入“sudo raspiconfig”,然后打开SSH服务,再用ifconfig命令查看当前的IP地址,就可以连接到树莓派了。
在一台基于UNIX系统的计算机上,可以直接通过命令行里的ssh命令进行连接。假设IP地址是192.168.0.20,那么只需要先输入“ssh pi@192.168.0.20”再输入密码即可。在Windows上,可以使用openssh客户端或者早期的PuTTY;在安卓上,可以使用ConnectBot或Termux。
你可以在树莓派上检查SSH是否正常工作。如果没有,可以开启SSH服务。出于安全因素考虑,应该生成自己的密钥,然后确保不要把私钥分享给别人,如图2-4所示。
图2-4
经过上面这些步骤以后,你应该已经通过SSH连接到树莓派上了。如果没有连接成功,可以通过在树莓派上输入“ssh@localhost”来验证SSH服务,同时检查网络设置。
现在已经可以通过局域网里的另一台设备访问树莓派了,接下来更改一些配置使得SSH远程连接更加安全。首先,需要修改配置文件/etc/ssh/sshd_config,把其中的PermitRootLogin yes改为PermitRootLogin no;接下来,输入“sudo service ssh reload”重启服务,禁止用户以root账户登录。注意ssh_config与sshd_config的区别:前者是客户端的配置文件,后者是守护进程的配置文件。你还可以将ssh端口换成其他数字,但是要记住在以后连接的时候要指定连接的端口,比如ssh -p 12123。
如果你想要通过互联网访问树莓派,就需要一个公网IP地址。一般情况下,如果是通过ADSL路由器上网,就可能是没有公网IP的。这时可能需要像花生壳这样的内网穿透服务(详细操作可以查看花生壳的官网:https://hsk.oray.com/)。
想要与树莓派进行远程文件的复制分享也很简单,只要使用scp命令即可:
scp pi@192.168.0.2:/home/pi/testfile1 .
这条命令的意思是从树莓派上复制一个文件到当前目录。使用SCP时,也可以一同使用通配符以及-r选项,后者可以让你递归地复制文件夹内的所有项。
注意
使用FTP已经不安全,建议不要使用。
samba有很多可以定制的选项,如果你只想要它正常运行,只需要把你的工作组的名字加到默认设置中即可,如图2-5所示。
图2-5
你可能会需要通过百度云盘这样的服务来在不同的机器上共享文件,但是在局域网内没有必要这样做。samba服务可以使一台Windows计算机以共享设备的方式访问树莓派。你可以通过以下指令安装samba:
$ sudo apt-get install samba samba-common-bin
现在编辑/etc/samba/smb.conf文件并且修改workgroup变量(Windows 7以下设为WORKGROUP,Windows 7以上设为HOME)。接下来需要确认pi是一个网络用户:
$ sudo smbpasswd -a pi
然后重启服务:
$ sudo service samba restart
你应该可以在Windows的资源管理器里看到树莓派了。现在修改samba的配置文件,调整分享的设备以及权限:
$ sudo nano /etc/samba/smb.conf
跳到最后一行,加入以下内容:
然后重启服务:
$ sudo service samba restart
这时就可以访问流量和写入想要分享的文件夹了。