网络管理命令

在进行网络配置之前首先需要了解网络管理命令的使用,本节主要介绍网络管理中常用的命令。

检查网络是否通畅或网络连接速度ping

ping常常用来测试与目标主机或域名是否可达,通过发送ICMP数据包到网络主机,并显示响应情况,并根据输出信息来确定目标主机或域名是否可达。ping的结果通常情况下是可信的,由于有些服务器可以设置禁止ping,从而使ping的结果并不是完全可信的。ping命令常用的参数说明如表1.1所示。

Linux下ping不会自动终止,需要按“Crtl+c”终止或使用参数“-c”指定要求完成的回应次数。

                                                        表1.1 ping命令常用参数说明
参数说明
-d使用Socket的SO_DEBUG功能
-f极限检测。大量且快速地传送网络封包给一台机器,看其回应
-n只输出数值
-q不显示任何传送封包的信息,只显示最后的结果
-r忽略普通的Routing Table,直接将数据包送到远端主机上
-R记录路由过程
-v详细显示指令的执行过程
-c在发送指定数目的包后停止
-i设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次
-I(大写i)使用指定的网络界面送出数据包
-l(小写L)设置在送出要求信息之前,先行发出的数据包
-p设置填满数据包的范本样式
-s指定发送的数据字节数
-t设置存活数值TTL的大小

ping常见的用法如【示例1-1】所示。

#目的地址可以ping通
[root@localhost ~]# ping 192.168.139.128
PING 192.168.139.128 (192.168.139.128) 56(84) bytes of data.
64 bytes from 192.168.139.128: icmp_seq=1 ttl=128 time=1.52 ms
64 bytes from 192.168.139.128: icmp_seq=2 ttl=128 time=0.463 ms
64 bytes from 192.168.139.128: icmp_seq=3 ttl=128 time=0.388 ms
^C
--- 192.168.139.128 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.388/0.790/1.520/0.517 ms

#目的地址ping不通的情况
[root@localhost ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=5 ttl=128 time=58.2 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=128 time=59.2 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=128 time=68.3 ms
64 bytes from 8.8.8.8: icmp_seq=8 ttl=128 time=59.1 ms
^C
--- 8.8.8.8 ping statistics ---
10 packets transmitted, 4 received, 60% packet loss, time 9012ms
rtt min/avg/max/mdev = 58.222/61.225/68.305/4.110 ms

#ping指定次数
[root@localhost ~]# ping -c 3 192.168.139.137
PING 192.168.139.137 (192.168.139.137) 56(84) bytes of data.
64 bytes from 192.168.139.137: icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from 192.168.139.137: icmp_seq=2 ttl=64 time=0.039 ms
64 bytes from 192.168.139.137: icmp_seq=3 ttl=64 time=0.081 ms

--- 192.168.139.137 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.039/0.058/0.081/0.018 ms

#指定时间间隔和次数限制的ping
[root@localhost ~]# ping -c 3 -i 0.01 192.168.139.137
PING 192.168.139.137 (192.168.139.137) 56(84) bytes of data.
64 bytes from 192.168.139.137: icmp_seq=1 ttl=64 time=0.053 ms
64 bytes from 192.168.139.137: icmp_seq=2 ttl=64 time=0.053 ms
64 bytes from 192.168.139.137: icmp_seq=3 ttl=64 time=0.079 ms

--- 192.168.139.137 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 21ms
rtt min/avg/max/mdev = 0.053/0.061/0.079/0.015 ms

#ping外网域名
[root@localhost ~]# ping -c 2 baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=17.1 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=11.7 ms

--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 11.751/14.455/17.160/2.707 ms

除了以上示例,ping的各个参数还可以结合使用。

配置网络或显示当前网络接口状态ifconfig

ifconfig命令可以用于查看、配置、启用或禁用指定网络接口,如配置网卡的IP地址、掩码、广播地址、网管等,Windows类似的命令为ipconfig。语法如下:

#ifconfig interface [ [-net -host] address [parameters] ]

其中interface使网络接口名,address是分配给指定接口的主机名或IP地址。-net和-host参数分别告诉ifconfig将这个地址作为网络号或是主机地址。与之前版本的网卡命名规则不通,CentOS 7采用固件信息、网络拓扑等信息来命名网卡lo为本地环回接口,IP地址固定为127.0.0.1,子网掩码8位,表示本机。ifconfig常见使用方法如【示例1-2】所示。

【示例1-2】

#查看网卡的基本信息
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.139.137  netmask 255.255.255.0  broadcast 192.168.139.255
        inet6 fe80::5fb4:ba4b:6e8b:b0ad  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b5:ab:e8  txqueuelen 1000  (Ethernet)
        RX packets 12370  bytes 15640173 (14.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3454  bytes 384423 (375.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2014  bytes 169232 (165.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2014  bytes 169232 (165.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
#命令后面可接网络接口用于查看指定网络接口信息
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.139.137  netmask 255.255.255.0  broadcast 192.168.139.255
        inet6 fe80::5fb4:ba4b:6e8b:b0ad  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b5:ab:e8  txqueuelen 1000  (Ethernet)
        RX packets 12412  bytes 15643383 (14.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3471  bytes 387201 (378.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

说明:

第3行:UP表示此网络接口为启用状态,RUNNING表示网卡设备已连接,MULTICAST表示支持组播,MTU为数 据包最大传输单元。

第4行:依次为网卡IP、子网掩码、广播地址。

第5行:ipv6地址。

第6行:Ethernet(以太网)表示连接类型,ether为网卡的MAC地址

第7行:接收数据包个数、大小统计信息。

第8行:异常接收包的数量,如丢包量,错误等。

第9行:发送数据包个数、大小统计信息。

第10行:导演发送包的数量,如丢包量,错误等。

如果第8行和第10行中的丢包量、错误包量较高,通常表示物理链路存在问题。例如网线干扰过大,距离太长等。

设置IP地址使用以下命令:

#设置网卡IP地址
[root@localhost ~]# ifconfig ens33:1 192.168.139.138 netmask 255.255.255.0 up

设置完后使用ifconfig命令查看,可以看到两个网卡信息了,分别为:ens33和ens33:1。如继续设置其他IP,可以使用类似的方法,如【示例1-3】所示。

【示例1-3】

#更改网卡的MAC地址
[root@localhost ~]# ifconfig ens33:1 | grep ether
        ether 00:0c:29:b5:ab:e8  txqueuelen 1000  (Ethernet)

[root@localhost ~]# ifconfig ens33:1 hw ether 00:0c:29:b5:ab:e9
[root@localhost ~]# ifconfig ens33:1 | grep ether
        ether 00:0c:29:b5:ab:e9  txqueuelen 1000  (Ethernet)
#将某个网络接口禁用
#使用另一钟形式表示子网掩码
[root@localhost ~]# ifconfig ens33:1 192.168.139.139/24 up
[root@localhost ~]# ifconfig ens33:1 down
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.139.137  netmask 255.255.255.0  broadcast 192.168.139.255
        inet6 fe80::5fb4:ba4b:6e8b:b0ad  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b5:ab:e9  txqueuelen 1000  (Ethernet)
        RX packets 13462  bytes 15728975 (15.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3981  bytes 445279 (434.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2014  bytes 169232 (165.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2014  bytes 169232 (165.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

除以上功能外,ifconfig还可以设置网卡的MTU。以上的设置会在重启后丢失,如需重启后依然生效,可以通过设置网络接口文件永久生效。更多使用方法可以参考系统帮助man ifconfig

提示:在CentOS和RHEL中使用ifup ifdown 加网络接口名,可以启用、禁用对应的网络接口。

显示添加或修改路由表route

route命令用于查看或编辑计算机的IP路由表,route命令的语法如下:

route [-f] [-p] [command] [destination] [mask netmask] [gateway] [metric] [ [dev] If ]

参数说明:

  • Command:指定想要进行的操作,如add、change、delete、print;
  • Destination:指定该路由的网络目标;
  • mask netmask:指定与网络目标相关的子网掩码;
  • gateway:网关;
  • metric:为路由指定一个整数成本指标,当路由表的多个路由进行选择时可以使用;
  • dev if:为可以访问目标的网络接口指定接口索引。

route使用方法如【示例1-4】所示。

【示例1-4】

#显示所有你路由表
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.139.2   0.0.0.0         UG    100    0        0 ens33
192.168.139.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
#添加一条路由:发往192.168.60.0网段的全部都要经过网关192.168.19.1
route add -net 192.168.60.0 netmask 255.255.255.0 gw 192.168.19.1
#删除一条路由,删除的时候不需要网关
route del -net 192.168.60.0 netmask 255.255.255.0

复制文件至其它系统scp

如本地主机需要和远程主机进行数据迁移或文件传送,可以使用ftp,或搭建Web服务,另外可以选用的方法有scprsyncscp可以将本地文件传送到远程主机或从远程主机拉取文件到本地。其一般语法如下所示,注意由于哥哥发行版本不同,scp语法不尽相同,具体使用方法可以查看系统帮助。

scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

scp命令执行成功返回0,失败或有异常时返回大于0的值,常用参数说明如表1.2所示。

                                                            表1.2 scp命令常用参数说明
参数说明
-P指定远程连接端口
-q把进度参数关掉
-r递归地复制整个文件夹
-V冗余模式。打印排错信息方便问题定位

scp使用方法如【示例1-5】所示。

【示例1-5】

#将node1 192.168.139.152文件传送到至远程主机node2 192.168.139.153
[root@node1 usr]# scp -P 22 a.txt root@192.168.139.153:/usr
The authenticity of host '192.168.139.153 (192.168.139.153)' can't be established.
ECDSA key fingerprint is SHA256:6Mq4/h6Q3egq/+0GTiAkn+n28q8Yr/WEcoEhH+ubBZ0.
ECDSA key fingerprint is MD5:5d:f6:08:9f:57:c2:03:ea:51:88:b4:5c:3f:d3:37:07.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.139.153' (ECDSA) to the list of known hosts.

root@192.168.139.153's password: 
a.txt               100%    0     0.0KB/s   00:00   

[root@node2 usr]# ls
a.txt  bin  b.txt  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

#拉取远程主机(node2)文件至本地路径(node1)
[root@node1 usr]# scp -P 22 root@192.168.139.153:/usr/b.txt
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2
[root@node1 usr]# scp -P 22 root@192.168.139.153:/usr/b.txt /usr/
root@192.168.139.153's password: 
b.txt               100%    0     0.0KB/s   00:00    
[root@node1 usr]# ls
a.txt  bin  b.txt  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

#如需传送目录,可以使用参数“r”
[root@node1 usr]# scp -r -P 22 root@192.168.139.153:/usr/scptest
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2
[root@node1 usr]# scp -r -P 22 root@192.168.139.153:/usr/scptest /usr/
root@192.168.139.153's password: 
[root@node1 usr]# ls
a.txt  bin  b.txt  etc  games  include  lib  lib64  libexec  local  sbin  scptest  share  src  tmp

#将本地(node1)目录传送到远程主机(node2)
[root@node1 usr]# scp -r /usr/node1tonode2/ root@192.168.139.153:/usr
root@192.168.139.153's password: 

[root@node2 usr]# ls
a.txt  bin  b.txt  etc  games  include  lib  lib64  libexec  local  node1tonode2  sbin  scptest  share  src  tmp

复制文件至其它系统rsync

rsync是Linux系统下的常用的数据镜像备份工具,用于在不同的主机之间同步文件。除了单个文件,rsync可以镜像保存整个目录树和文件系统,并可以增量同步,并保持文件原来的属性,如权限,时间等。rsync数据传输过程中是加密的,保证数据的安全性。

rsync命令语法如下:

Usage: rsync [OPTION]... SRC [SRC]... DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  or   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
  or   rsync [OPTION]... [USER@]HOST:SRC [DEST]
  or   rsync [OPTION]... [USER@]HOST::SRC [DEST]
  or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

OPTION可以指定某些选项,如压缩传输,是否递归传输等,SRC为本地目录或文件,USER和HOST表示可以登录远程服务的用户名和主机,DEST表示远程路径。rsync常用参数如表1.3所示,由于参数众多,只列出某些有代表性的参数

                                                            表1.3 rsync命令常用参数说明
参数说明
-v详细模式输出
-q精简输出模式
-c打开校验开关,强制对文件传输进行校验
-a归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r对子目录以递归模式处理
-R使用相对路径信息
-p保持文件权限
-o保持文件属主信息
-g保持文件属组信息
-t保持文件时间信息
-n显示哪些文件将被传输
-W拷贝文件,不进行增量检测
-e指定使用rsh、ssh方式进行数据同步
--delete删除那些DST中SRC没有的文件
--timeout=TIMEIP超时时间,单位为秒
-z对备份的文件在传输时进行压缩处理
--exclude=PATTERN指定排除不需要传输的文件模式
--include=PATTERN指定不排除而需要传输的文件模式
--exclude-from=FILE排除FILE中指定模式的文件
--include-from=FILE不排除FILE指定模式匹配的文件
--version打印版本信息
-address绑定到特定的地址
--config=FILE指定其他的配置文件,不适用默认的rsyncd.conf文件
--port=PORT指定其他的rsync服务端口
--progress在传输时显示传输过程
--log-format=format指定日志文件格式
--password-file=FILE从FILE中得到密码

rsync使用方法如【示例1-6】

【示例1-6】

#传送本地(node1)文件到远程主机(node2)
[root@node1 usr]# rsync -v --port 22 a.txt root@192.168.139.153:/usr/
root@192.168.139.153's password: 
a.txt

sent 78 bytes  received 35 bytes  8.37 bytes/sec
total size is 0  speedup is 0.00

[root@node2 usr]# ls
a.txt  bin  b.txt  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

#传送目录至远程主机
[root@node1 usr]# rsync -avz --port 22 /usr/rsynctest root@192.168.139.153:/usr/
root@192.168.139.153's password: 
sending incremental file list
rsynctest/

sent 59 bytes  received 20 bytes  5.10 bytes/sec
total size is 0  speedup is 0.00

[root@node2 usr]# ls
a.txt  bin  b.txt  etc  games  include  lib  lib64  libexec  local  rsynctest  sbin  share  src  tmp

#拉取远程文件到本地
[root@node1 usr]# rsync --port 22 -avz root@192.168.139.153:/usr/b.txt /usr/
root@192.168.139.153's password: 
receiving incremental file list
b.txt

sent 43 bytes  received 84 bytes  3.79 bytes/sec
total size is 0  speedup is 0.00
[root@node1 usr]# ls
a.txt  bin  b.txt  etc  games  include  lib  lib64  libexec  local  rsynctest  sbin  share  src  tmp

#拉取远程目录到本地
[root@node1 usr]# rsync --port 22 -avz root@192.168.139.153:/usr/rsynctest2 /usr/
root@192.168.139.153's password: 
receiving incremental file list
rsynctest2/

sent 28 bytes  received 64 bytes  8.00 bytes/sec
total size is 0  speedup is 0.00
[root@node1 usr]# ls
a.txt  bin  b.txt  etc  games  include  lib  lib64  libexec  local  rsynctest  rsynctest2  sbin  share  src  tmp

rsync具有增量传输的功能,利用此特性可以用来做文件的增量备份。通过rsync可以解决对实时性要求不高的数据备份需求。随着文件增多rsync做数据同步时,需要扫描所有文件后进行比对,然后进行差量传输。如果文件很多,扫描文件是非常耗时的,使用rsync反而比较低效。

提示:使用rsync之前需要做一些简单地配置,读者可以自行参考相关文档了解。

显示网络连接、路由表或接口状态netstat

netstat命令用于监控系统网络配置和工作状态,可以显示内核路由表、活动的网络状态以及每个网络接口的有用的统计数字。常用的参数如表1.4所示。

                                                        表1.4 netstat命令常用参数说明
参数说明
-a显示所有连接中的Socket
-c持续列出网络状态
-h在线帮助
-i显示网络界面
-l(小写L)显示监控中的服务器的Socket
-n直接使用IP地址
-p显示正在使用Socket的程序名称
-r显示路由表
-s显示网络工作统计表
-t显示TCP端口情况
-u显示UDP端口情况
-v显示命令执行过程
-V显示版本信息

netstat常见使用方法如【示例1-7】所示。

【示例1-7】

#显示所有端口,包含UDP和TCP端口
[root@node1 usr]# netstat -a | head -4
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     

#显示所有TCP端口
[root@node1 usr]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0     52 node1:ssh               192.168.139.1:58604     ESTABLISHED
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     

#显示所有UDP端口
[root@node1 usr]# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*                          

#显示所有处于监听状态的端口并以数字方式显示而非服务名
[root@node1 usr]# netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
......

#显示所有TCP端口并显示对应的进程名称或进程号
[root@node1 usr]# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1704/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1544/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1704/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1544/sshd   

#显示核心路由信息
[root@node1 usr]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 ens33
192.168.139.0   0.0.0.0         255.255.255.0   U         0 0          0 ens33

#显示网络接口列表
[root@node1 usr]# netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33            1500     1903      0      0 0           907      0      0      0 BMRU
lo              65536        0      0      0 0             0      0      0      0 LRU

#综合示例,统计各个TCP连接的各个状态对应的数量
[root@node1 usr]# netstat -plnta | sed '1,2d' | awk '{print $6}' | sort | uniq -c
      1 ESTABLISHED
      4 LISTEN

netstat工具是运维工程师最常用的工具之一,经常被用来查看主机网络状态、监听列表等,因此需要掌握好此工具的使用方法。

探测至目的地址的路由信息traceroute

traceroute跟踪数据包到达网络主机所经过的路由,原理是试图以最小的TTL发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。使用语法如下:

traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,... ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w waittime ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]

常用参数如表1.5所示。

                                                        表1.5 traceroute命令常用参数说明
参数说明
-f设置第一个检测数据包的存活数值TTL的大小
-g设置来源路由网关,最多可设置8个
-i使用指定的网络界面送出数据包
-I(大写i)使用ICMP回应取代UDP资料信息
-m设置检测数据包的最大存活数值TTL的大小,默认值为30次
-n直接使用IP地址而非主机名称。当DNS不起作用时常用到这个参数
-p设置UDP传输协议的通信端口,默认值时33434
-r忽略普通的路由表Routing Table,直接将数据包送到远端主机上
-s设置本地主机送出数据包的IP地址
-t设置检测数据包的TOS数值
-v详细显示指令的执行过程
-w设置等待远端主机回报的时间。默认值为3秒
-x开启或关闭数据包的正确性检验
-q n在每次设置生存期时,把探测报的个数设置为值n,默认时为3

traceroute常用操作如【示例1-8】所示。

【示例1-8】

[root@node1 ~]# ping -c 3 -i 0.01 ujslxw.com
PING ujslxw.com (111.229.212.167) 56(84) bytes of data.
64 bytes from 111.229.212.167: icmp_seq=1 ttl=128 time=48.3 ms
64 bytes from 111.229.212.167: icmp_seq=2 ttl=128 time=60.9 ms
64 bytes from 111.229.212.167: icmp_seq=3 ttl=128 time=80.3 ms

--- ujslxw.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 30ms
rtt min/avg/max/mdev = 48.311/63.190/80.320/13.164 ms, pipe 3

#显示本地主机到ujslxw.com所经过的路由信息
[root@node1 ~]# traceroute -n ujslxw.com
traceroute to ujslxw.com (111.229.212.167), 30 hops max, 60 byte packets
 1  192.168.139.2  0.138 ms  0.094 ms  0.150 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  111.229.212.167  12.562 ms  16.204 ms  20.139 ms

#域名不可达,最大30跳
[root@node1 ~]# traceroute -n google.com
traceroute to google.com (59.24.3.174), 30 hops max, 60 byte packets
 1  192.168.139.2  0.141 ms  0.085 ms  0.329 ms
 2  * * *
 3  * * *
    ......
30  * * *

以上示例每行记录对应一跳,每跳表示一个网关,每行有三个时间,单位是ms,如域名不通或主机不通可根据显示的网关信息定位。星号表示ICMP信息没有返回,以上示例访问www.google.com时不通,数据包到达某一节点时没有返回,可以将此结果提交IDC运营商,一边解决问题。

traceroute实际上是通过给目标机的一个非法UDP端口号发送一系列UDP数据包来工作的。使用默认设置时,本地机给每个路由器发送三个数据包,最多可经过30个路由器。如果已经经过了30个路由器,但还未到达目标机,那么traceroute将终止。每个数据包都对应一个Max_ttl值,同一跳步的数据包到达路由器时,路由器就响应一个ICMPTimeExceed消息,于是traceroute就显示出当前跳步数,路由器的IP地址或名字,3个数据包分别对应的周转时间(以ms为单位)。如果本地机在指定的时间内未收到响应包,那么在数据包的周转时间栏就显示出一个星号。当一个跳步结束时,本地机根据当前路由器的路由信息,给下一个路由器又发出3个数据包,周而复始,知道收到一个ICMPPORT_UNREACHABLE的消息,意味着已到达目标机,或已到达指定的最大跳步数。

测试、登录或控制远程主机telnet

telnet命令通常用来远程登陆。telnet程序是基于TELNET协议的远程登录客户端程序。TELNET协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式,为用户提供了在本地计算机上完成远程主机工作的能力。在客户端可以使用telnet在程序中输入命令,可以在本地控制服务器。由于telnet采用明文传送报文,安全性较差。telnet可以确定远程服务端口的状态,以便确认服务是否正常。telnet常用方法如【示例1-9】所示。

【示例1-9】

#检查对应服务是否正常
[root@node1 ~]# telnet 192.168.139.153 22
Trying 192.168.139.153...
Connected to 192.168.139.153.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

Protocol mismatch.
Connection closed by foreign host.
[root@node1 ~]# telnet www.ujslxw.com 80
Trying 111.229.212.167...
Connected to www.ujslxw.com.
Escape character is '^]'.
Connection closed by foreign host.

如果发现端口可以正常telnet登录,则表示远程服务正常。除确认远程服务是否正常外,对于提供开放telnet功能的服务,使用telnet可以登录远程端口,输入合法的用户名和口令后,就可以进行其他工作了。更多的使用帮助可以查看系统帮助。

下载网络文件wget

wget类似于Windows中的下载工具,大多数Linux发行版都默认包含此工具。用法比较简单,如要下载某个文件,可以使用以下的命令:

#使用语法为wget [参数列表] [目标软件、网页的网址]
[root@node1 ~]# wget http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz

wget常用参数说明如表1.6所示。

                                                        表1.6 wget命令常用参数说明
参数说明
-b后台执行
-d显示调试信息
-nc不覆盖已有的文件
-c断点续传
-N该参数指定wget只下载更新的文件
-S显示服务器响应
-T timeout超时时间设置(单位为秒)
-w time重试时延(单位为秒)
-Q quota=number重试次数
-nd不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里
-nH不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目录下
-l(小写L)[depth]下载远程服务器目录结构的深度
-np只下载目标站点指定目录及其子目录的内容

wget具有强大的功能,比如断点续传,可同时支持FTP和HTTP协议下载,并可以设置代理服务器。常用方法如【示例 1-10】所示。

【示例 1-10】

#下载某个文件
[root@node1 ~]# wget http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz
--2020-04-10 14:25:31--  http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3118130 (3.0M) [application/x-gzip]
Saving to: ‘wget-1.14.tar.gz’

 0% [                                                                                                                                                   ] 850         --.-K/s  eta 8d 13h  
#断点续传
[root@node1 ~]# wget -c http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz
--2020-04-10 14:29:18--  http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 3118130 (3.0M), 3117280 (3.0M) remaining [application/x-gzip]
Saving to: ‘wget-1.14.tar.gz’

 0% [                                                                                                                                                   ] 20,521      2.70KB/s  eta 16m 9s 
#批量下载,其中download.txt文件中是一系列网址
[root@node1 ~]# wget -i download.txt

wget其他用法可参考系统帮助,其功能等待慢慢探索。

最后修改:2020 年 10 月 19 日 07 : 43 PM
如果觉得我的文章对你有用,请随意赞赏