网络管理命令
在进行网络配置之前首先需要了解网络管理命令的使用,本节主要介绍网络管理中常用的命令。
检查网络是否通畅或网络连接速度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服务,另外可以选用的方法有scp
或rsync
。scp
可以将本地文件传送到远程主机或从远程主机拉取文件到本地。其一般语法如下所示,注意由于哥哥发行版本不同,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=TIME | IP超时时间,单位为秒 |
-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
其他用法可参考系统帮助,其功能等待慢慢探索。