第4章 TCP/IP&Linux IP配置

1.1 TCP/IP协议概述

要学好Linux,对网络协议也要有充分的了解和掌握,例如传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol,TCP/IP),TCP/IP名为网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。

TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地,而IP是给因特网的每台联网设备规定一个地址。

基于TCP/IP的参考模型将协议分成四个层次,它们分别是网络接口层、网际互连层(IP层)、传输层(TCP层)和应用层。如图3-9为TCP/IP跟OSI参考模型层次的对比:

0_1309781837bovw

图3-9 ISO7层模型与TCP/IP四层对比

OSI模型与TCP/IP模型协议功能实现对照表,如图3-10所示:

图3-10 ISO7层模型与TCP/IP层次功能对比

1.2 IP地址及网络常识

互联网协议地址(Internet Protocol Address,IP),IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址被用来给Internet上的每个通信设备的一个编号,每台联网的PC上都需要有IP地址,这样才能正常通信。

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(即4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。

常见的IP地址,分为IPv4与IPv6两大类。IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用。

IPV4有4段数字,每一段最大不超过255。由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址的发放愈趋严格,各项资料显示全球IPv4位址在2011年已经全部分发完毕。

地址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过IPv6重新定义地址空间。IPv6采用128位地址长度。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,IPV6的诞生可以给全球每一粒沙子配置一个IP地址,还考虑了在IPv4中解决不好的其它问题,如图3-11所示:

图3-11 IPV4与IPV6地址

1.3 IP地址分类

IPV4地址编址方案有A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用,如下为分类详解:

  1. A类IP地址

一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600万台。

A类IP地址 地址范围1.0.0.0到127.255.255.255 (二进制表示为:00000001 00000000 00000000 00000000 – 01111110 11111111 11111111 11111111),最后一个为广播地址,A类IP地址的子网掩码为255.0.0.0,每个网络支持的最大主机数为256的3次方-2=16777214台。

  1. B类IP地址

一个B类IP地址是指在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。

B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。

B类IP地址地址范围128.0.0.0-191.255.255.255(二进制表示为:10000000 00000000 00000000 00000000—-10111111 11111111 11111111 11111111)。

最后一个是广播地址,B类IP地址的子网掩码为255.255.0.0,每个网络支持的最大主机数为256的2次方-2=65534台。

  1. C类IP地址

一个C类IP地址是指在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。

C类IP地址范围192.0.0.0-223.255.255.255[3] (二进制表示为: 11000000 00000000 00000000 00000000 – 11011111 11111111 11111111 11111111)。C类IP地址的子网掩码为255.255.255.0,每个网络支持的最大主机数为256-2=254台。

  1. D类IP地址

D类IP地址又称之为多播地址(Multicast Address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.255。

  1. 特殊的地址

每一个字节都为0的地址(“0.0.0.0”)表示当前主机,IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址,IP地址中凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。

IP地址中不能以十进制“127”作为开头,而以数字127.0.0.1到127.255.255.255段的IP地址称为回环地址,用于回路测试,如:127.0.0.1可以代表本机IP地址,网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。

1.4 子网掩码

子网掩码(Subnet Mask)又名网络掩码、地址掩码,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。

通常的讲,子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。

对于A类地址,默认的子网掩码是255.0.0.0,而对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。

互联网是由各种小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。

子网掩码的设定必须遵循一定的规则。与二进制IP地址相同,子网掩码由1和0组成,且1和0分别连续。子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。

1.5 网关地址

网关(Gateway)是一个网络连接到另一个网络的“关口”, 网关实质上是一个网络通向其他网络的IP地址。主要用于不同网络传输数据。

例如我们电脑设备上网,如果是接入到同一个交换机,在交换机内部传输数据是不需要经过网关的,但是如果两台设备不在一个交换机网络,则需要在本机配置网关,内网服务器的数据通过网关,网关把数据转发到其他的网络的网关,直至找到对方的主机网络,然后返回数据。

1.6 MAC地址

媒体访问控制(Media Access Control或者Medium Access Control,MAC),也即是物理地址、硬件地址,用来定义网络设备的位置。

在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。

IP地址工作在OSI参考模型的第三层网络层。两者之间分工明确,默契合作,完成通信过程。IP地址专注于网络层,将数据包从一个网络转发到另外一个网络;而MAC地址则专注于数据链路层,将一个数据帧从一个节点传送到相同链路的另一个节点。

IP地址和MAC地址一般是成对出现。如果一台计算机要和网络中另一外计算机通信,那么这两台设备必须配置IP地址和MAC地址,而MAC地址是网卡出厂时设定的,这样配置的IP地址就和MAC地址形成了一种对应关系。

在数据通信时,IP地址负责表示计算机的网络层地址,网络层设备(如路由器)根据IP地址来进行操作;MAC地址负责表示计算机的数据链路层地址,数据链路层设备,根据MAC地址来进行操作。IP和MAC地址这种映射关系是通过地址解析协议(Address Resolution Protocol,ARP)来实现的。

1.7 Linux系统配置IP

Linux操作系统安装完毕,那接下来如何让Linux操作系统能上外网呢?如下为Linux服务器配置IP的方法。

Linux服务器网卡默认配置文件在/etc/sysconfig/network-scripts/下,命名的名称一般为:ifcfg-eth0 ifcfg-eth1 ,eth0表示第一块网卡,eth1表示第二块网卡,依次类推,例如DELL R720标配有4块千兆网卡,在系统显示的名称依次为:eth0、eth1、eth2、eth3。

修改服务器网卡IP地址命令为vi /etc/sysconfig/network-scripts/ifcfg-eth0 (注CentOS7网卡名ifcfg-eno16777736)。vi命令打开网卡配置文件,默认为DHCP方式,配置如下:

DEVICE=eth0

BOOTPROTO=dhcp

HWADDR=00:0c:29:52:c7:4e

ONBOOT=yes

TYPE=Ethernet

vi命令打开网卡配置文件,修改BOOTPROTO为DHCP方式,同时添加IPADDR、NETMASK、GATEWAY信息如下:

DEVICE=eth0

BOOTPROTO=static

HWADDR=00:0c:29:52:c7:4e

ONBOOT=yes

TYPE=Ethernet

IPADDR=192.168.1.103

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

服务器网卡配置文件,详细参数如下:

DEVICE=eth0 #物理设备名
ONBOOT=yes # [yes|no](重启网卡是否激活网卡设备)
BOOTPROTO=static #[none|static|bootp|dhcp](不使用协议|静态分配|BOOTP协议|DHCP协议)

TYPE=Ethernet #网卡类型

IPADDR=192.168.1.103 #IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.1.1 #网关地址

服务器网卡配置完毕后,重启网卡服务:/etc/init.d/network restart 即可。

然后查看ip地址,命令为:ifconfig或者ip addr show 查看当前服务器所有网卡的IP地址。

CentOS 7 Linux中,如果没有ifconfig命令,可以用ip addr list/show查看,也可以安装ifconfig命令,需安装软件包net-tools,命令如图3-12所示:

yum install net-tools -y

图3-12 YUM安装net-tools工具

1.8 Linux系统配置DNS

如上网卡IP地址配置完毕,如果服务器需上外网,还需配置域名解析地址(Domain Name System,DNS),DNS主要用于将请求的域名转换为IP地址,DNS地址配置方法如下:

修改vi /etc/resolv.conf 文件,在文件中加入如下两条:

nameserver 202.106.0.20

nameserver 8.8.8.8

如上分别表示主DNS于备DNS,DNS配置完毕后,无需重启网络服务,DNS是立即生效。

可以ping -c 6 www.baidu.com 查看返回结果,如果有IP返回,则表示服务器DNS配置正确,如图3-13所示:

图3-13 ping命令返回值

1.9 Linux网卡名称命名

CentOS7服务器,默认网卡名为ifcfg-eno16777736,如果我们想改成ifcfg-eth0,使用如下步骤即可:

  1. 编辑/etc/sysconfig/grub文件,命令为vi /etc/sysconfig/grub,在倒数第二行quiet后加入如下代码,并如图3-14所示:
net.ifnames=0 biosdevname=0

图3-14 网卡配置ifnames设置

  1. 执行命令grub2-mkconfig -o /boot/grub2/grub.cfg,生成新的grub.cfg文件,如图3-15所示:
grub2-mkconfig -o /boot/grub2/grub.cfg

图3-15 生成新的grub.cnf文件

  1. 重命名网卡名称,执行命令mv ifcfg-eno16777736 ifcfg-eth0,修改ifcfg-eth0文件中DEVICE= eno16777736为DEVICE= eth0,如图3-16所示:

图3-16 重命名网卡名称

  1. 重启服务器,并验证网卡名称是否为eth0,Reboot完后,如图3-17所示:

图3-17 验证网卡设备名称

1.10 CentOS7密码重置

修改CentOS7 ROOT密码非常简单,只需登录系统,执行命令passwd回车即可,但是如果忘记ROOT,无法登录系统,该如何去重置ROOT用户的密码呢?如下为重置ROOT用户的密码的方法:

  1. Reboot重启系统,系统启动进入欢迎界面,加载内核步骤时,按e,然后选中“CentOS Linux (3.10.0-327.e17.x86_64)7 (Core)”,如图3-18所示:

图3-18 内核菜单选择界面

  1. 继续按e进入编辑模式,找到ro crashkernel=auto xxx项,将ro改成rw init=/sysroot/bin/sh,如图3-19所示:

图3-19 内核编辑界面

  1. 修改为后如图3-20所示:

图3-20 内核编辑界面

  1. 按ctrl+x按钮进入单用户模式,如图3-21所示:

图3-21 进入系统单用户模式

  1. 执行命令chroot /sysroot访问系统,并使用passwd修改root密码,如图3-22所示:

图3-22 修改ROOT用户密码

  1. 更新系统信息,touch /.autorelabel,执行命令touch /.autorelabel,在/目录下创建一个.autorelabel文件,如果该文件存在,系统在重启时就会对整个文件系统进行relabeling重新标记,可以理解为对文件进行底层权限的控制和标记,如果seLinux属于disabled关闭状态则不需要执行这条命令,如图3-23所示:

图3-23 创建autorelabel文件

1.11 远程管理Linux服务器

系统安装完毕后,可以通过远程工具来连接到Linux服务器,远程连接服务器管理的好处在于可以跨地区管理服务器,例如读者在北京,想管理的服务器在上海某IDC机房,通过远程管理后,不需要到IDC机房现场去操作,直接通过远程工具即可管理,与在现场的管理是一模一样。

远程管理Linux服务器要满足如下三个步骤:

  1. 服务器配置IP地址,如果服务器在公网,需配置公网IP,如果服务器在内部局域网,可以直接配置内部私有IP即可;
  2. 服务器安装SSHD软件服务并启动该服务,几乎所有的Linux服务器系统安装完毕均会自动安装并启动SSHD服务,SSHD服务监听22端口,关于SSHD服务、OpenSSH及SSH协议后面章节会讲解;
  3. 在服务器中防火墙服务需要允许22端口对外开放,初学者可以临时关闭防火墙,CentOS6 Linux关闭防火墙的命令:service iptables stop,而CentOS7 Linux关闭防火墙的命令:systemctl stop firewalld.service。

常见的Linux远程管理工具包括:SecureCRT、Xshell、Putty、Xmanger等工具。目前主流的远程管理Linux服务器工具为SecureCRT,官网https://www.vandyke.com 下载并安装SecureCRT,打开工具,点击左上角quick connect快速连接,弹出界面如图3-24所示,连接配置具体步骤如下:

  • 协议(P):选择SSH2
  • 主机名(H):输入Linux服务器IP地址
  • 端口(o): 22
  • 防火墙(F):None
  • 用户名(U):root

单击下方的“连接”,会提示输入密码,输入root用户对应密码即可。

图3-24 SecureCRT远程Linux服务器

通过SecureCRT远程连接Linux服务器之后,会发现如图3-25所示界面,与服务器本地操作界面一样,在命令行可以执行命令,操作结果与在服务器现场操作是一样。

图3-25 SecureCRT远程Linux服务器

1.12 Linux系统目录功能

通过以上知识的学习,读者已经能够独立安装并配置Linux服务器IP并远程连接,为了进一步学习Linux,需熟练掌握Linux系统各个目录的功能。

Linux主要树结构目录包括:/、/root、/home、/usr、/bin、/tmp、/sbin、/proc、/boot等,如图3-26所示,为典型的Linux目录结构如下:

图3-26 Linux目录树形结构

Linux系统中常见目录功能如下:

  • / 根目录;
  • /bin 存放必要的命令;
  • /boot 存放内核以及启动所需的文件;
  • /dev 存放硬件设备文件;
  • /etc 存放系统配置文件;
  • /home 普通用户的宿主目录,用户数据存放在其主目录中;
  • /lib|lib64 存放必要的运行库;
  • /mnt 存放临时的映射文件系统,通常用来挂载使用;
  • /proc 存放存储进程和系统信息;
  • /root 超级用户的主目录;
  • /sbin 存放系统管理程序;
  • /tmp 存放临时文件;
  • /usr 存放应用程序,命令程序文件、程序库、手册和其它文档;
  • /var 系统默认日志存放目录。