本节书摘来自异步社区《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》一书中的第4章,第4.6节,作者:高俊峰著,更多章节内容可以访问云栖社区“异步社区”公众号查看
4.6.1 ifconfig命令
1.功能说明
ifconfig命令用来配置网络或显示当前网络接口状态。它类似于Windows下的ipconfig命令,同时ifconfig命令必须以root用户来执行。其格式如下。
ifconfig [选项] [interface] [inet|up|down|netmask|addr|broadcast]
ifconfig命令的选项及其说明如表4.39所示。
2.举例
1)显示目前系统所有网络接口信息,使用以下命令。
[root@centos7 ~]# ifconfig
enp0s3: flags=4163 mtu 1500
inet 192.168.81.232 netmask 255.255.255.0 broadcast 192.168.81.255
inet6 fe80::a00:27ff:fe90:55 prefixlen 64 scopeid 0x20
ether 08:00:27:90:00:55 txqueuelen 1000 (Ethernet)
RX packets 20378 bytes 1845248 (1.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 958 bytes 147065 (143.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 4 bytes 336 (336.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 336 (336.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
从上面可以看出以下几点。
第1行:“UP”代表网卡开启状态,“RUNNING”代表网卡上的网线处于连接状态,“MULTICAST”代表支持组播,“MTU:1500”表示最大传输单元为1500字节。
第2行:依次显示网卡的IP地址、子网掩码和广播地址。
第3行:IPv6地址的配置信息。
第4行:ether后面表示硬件网卡的MAC地址。Ethernet表示连接类型为以太网。
第5、6行:显示网卡接收数据包的统计信息和接收错误的统计信息。
第7、8行:显示网卡发送数据包的统计信息和发送错误的统计信息。
2)在网卡enp0s3上配置两个IP地址,分别为192.168.60.136、192.168.66.138,子网掩码为255.255.255.0,使用以下命令。
[root@centos7 ~]#ifconfig enp0s3 192.168.60.136 netmask 255.255.255.0
[root@centos7 ~]#ifconfig enp0s3:0 192.168.66.138 netmask 255.255.255.0
此时用ifconfig命令查看,就可以看到两个网卡的信息了,分别是“enp0s3”和“enp0s3:0”。如果此时还想在enp0s3上增加IP地址,那么网卡的命名依次是“enp0s3:1”、“enp0s3:2”等。
3)修改网卡的MAC地址为新的MAC地址,使用以下命令。
[root@centos7 ~]#ifconfig enp0s3hw ether xx:xx:xx:xx:xx:xx
其中,“xx:xx:xx:xx:xx:xx”为新的MAC地址,此时用ifconfig查看enp0s3的信息,MAC地址已经更改。
4)将网卡enp0s3禁用后再启用,使用以下命令。
[root@centos7 ~]#ifconfig enp0s3 down
[root@centos7 ~]#ifconfig enp0s3 up
注意
用ifconfig命令配置的网卡信息,在网卡重启或者机器重启后,所有的配置都失效了,如果要让网卡配置永久生效,就需要修改网卡的配置文件了,这将在下面讲述。
4.6.2 scp命令
1.功能说明
scp就是secure copy,用于将文件或者目录从一个Linux系统复制到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全。其格式如下。
scp 远程用户名@ip地址:文件的绝对路径本地Linux系统路径
scp 本地Linux系统文件路径远程用户名@ip地址:远程系统文件绝对路径名
scp使用第1种格式将远程Linux系统上的某个文件或者目录复制到本地Linux系统上,使用第2种格式是将本地的某个文件或者目录复制到远程Linux系统的某个路径下。
2.举例
1)目前我们处在IP为“192.168.60.133”的Linux系统下,计划将此系统下的/home/ixdba/etc.tar.gz文件复制到IP为“192.168.60.168”的远程Linux系统中root用户下的/tmp目录下,使用下面命令。
[root@centos7 ~]#scp /home/ixdba/etc.tar.gz [email protected]:/tmp
命令输入完毕,会要求输入“192.168.60.168”服务器root的密码,然后开始远程复制数据。如果目前我们处在“192.168.60.168”服务器上,也可以使用下面的命令传输数据。
[root@centos7 ~]#scp [email protected]:/home/ixdba/etc.tar.gz /tmp
命令输入完毕,此时会要求输入“192.168.60.133”服务器root的密码,然后开始远程复制数据。
2)将本地/etc目录中所有文件和子目录复制到IP为“192.168.60.135”的远程Linux系统的root用户下的/opt目录中,使用以下命令。
[root@centos7 ~]#scp –r /etc [email protected]:/opt
这里的选项“r”与cp命令中的“r”选项含义相同。
4.6.3 netstat命令
1.功能说明
netstat命令用来显示本机网络连接、运行端口和路由表等信息。其格式如下。
netstat [选项]
2.举例
1)显示当前系统的路由信息。
[root@centos7 ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.81.250 0.0.0.0 UG 0 0 0 enp0s3
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3
192.168.81.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
从上面可以看出,当前系统的默认网关是“192.168.81.250”,而对应的网络接口为enp0s3。
2)显示当前系统中所有有效的TCP连接,使用以下命令。
[root@centos7 ~]#netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 52 192.168.81.232:22 192.168.81.30:65409 ESTABLISHED
tcp 0 0 192.168.81.232:22 192.168.81.30:64394 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 0.0.0.0:123 0.0.0.0:*
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:46122 0.0.0.0:*
udp 0 0 0.0.0.0:5353 0.0.0.0:*
udp6 0 0 :::123 :::*
udp6 0 0 ::1:323 :::*
……以下省略……
在上面的显示中,可以看出netstat的输出分为两部分,分别是TCP/IP网络部分和UNIX Socket部分,我们先来看看输出的组成部分。
state:显示状态列,主要有以下几个状态。
3)显示目前系统中已经启动的网络连接和对应的端口信息,使用如图4.9所示命令。
从图4.9的输出可以看出,系统中对外开放了80、22和23端口。为什么这么说呢?因为这些端口都是针对“0.0.0.0”开放的,而25、631端口仅仅针对内部127.0.0.1开放。最后一列显示了每个端口对应的服务名(Program name)和进程ID(PVD),可以很方便地知道每个端口的用途。
4)查看当前系统上处于连接状态的资源信息,可以使用如图4.10所示命令。
从上面的输出看出,有四个线路处于连接状态,分别是远程主机192.168.81.30启动的大于1024的两个端口65409、64394向本地主机192.168.81.232的22端口建立的连接,以及远程主机192.168.81.30启动的大于1024的两个端口49837、49848向本地主机192.168.81.232的23端口建立的连接。
4.6.4 traceroute命令
1.功能说明
traceroute命令用来显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况。预设数据包大小是38字节,用户可另行设置。它与Windows下的tracert命令类似,其格式如下。
traceroute [选项] [远程主机名或者IP地址] [数据包大小]
traceroute命令的选项及其说明如表4.41所示。
2.举例
跟踪从本机到网站www.ixdba.net的数据包发送过程,使用以下命令。
[root@localhost ~]# traceroute -i eth0 -s 192.168.60.251 -w 10 www.ixdba.net 100
traceroute to www.ixdba.net (221.130.192.57) from 192.168.60.251, 30 hops max, 100 byte
packets
1 192.168.60.3 (192.168.60.3) 0.378 ms 0.564 ms 0.357 ms
2 192.168.1.10 (192.168.1.10) 0.494 ms 0.458 ms 0.377 ms
3 222.90.66.1 (222.90.66.1) 2.199 ms 4.531 ms 6.884 ms
4 61.185.192.101 (61.185.192.101) 8.946 ms 6.319 ms 7.726 ms
5 117.36.120.25 (117.36.120.25) 9.997 ms 23.021 ms 24.337 ms
6 61.150.3.165 (61.150.3.165) 27.591 ms 6.703 ms 11.928 ms
7 125.76.189.81 (125.76.189.81) 8.927 ms 4.388 ms 2.726 ms
8 61.134.0.9 (61.134.0.9) 5.731 ms 3.653 ms 3.667 ms
9 202.97.37.173 (202.97.37.173) 5.908 ms 3.874 ms 4.553 ms
10 202.97.37.182 (202.97.37.182) 2.568 ms 13.896 ms 14.722 ms
11 202.97.37.90 (202.97.37.90) 16.284 ms 26.148 ms 2.946 ms
12 202.97.36.161 (202.97.36.161) 49.285 ms 62.249 ms 55.451 ms
13 202.97.44.58 (202.97.44.58) 56.949 ms 56.292 ms 62.229 ms
14 202.97.15.226 (202.97.15.226) 142.705 ms 139.009 ms 150.365 ms
15 211.136.2.249 (211.136.2.249) 136.982 ms 156.440 ms 153.176 ms
16 211.136.6.22 (211.136.6.22) 136.463 ms 152.606 ms 150.101 ms
17 211.136.188.182 (211.136.188.182) 100.163 ms 128.552 ms 103.801 ms
18 221.130.192.57 (221.130.192.57) 149.583 ms
上面指定eth0网络接口发送数据包,同时指定本地发送数据包的IP为192.168.60.251,并设置超时时间为10秒,最后设置发送数据包的大小为100字节。根据输出可以看到,从本机到www.ixdba.net对应的IP地址经历了18个路由的迂回。
traceroute命令会对这18个路由节点做ICMP的回应时间测试,每个路由节点做3次时间测试,如上面显示,基本上每个路由节点的回应时间都在100秒内,只有在第15个路由节点,回应时间稍长。通过这种网络跟踪,可以测试数据传输在哪个部分出现问题,以便及时解决。
如果在指定的时间内(这里设置的是10秒),traceroute检测不到某个路由节点的回应信息,就在屏幕输出“*”,表示此节点无法通过。由于traceroute是利用ICMP连接的,有些网络设备(如防火墙)可能会屏蔽ICMP通过的权限,因此也会出现节点没有回应的状态,这些都是我们分析网络问题需要知道的。
4.6.5 telnet命令
1.功能说明
telnet命令通过telnet协议与远程主机通信或者获取远程主机对应端口的信息。它与Windows下的telnet具有相同的功能。其格式如下。
telnet 主机名或者IP地址端口
2.举例
1)要通过telnet协议登录到开启了telnet服务的远程主机上,使用以下命令。
[root@localhost ~]# telnet192.168.60.12323
Trying 192.168.60.123...
Connected to 192.168.60.123.
Escape character is '^]'.
Kernel 3.10.0-229.el7.x86_64 on an x86_64
centos7 login: ixdba
Password:
当输入用户名ixdba和密码后就登录到了“192.168.60.123”服务器,这里直接用“telnet 192.168.60.123”也是可以的,因为telnet默认寻找的就是“23”端口。
[root@localhost ~]# telnet192.168.60.12325
Trying 192.168.60.123...
telnet: connect to address 192.168.60.123: Connection refused
如果出现这个问题,就表示这个端口对应的服务没有开启,或者端口被屏蔽,无权访问。
2)要查看某台Linux系统的22和80端口是否打开以及分别开启了什么服务,使用以下命令。
[root@localhost ~]# telnet 192.168.60.88 22
Trying 192.168.60.88...
Connected to 192.168.60.88.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1
Protocol mismatch.
Connection closed by foreign host.
从这里可以看出,在“192.168.60.88”的22端口运行着SSH服务,对应的SSH版本为SSH-2.0-OpenSSH_6.6.1。
[root@localhost ~]# telnet www.ixdba.net 80
Trying 221.130.192.57...
Connected to www.ixdba.net (221.130.192.57).
Escape character is '^]'.
get
501 Method Not Implemented
Method Not Implemented
get to /index.html not supported.
Apache/2.2.4 (Unix) PHP/5.2.3 mod_fastcgi/2.4.2 Resin/3.1.3 Server at
www.ixdba.net Port 80
Connection closed by foreign host.
当输入“telnet www.ixdba.net 80”之后,如果“www.ixdba.net”对应IP的80端口开启,就会给出欢迎信息,类似于“Escape character is '^]'”。此时通过键盘输入“get”命令,将显示80端口对应的应用服务器类型,例如本例的80端口对应的应用服务为Apache与PHP以及resin的组合。
4.6.6 wget命令
1.功能说明
wget命令用来从网络上下载某个软件,这个命令对于能够连接到互联网的Linux系统作用非常大,可以直接从网络下载自己需要的软件。其格式如下。
wget [要下载软件的网址]
2.举例
下载一个linux-4.0.2版本内核,可以使用以下命令。
[root@localhost~]#wget \
>https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.2.tar.xz
-- 17:42:05-- https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.2.tar.xz
Resolving www.kernel.org (www.kernel.org)... 199.204.44.194, 198.145.20.140,149.20.4.69,...
Connecting to www.kernel.org (www.kernel.org)|199.204.44.194|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 82306532 (78M) [application/x-xz]
Saving to: 'linux-4.0.2.tar.xz'
10% [========> ] 8,781,616 104KB/s eta 7m 35s 2