准备材料:
- 三个没有联网的树莓派,所装系统为centos7;
- 一个交换机;
- MacBook一台;
- 正常连接外网的无线路由器一台;
- 网线若干,根据具体情况可能还需要准备网线转接头;
网络组成示例
感觉光文字描述不直观,我随便画了个示意图,大概如上图所示:
- 三个树莓派通过灰色的网线、交换机和MacBook组建成一个通信子网;
- MacBook通过无线(Wi-Fi)、路由器、其他个人电脑组成了另外一个通信子网;
对于交换机来说,交换机不会像路由器一样自动分配IP地址,我们通过网线、交换机进行连接的时候,此时虽然物理上产生链接了,但实际上并没有产生通信子网。
我们知道网络连接从功能上划分来说,分为七层,自顶向下分别为:
- 第七层:应用层;
- 第六层:表示层;
- 第五层:会话层;
- 第四层:传输层;
- 第三层:网络层;
- 第二层:数据链路层;
- 第一层:物理层;
此时我们只是搭好物理层、数据链路层,所以网络并不会产生通路;IP协议层属于网络层,由于交换机不会自动分配IP地址,所以此时我们需要给主机配置IP地址,建立网络层。这些层建好后,其他更上层的协议由操作系统进行实现,我们此时不做关注。
具体流程
树莓派的配置
- 启动网卡
ifconfig eth0 up
说明:启用名称为eth0的网卡,通常来说,树莓派也是有无线网络的,我们在安装系统的时候,进行初始化的时候如果没有选择网络,通常网卡是没有启动的。可以通过
ifconfig -a
进行查看有哪些网卡,然后根据具体情况进行网卡启动,对应的关闭网卡命令为:
ifconfig eth0 down
- 配置IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
说明:此处根据具体情况,进行网卡配置文件的修改,具体可以到/etc/sysconfig/network-scripts/
目录进行查看;
- 修改的配置文件内容
ONBOOT=yes # 开机启动
NM_CONTROLLED=yes
BOOTPROTO=static # IP地址方式设置为静态IP
IPADDR=192.168.2.1 # IP地址
NETMASK=255.255.255.0 # 子网掩码,默认为这个,不同的子网掩码能用的地址数不同
GETEWAY=192.168.2.10 # 默认网关先填这个
主要是配置以上几个参数,具体IP地址根据具体情况配置,依葫芦画瓢,分别设置其他几台树莓派的IPADDR
地址为:
192.168.2.2
192.168.2.3
- 重启网络
service network restart
正常情况下,当我们给三台主机连上后,三台主机相互进行ping
是能ping
得通的,但此时我们的MacBook
是ping
不同其他三台主机的;
MacBook的配置
如图所示,我们打开macOS的网络设置如图,一般来说,当我们的MacBook与交换机连上了后,此时的USB 10/....
这个网卡是绿色的,表示启用。我写这篇文章的时候不是在连接的情况下写的,所以是红色的。
配置IPV4的时候,我们选择手动
.
然后分别把IP地址、子网掩码、路由器分别配置为:
192.168.2.10
255.255.255.0
192.168.2.10
然后点击应用
按钮生效,正常的话,此时我们在MacBook上ping
其他主机是能ping
得通的;
好了,我们整个通信子网组建好了,整套网络之间也能互相访问,但是网络的通信机制决定了,不同网段的通信需要做路由器进行数据转发,具体的网络基础知识如果有疑问的话,可以通过搜索引擎搜索“子网掩码 IP地址 网关”进行了解。而对于子网来说,我们如果不能直接访问外网的话,通常我们在做程序安装的时候会带来诸多不便,也会产生诸多麻烦事。所以,此时我们就需要MacBook起到一个路由的作用。
MacBook配置数据转发
- 在
设置
页点击 按钮; - 选择“互联网共享”
- 共享来源选择“Wi-Fi”
- 共享给电脑选择“USB 10/100/1000 LAN”,这个地方根据具体情况选择,要看交换机连接的是MacBook的哪一张网卡;
此时,正常来说,我们的MacBook就实现了网络转发功能,在子网的主机上可以直接上网了;但是,当我们尝试着ping segmentfault.com
的时候却发现ping
不通;而我们可以随便找个外网的IP进行ping
,是能ping得通的;如果出现这种情况,那么通常来说就是DNS需要配置;
子网主机配置DNS
vi /etc/resolv.conf
写入配置
nameserver 8.8.8.8
nameserver 114.114.114.114
重启子网主机的网络
service network restart
此时我们再来尝试
ping segmentfault.com
或者
yum search nginx
都能正常的进行网络交互了。
总结
整体来说,我们做过的事情其实主要就是4件事情:
- 网络物理层的连接;
- IP地址配置;
- 路由转发配置;
- DNS配置;
而对于理解为什么需要做这些步骤,那么就需要理解网络七层协议的工作流程,理解网络的构建形式以及计算机系统是怎么实现这些协议的,然后才可以在不同的计算机上进行网络配置。