![计算机网络实验教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/171/33894171/b_33894171.jpg)
项目1 网络命令操作实验
项目介绍
网络命令是Linux开发中最基础的内容,通过它可以检查配置网络。熟练使用网络命令有助于开发者提高效率。本项目介绍了开发过程中常用到的网络命令,并按照难度分为简单网络命令和进阶网络命令两部分。简单网络命令部分主要介绍检测网络状况、查看网络配置的方法;进阶网络命令部分介绍网络配置、查看端口、抓包等操作命令。本项目通过对操作命令的详细介绍和相关实验操作,让读者进一步了解如何在Linux环境下操作网络。
任务一 简单网络命令
任务目的
1. 掌握简单网络命令的使用方法。
2. 学会使用简单网络命令获取网络信息,测试网络状况。
3. 掌握网络问题排查、诊断与分析的方法。
任务环境
简单网络命令实验的拓扑如图1-1所示。
![48458-00-008-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-008-01.jpg?sign=1739278845-2lNXDdxo0UHlWDUGcJwHGdfk59u1sgIT-0-fff09c4f8d456b612610c5e9453b8a92)
图1-1 实验拓扑
实验环境镜像配置说明如表1-1所示。
表1-1 实验环境镜像配置说明
![48458-00-008-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-008-02.jpg?sign=1739278845-PFyjxG5NwpfpNFarYC5mPSAewBfTEvrB-0-7381956661a41973f499511c03c54841)
注:系统默认的账户为root/root@openlab、openlab/user@openlab。
任务内容
1. 学习每个简单网络命令的作用及参数的含义。
2. 使用命令查看网络配置、检测网络状态和跟踪路由等。
实验原理
1. ifconfig命令
ifconfig用于显示、设置、启动和停止网络设备。通过此命令能够显示出正在使用的计算机的IP地址、子网掩码和默认网关等。当网络环境发生改变时,可通过此命令对网络进行相应的配置。ifconfig命令的格式和参数解释如下。
(1)命令格式。
ifconfig [网络设备] [参数]
(2)命令参数如表1-2所示。
表1-2 ifconfig命令参数说明
![48458-00-009-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-009-01.jpg?sign=1739278845-48GDoD0grZyaMuqUR6hNbX34qqaKSbCB-0-5f332eebcca23e65601cf45f6e613a84)
2. ping命令
ping命令用于检查网络是否通畅和网络连接的速度。简单地说,网络上的机器都有唯一确定的IP地址,给目标IP地址发送一个数据包,就会返回一个同样大小的数据包,根据返回的数据包可以确定目标主机是否存在,初步判断网络是否通畅以及连接速度等信息。根据数据包返回时间和丢包率,可以大致判断网络是否稳定。ping返回的异常信息有“Request Timed Out”“Destination Host Unreachable”“Bad IP Address”和“Source Quench Received”。
(1)Request Timed Out表示对方主机可以到达但是连接超时,这种情况通常是对方拒绝接收发给它的数据包而造成的数据包丢失。原因可能是对方装有防火墙。
(2)Destination Host Unreachable表示对方主机不存在或者没有跟对方建立连接。
(3)Bad IP Address表示可能没有连接到DNS服务器,所以无法解析这个IP地址,也可能是IP地址不存在。
(4)Source Quench Received表示对方或中途的服务器繁忙无法回应。
说明:“Destination Host Unreachable”和“RequestTime Out”的区别:如果所经过路由器的路由表中有到达目标的路由,而目标因为其他原因不可到达,这时候会出现“Request Time Out”;如果路由表中没有到达目标的路由,则会出现“Destination Host Unreachable”。
ping命令的格式和参数解释如下。
(1)命令格式。
ping [参数] [主机名或IP地址]
(2)命令参数如表1-3所示。
表1-3 命令参数说明
![48458-00-010-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-010-01.jpg?sign=1739278845-pB2a1qr7tpx8KsqBfH42NwXrVIZSDwdu-0-992fea8f9c1f0e3b28c6d4a71ed6ebb2)
3. traceroute命令
traceroute是用来显示源主机到目标主机之间所经过网关的命令。traceroute命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。首先,traceroute发送一个TTL是1的IP数据包到目的地址,当路径上的第一个路由器收到这个数据包时,TTL将会减1,此时TTL变为0,该路由器将此数据包丢弃,并返回一个ICMP time exceeded消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址)。traceroute收到这个消息后,便知道这个路由器在路径上,接着traceroute再发送一个TTL是2的数据包,继而发现第二个路由器。依此规律,traceroute每次将发送的数据包的TTL加1来发现下一个路由器,一直持续到某个数据包抵达目的地。当数据包到达目的地后,该主机不会返回ICMP time exceeded消息,此时traceroute通过UDP数据包向不常见端口(30000以上)发送数据包,会收到ICMP port unreachable消息,故可判断到达目的地。traceroute命令的格式和参数解释如下。
(1)命令格式。
traceroute[参数][主机]
(2)命令参数如表1-4所示。
表1-4 traceroute命令参数说明
![48458-00-011-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-011-01.jpg?sign=1739278845-dwAFuFDmHm6MnbZZ87tOMbnELlfcuPeE-0-8409f45873739ec6d1332e269e6a0fa4)
4. route命令
route用于显示和操作IP路由表,它的主要作用是创建静态路由。在Linux系统中,设置路由通常是为了解决以下问题:Linux系统在一个局域网中,局域网中有一个网关,若要让机器访问Internet,就需要将网关的IP地址设置为Linux机器的默认路由。route命令的格式和参数解释如下。
(1)命令格式。
route [-f] [-p] [command] [destination] [mask netmask] [gateway] [metric] [if interface]
(2)命令参数如表1-5所示。
表1-5 route命令参数说明
![48458-00-012-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-012-01.jpg?sign=1739278845-lCBw3lOv6fUuYPzaSASSXNadnqjBCOqs-0-897b7104d9518e846bf03aa74ba3992d)
说明:直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启后,该路由就失效了,可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
实验步骤
1. ifconfig命令
步骤1 在应用菜单页面,单击终端图标,打开虚拟机终端界面,如图1-2所示。
![48458-00-012-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-012-02.jpg?sign=1739278845-4ZjR8PrAXeF8PLbHR9cRrzc4xHcASqWf-0-075946a6960d667d4485bcc13f0728ff)
图1-2 打开虚拟机终端界面
步骤2 执行su root命令,切换到root用户。
步骤3 执行ifconfig命令,查看网络设备信息,如下所示。
![48458-00-013-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-013-01.jpg?sign=1739278845-blGvKTD8IZr5wrshyuIn94DS1DgLb5Ky-0-0c10f17d2340ac224e7f8e06ee439aac)
其中
• eth0表示第一块网卡。
• HWaddr表示网卡的物理地址,即MAC地址。
• inet addr表示网卡的IPv4地址。
• inet6 addr表示网卡的IPv6地址。
• Bcast表示网卡的广播地址。
• Mask表示子网掩码地址。
• UP表示网卡开启状态。
• RUNNING表示网卡的网线被接上。
• MULTICAST表示支持组播。
• MTU表示最大传输单元。
• RX packets、TX packets表示接收、发送数据包情况统计。
• RX bytes、TX bytes表示接收、发送数据字节数统计信息。
• lo表示主机的回环地址。
步骤4 执行如下命令,关闭网卡。
# ifconfig eth0 down
步骤5 执行ifconfig命令查看网络设备信息。如下所示,已无eth0网卡信息,表示eth0网卡已关闭。
![48458-00-013-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-013-02.jpg?sign=1739278845-y56TwGaopoBotIsQZC98uLeiU9DwezCR-0-213eccb08c8d4d9b46f101a3b04aef83)
步骤6 执行如下命令,开启网卡。
# ifconfig eth0 up
步骤7 执行ifconfig命令查看网络设备信息。如下所示,有eth0网卡信息,表示eth0网卡已启动。
![48458-00-014-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-014-01.jpg?sign=1739278845-CXzIxu0FD7sNTurNOTafHdu06V2qKMnX-0-d50d6fce948318403196f227fe86cfbe)
步骤8 执行如下命令,配置IP地址等信息。
# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
其中,192.168.2.10表示IP地址,255.255.255.0表示子网掩码,192.168.2.255表示广播地址。
步骤9 执行ifconfig命令,查看配置后的网络信息,如下所示。
![48458-00-014-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-014-02.jpg?sign=1739278845-GTxHdTSGiSQVlMt6BPBLqjd9PM1vxobr-0-41cad679d58f56e6820a065bddfcd54a)
步骤10 执行reboot命令,重启服务器。
步骤11 执行ifconfig命令,查看配置后的网络信息,如下所示。
![48458-00-014-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-014-03.jpg?sign=1739278845-KxSmoQLpDfIYAY6ljmLuRc4LpqfX4NJp-0-93ee9a87cb0579cc4f4fa6f0f098a206)
说明:机器重启后,配置的IP地址失效,若想将配置信息永久保存在计算机中,需要修改网卡的配置文件。
2. ping命令
步骤1 执行ping 127.0.0.1命令,ping回环地址,检查本地的TCP/IP是否设置完成,如下所示。
![48458-00-015-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-015-01.jpg?sign=1739278845-9WxADkie1cknedNEladdOno1asFIo487-0-23fec473492c34cb274634037a656626)
其中
• 64 bytes:表示本次传送的ICMP包的大小,此值为预设值。
• icmp_seq=x(x是大于1的整数):响应包的序列号,这个序列号在网络正常的情况下是连续的,如果出现不连续的情况,网络会出现丢包的情况。丢包可能是物理硬件造成的,但也可能是IP地址冲突造成的。
• ttl=64:表示IP数据包在计算机网络中存在的时间。
• time:表示服务器回应客户端的响应时间。
说明:执行Ctrl+C可停止发送数据包。
步骤2 执行ping 30.0.1.3命令,ping本机IP地址,检查本机的IP地址是否设置有误,如下所示。
![48458-00-015-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-015-02.jpg?sign=1739278845-XnJTjRZDLkEYRCZO6rZ3P4a5MLbUwNU1-0-2e9b7c9d676ae0ad6248d0b168444c45)
说明:ping本机网关或本机IP地址,可以检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常。
步骤3 执行如下命令,通过域名ping公网上的站点,查看网络连通性,执行结果如下所示。
$ ping -c 5 www.sdnlab.com
其中,-c 5表示在发送5个数据包后停止。
![48458-00-015-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-015-03.jpg?sign=1739278845-WJTYodDNqDF3aIZpECvxYoxTZ6toAp5M-0-41581b98fa0058936863b6855a8c859b)
说明:如果实验环境无法连接外网,则命令中的www.sdnlab.com替换为OneLab实验平台的地址。
3. traceroute命令
步骤1 执行su root命令,切换到root用户。
步骤2 执行apt-get install traceroute命令,安装traceroute工具。
说明:如果软件已经安装,将会提示“traceroute is already the newest version”的信息。
步骤3 执行traceroute www.sdnlab.com命令,追踪网络数据包的路由途径,执行结果如下所示。
说明:如果实验环境无法连接外网,则命令中的www.sdnlab.com替换为OneLab实验平台的地址。
![48458-00-016-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-016-01.jpg?sign=1739278845-59x66ZH861c6d0efGLTf5JEOkOoOggdK-0-e7922db2f961663a3e83a3424a3d45f2)
其中
• 记录按序列号从1开始,每个记录就是一跳,每跳表示一个网关。
• 每行有3个时间,单位是ms,表示探测数据包向每个网关发送3个数据包,网关响应后返回的时间。如果用traceroute -q 4 www.sdnlab.com,表示向每个网关发送4个数据包。
步骤4 执行traceroute -m 10 www.sdnlab.com命令,设置路由追踪10条,即只发回通过10个网关的信息,如下所示。
![48458-00-016-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-016-02.jpg?sign=1739278845-cYXjJXkD6AQce38aEn8JEwVwAam6byLS-0-7e67fe23210e3b82e174ffd4b4bde0ef)
步骤5 执行traceroute -w 3 www.sdnlab.com命令,把对外发送探测包的等待响应时间设置为3 s,如下所示。
![48458-00-016-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-016-03.jpg?sign=1739278845-8kytNxyXEXTGtFyRhcTFAGjqWkXLV4aB-0-6c01df280030a91f68341212cd72b9be)
4. route命令
步骤1 执行route命令,显示当前路由,执行结果如下所示。
![48458-00-017-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-017-01.jpg?sign=1739278845-y8BJpXpfcXAKO9VgSZxm6Z9UOpTKvA9T-0-0f0914a90801f2a39f2c9ce7f11c47fd)
其中
• Destination:表示目标网段或主机。
• Gateway:表示网关地址,“*”表示目标是本主机所属的网络,不需要路由。
• Genmask:表示网络掩码。
• Flags:表示标记。
常用标记如下:U表示路由是活动的;H表示目标是一个主机;G表示路由指向网关;R表示恢复动态路由产生的表项;D表示由路由的后台程序动态地安装;M表示由路由的后台程序修改;!表示拒绝路由。
• Metric:表示路由距离,到达指定网络所需的中转数(Linux内核中没有使用)。
• Ref:表示路由项引用次数(Linux内核中没有使用)。
• Use:表示此路由项被路由软件查找的次数。
• Iface:表示该路由表项对应的输出接口。
步骤2 执行如下命令添加网关。
# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
步骤3 执行route命令,显示当前路由。如下所示,添加了一个224.0.0.0的路由,其中主机所在的网络地址为224.0.0.0,网络掩码为240.0.0.0,当前路由是启动状态,通过eth0转发数据包。
![48458-00-017-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-017-02.jpg?sign=1739278845-zbWhdutRhcsPgU57BZkUALK12DXqe5BD-0-bf5c43627506e081b34b16e9ab201c33)
步骤4 执行如下命令删除路由。
# route del -net 224.0.0.0 netmask 240.0.0.0
步骤5 执行route命令,显示当前路由。
如下所示,224.0.0.0路由已被删除。
![48458-00-017-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-017-03.jpg?sign=1739278845-mj3qqCq1XVZZOV5LcUuUdJYPdwhHmvxE-0-cd9e81339078bb06421969515187b493)
任务二 进阶网络命令
任务目的
1. 掌握进阶网络命令的基本功能。
2. 掌握使用网络命令进行网络设备配置和抓包的方法。
任务环境
进阶网络命令实验的拓扑如图1-3所示。
![48458-00-018-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-018-01.jpg?sign=1739278845-DMV7AjXuuW2njfJYmtp5yxQ1TSYK8Zh3-0-c5e58c2262907ca9461b392f02e89e9a)
图1-3 实验拓扑
实验环境镜像配置说明如表1-6所示。
表1-6 实验环境镜像配置说明
![48458-00-018-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-018-02.jpg?sign=1739278845-3GVbqTKZwMgzNhZhQphdl0ViQXDN0A3G-0-5960022e853379c88a077c108c4f9105)
注:系统默认的账户为root/root@openlab、openlab/user@openlab。
任务内容
1. 学习使用ip命令配置网络设备。
2. 学习使用netstat命令检验各端口的连接情况。
3. 学习使用tcpdump抓取数据包,并分析数据包内容。
实验原理
1. ip命令
ip命令用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道,是Linux下较新且功能强大的网络配置工具。它能够替代一些传统的网络管理工具,如ifconfig、route等,使用权限为超级用户,ip命令的格式和参数解释如下。
(1)命令格式。
ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]
(2)命令参数。
• OPTIONS是一些修改IP行为或者改变其输出的选项。所有的选项都是以-字符开头。目前ip命令支持如下选项,如表1-7所示。
表1-7 ip命令选项信息
![48458-00-019-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-019-01.jpg?sign=1739278845-iZxoS0jFgfD4zpGTRsgWROXdAE4jSNyi-0-679a47108cc68fdb0fee424a41e672c5)
• OBJECT是要管理或者获取信息的对象。目前ip命令认识的对象如表1-8所示。
表1-8 ip命令对象信息
![48458-00-019-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-019-02.jpg?sign=1739278845-jnSVajO51QZLbhkF7P1wHlo09VGn3olR-0-039a6465c733100a673e58beefe2e159)
• COMMAND设置针对指定对象执行的操作,它和对象的类型有关。目前ip命令支持的操作如表1-9所示。
表1-9 ip命令操作信息
![48458-00-019-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-019-03.jpg?sign=1739278845-XbGzOpYKQCmXGYGOxWDo53myWBXOGWOW-0-25b04441aacf93b3a5565bf79276b106)
• ARGUMENTS是命令的一些参数,它们依赖于对象和命令。目前ip命令支持两种类型的参数,如表1-10所示。
表1-10 ip命令参数信息
![48458-00-019-04](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-019-04.jpg?sign=1739278845-1Ksrvx2s3Wwqqn49gobL0b7muSD684sG-0-004e262f29edfad61c21f116a7621384)
2. netstat命令
netstat是一个监控TCP/IP网络的命令,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。它用于显示与IP、TCP、UDP和ICMP相关的统计数据,一般用于检验本机各端口的网络连接情况。另外,它还能列出处于监听状态(即等待接入请求)的套接字。如果需要确认系统上的Web服务是否开启,可通过查看80端口监听状态的方法。netstat命令的格式和参数解释如下。
(1)命令格式。
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
(2)命令参数如表1-11所示。
表1-11 netstat命令参数解释
![48458-00-020-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-020-01.jpg?sign=1739278845-2d7XbfjsCewGuyDHlMzpz0kmZ7iZhWGw-0-20e75739e8eaeb5787deb6c0eb2753fb)
3. tcpdump命令
tcpdump是根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump凭借强大的功能和灵活的截取策略,成为用于网络分析和问题排查的首选工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤。
tcpdump命令的格式和参数解释如下。
(1)命令格式。
tcpdump [ -adeflnNOpqStvx ] [ -c 数量] [ -F 文件名] [ -i 网络接口] [ -r 文件名] [ -s snaplen ] [ -T 类型] [ -w文件名] [表达式]
(2)命令参数。
• tcpdump命令常用参数如表1-12所示。
表1-12 tcpdump命令参数解释
![48458-00-021-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-021-01.jpg?sign=1739278845-rflr433R6Kg4yl7AOPNPIIx9ck0kkgLC-0-0b753becdb0064243ea25f2cba99ffd2)
• tcpdump的过滤表达式
tcpdump的过滤表达式是一个正则表达式,tcpdump利用其作为过滤数据包的条件。如果一个数据包满足表达式的条件,则这个数据包将会被捕获;如果不指定表达式,则在网络上任何两台主机间的所有数据包都将被截获。tcpdump的过滤表达式中一般有如下3种类型的关键字。
类型关键字:包括host、net、port。
方向关键字:包括dst、src、dst or src、dst and src。
协议关键字:包括ether、fddi、tr、ip、ip6、arp、rarp、decnet、tcp和udp。
例如,tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'命令表示:抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200,端口是80的TCP数据。
实验步骤
1. ip命令
步骤1 在应用菜单页面,单击终端图标,打开终端。
步骤2 执行su root命令,切换到root用户。
步骤3 执行ip link list命令,查看网络设备的运行状态,如下所示。
![48458-00-022-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-022-01.jpg?sign=1739278845-YtawYWrzw1s0xZeQsI316s9kEaA46OVv-0-af974f5b0b26fdbcdeee2e2b867394f5)
其中
• lo表示主机的回环地址。
• eth0表示第一块网卡。
• UP表示网卡开启状态。
• MULTICAST表示支持组播。
• mtu表示最大传输单元。
• link/ether表示MAC地址。
步骤4 执行ip -s link list命令,查看更加详细的网络设备信息,如下所示。
![48458-00-022-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-022-02.jpg?sign=1739278845-3kk9T09NfxW61sptlYwz6XniAX0ERaP2-0-1437b8a8a56537a49c6cd46f067fc3a9)
其中
• RX packets、TX packets表示接收、发送数据包情况统计。
• RX bytes、TX bytes表示接收、发送数据字节数统计信息。
步骤5 执行ip addr list命令,查看IP信息,如下所示。
![48458-00-022-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-022-03.jpg?sign=1739278845-kldN9XPahEC7zSfnfs0XdLCLrA2h8t6p-0-c0e42f000bd1bb407795a1c3dc73d165)
其中
• inet表示网卡的IPv4地址。
• inet6表示网卡的IPv6地址。
步骤6 开启或关闭网络设备。
• 执行ip link set eth0 down命令,关闭eth0网卡。
• 执行ip link list命令,查看网络设备状态,如下所示。网卡eth0的状态为down,表示关闭。
![48458-00-023-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-023-01.jpg?sign=1739278845-g97KyMmu9SPa6Jcop9bhCYoL87YwWQkt-0-f1db3f878f4112f36f77213ffeb7c128)
• 执行ip link set eth0 up命令,开启eth0网卡。
• 执行ip link list命令,查看网络设备状态,如下所示。网卡eth0的状态为UP,表示开启。
![48458-00-023-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-023-02.jpg?sign=1739278845-FjPGKvo5lr6UB5qF3NssEp7vcFko9nBU-0-3eefe3272babd7d9b95d8601cace106b)
步骤7 执行route add default gw 30.0.1.1命令设置网关。
说明:使用ip命令关闭网卡后,默认路由也被删除,而使用ip命令启用网卡时,并不会配置路由,所以将无法ping通公网地址,故需要配置路由。
2. netstat命令
步骤1 执行netstat -a命令,查看所有端口信息,如下所示。
![48458-00-023-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-023-03.jpg?sign=1739278845-nNVztoumyOKXNKozqR87Xl8y9vf3h6Z2-0-98b368f977294aeaed98f7a6b97db628)
可以看出,netstat的输出结果分为两个部分。
• Active Internet connections,为TCP连接。其中
Proto:表示使用的通信协议。
Recv-Q和Send-Q:指接收队列和发送队列,这些数字一般都是0,如果不是,则表示软件包正在队列中堆积。
Local Address:本机提供服务的地址。
Foreign Address:连接远程主机的地址。
State:表示连接状态,LISTEN表示正在侦听端口,等待建立连接。
• Active UNIX domain sockets,为Unix域套接口。其中
Proto:表示使用的通信协议。
RefCnt:表示连接到本套接口上的进程号。
Type:显示套接口的类型。
State:显示套接口当前的状态。
Path:表示连接到套接口的其他进程使用的路径名。
步骤2 执行netstat -at命令,查看TCP连接的状态,如下所示。
![48458-00-024-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-024-01.jpg?sign=1739278845-BGNWDuKXnMw8arFh2qNDz887rnzh96jy-0-e4ab3f3ff2fa483ad42a4ca6753201a3)
步骤3 执行netstat -au命令,查看UDP连接的状态,如下所示。
![48458-00-024-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-024-02.jpg?sign=1739278845-CTKYEZDhEE20NomtUZe100GbJag9PmWh-0-54ffe79d5ced91feffca927ba2091d6c)
步骤4 执行netstat -l命令,查看所有处于监听状态的Sockets,如下所示。
![48458-00-024-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-024-03.jpg?sign=1739278845-7YGRZuHrnmuLUJLn1LUlGOU95cxLsFgU-0-b7fb006d2855ea23eda005f006a1d516)
步骤5 执行netstat -ap | grep ssh命令,查看程序运行的端口,如下所示。
![48458-00-024-04](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-024-04.jpg?sign=1739278845-RvgafqDgtWYo6EuqzSz8cs3gYRV8oVIB-0-4c457ef4d41cd8cc3cad7fdfa7551cc5)
3. tcpdump命令
步骤1 执行tcpdump -i eth0命令进行抓包。
说明:tcpdump不带网卡时,tcpdump默认选择第一块网卡,也就是对eth0进行抓包;当带网卡时,是对具体的某块网卡进行抓包。
步骤2 单击终端图标,再打开一个终端,执行ping www.sdnlab.com进行网络请求。抓包信息如下。
说明:如果实验环境无法连接外网,则将命令中的www.sdnlab.com替换为OneLab实验平台的地址。
![48458-00-025-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-025-01.jpg?sign=1739278845-sTT8n7CBvOSZr2yTei6x2fmEBVEtoeFZ-0-beb9b177a51cd7dbb18f0e64b6758af4)
由上述信息可知,网络流量从30.0.1.3到123.57.17.239,30.0.1.3是本机IP,123.57.17.239是SDNLAB网站的IP地址。ICMP echo request表示是一个ICMP请求报文。
步骤3 执行“Ctrl+C”停止抓包。
步骤4 单击浏览器图标,打开虚拟机浏览器界面,如图1-4所示。
![48458-00-025-02](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-025-02.jpg?sign=1739278845-QnYu7qF1IaZlIDan5nJvHLCiNwnuE97z-0-62d97458769fc58d74950d78722a6891)
图1-4 打开虚拟机浏览器界面
步骤5 执行tcpdump -i eth0 tcp port 80命令,抓取端口为80的TCP的数据信息。抓包信息如下所示。
![48458-00-025-03](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-025-03.jpg?sign=1739278845-ssZtI207rUG3JjfaEuqXK59E5eLWoUtO-0-fbfc6fc1bbf9518710b2059f0c61c057)
说明:port 80表示是80端口,即http端口。打开浏览器,便能产生80端口的数据流量。
步骤6 执行“Ctrl+C”停止抓包。
步骤7 执行tcpdump -i eth0 tcp命令,抓取TCP的数据信息,并访问网址www.sdnlab.com。抓包信息如下所示。
![48458-00-026-01](https://epubservercos.yuewen.com/5A5E64/18124349901398106/epubprivate/OEBPS/Images/48458-00-026-01.jpg?sign=1739278845-JPJeWcTt2gFIy5NlpPXiQB8CfC375E2i-0-7306294af1a77629b047f13afb84944f)
说明:如果实验环境无法连接外网,则将www.sdnlab.com替换为OneLab实验平台的地址。
步骤8 执行tcpdump -i eth0-w tcpdump_package.pcap命令。
该命令将tcupdump抓到的网络包保存到tcpdump_package.pcap文件中,命名规则为:文件名.pcap。
步骤9 执行tcpdump -r tcpdump_package.pcap命令。
该命令将保存在tcpdump_package.pcap中的抓包信息读取出来。
项目总结
本项目主要讲解了Linux Ubuntu系统上的网络命令操作,并根据难度分为简单网络命令和进阶网络命令两部分。其中,简单网络命令包括查看电脑网络配置的ifconfig命令,测试网络连接状况的ping命令,查看源主机到目标主机经过网关的traceroute命令,以及显示和操作路由表的route命令。进阶网络命令包括显示和控制主机路由等网络配置的ip命令,监控网络连接与端口的netstat命令,以及截获网络数据包帮助开发者分析网络异常的tcpdump命令。本项目让读者由浅入深学习网络命令操作,并复习相关网络知识。