晴明的博客园 GitHub      CodePen      CodeWars     

[linux] traceroute 追踪路由途径 、telnet 远程登录 、 rcp 远程文件拷贝

traceroute 追踪路由途径

traceroute[参数][主机]

追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

通过traceroute可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

在大多数情况下,会在linux主机系统下,直接执行命令行:

traceroute hostname

而在Windows系统下是执行tracert的命令:

tracert hostname

命令参数

-d 使用Socket层级的排错功能。

-f 设置第一个检测数据包的存活数值TTL的大小。

-F 设置勿离断位。

-g 设置来源路由网关,最多可设置8个。

-i 使用指定的网络界面送出数据包。

-I 使用ICMP回应取代UDP资料信息。

-m 设置检测数据包的最大存活数值TTL的大小。

-n 直接使用IP地址而非主机名称。

-p 设置UDP传输协议的通信端口。

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。

-s 设置本地主机送出数据包的IP地址。

-t 设置检测数据包的TOS数值。

-v 详细显示指令的执行过程。

-w 设置等待远端主机回报的时间。

-x 开启或关闭数据包的正确性检验。

具体参数格式:
traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

实例

常用用法

$ traceroute www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
 1  192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms
 2  211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms
 3  211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms
 4  210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms
 5  202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms
 6  61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms
 7  124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms
 8  202.106.35.190 (202.106.35.190)  1.795 ms 61.148.156.138 (61.148.156.138)  1.899 ms  1.951 ms
 9  * * *
30  * * *

记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包。

有时traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以得不到什么相关的数据包返回数据。

有时在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;可以加-n 参数来避免DNS解析,以IP格式输出数据。

在局域网中的不同网段之间,可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果通过远程来访问某台服务器遇到问题时,用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是发现问题所在,IDC服务商也不可能帮助我们解决。

跳数设置

traceroute -m 10 www.baidu.com

显示IP地址,不查主机名

traceroute -n www.baidu.com

探测包使用的基本UDP端口设置6888

traceroute -p 6888 www.baidu.com

把探测包的个数设置为值4

traceroute -q 4 www.baidu.com

绕过正常的路由表,直接发送到网络相连的主机

 traceroute -r www.baidu.com

把对外发探测包的等待响应时间设置为3秒

traceroute -w 3 www.baidu.com

telnet 远程登录

telnet[参数][主机]

执行telnet指令开启终端机阶段作业,并登入远端主机。

telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

但是因为telnet采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。

telnet命令还可做别的用途,比如确定远程服务的状态,比如确定远程服务器的某个端口是否能访问。

命令参数:

-8 允许使用8位字符资料,包括输入与输出。

-a 尝试自动登入远端系统。

-b<主机别名> 使用别名指定远端主机名称。

-c 不读取用户专属目录里的.telnetrc文件。

-d 启动排错模式。

-e<脱离字符> 设置脱离字符。

-E 滤除脱离字符。

-f 此参数的效果和指定"-F"参数相同。

-F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。

-k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。

-K 不自动登入远端主机。

-l<用户名称> 指定要登入远端主机的用户名称。

-L 允许输出8位字符资料。

-n<记录文件> 指定文件记录相关信息。

-r 使用类似rlogin指令的用户界面。

-S<服务类型> 设置telnet连线所需的IP TOS信息。

-x 假设主机有支持数据加密的功能,就使用它。

-X<认证形态> 关闭指定的认证形态。

实例

远程服务器无法访问

$ telnet 192.168.120.209


Trying 192.168.120.209...
telnet: connect to address 192.168.120.209: No route to host
telnet: Unable to connect to remote host: No route to host

处理这种情况方法:
(1)确认ip地址是否正确?
(2)确认ip地址对应的主机是否已经开机?
(3)如果主机已经启动,确认路由设置是否设置正确?(使用route命令查看)
(4)如果主机已经启动,确认主机上是否开启了telnet服务?(使用netstat命令查看,TCP的23端口是否有LISTEN状态的行)
(5)如果主机已经启动telnet服务,确认防火墙是否放开了23端口的访问?(使用iptables-save查看)

域名无法解析

$ telnet www.baidu.com


www.baidu.com/telnet: Temporary failure in name resolution

处理这种情况方法:
(1)确认域名是否正确
(2)确认本机的域名解析有关的设置是否正确(/etc/resolv.conf中nameserver的设置是否正确,如果没有,可以使用nameserver 8.8.8.8)
(3)确认防火墙是否放开了UDP53端口的访问(DNS使用UDP协议,端口53,使用iptables-save查看)

ip地址无法解析

一般情况下不允许root从远程登录,可以先用普通账号登录,然后再用su切到root用户。

$ telnet 192.168.120.206


Trying 192.168.120.206...
telnet: connect to address 192.168.120.206: Connection refused
telnet: Unable to connect to remote host: Connection refused

处理这种情况:
(1)确认ip地址或者主机名是否正确?
(2)确认端口是否正确,是否默认的23端口

启动telnet服务

service xinetd restart

配置参数,通常的配置如下:

service telnet 

{ 

disable = no #启用 

flags = REUSE #socket可重用 

socket_type = stream #连接方式为TCP 

wait = no #为每个请求启动一个进程 

user = root #启动服务的用户为root 

server = /usr/sbin/in.telnetd #要激活的进程 

log_on_failure += USERID #登录失败时记录登录用户名 

} 

如果要配置允许登录的客户端列表,加入

only_from = 192.168.0.2 #只允许192.168.0.2登录 

如果要配置禁止登录的客户端列表,加入

no_access = 192.168.0.{2,3,4} #禁止192.168.0.2、192.168.0.3、192.168.0.4登录 

如果要设置开放时段,加入

access_times = 9:00-12:00 13:00-17:00 # 每天只有这两个时段开放服务

如果有两个IP地址,一个是私网的IP地址如192.168.0.2,一个是公网的IP地址如218.75.74.83,如果你望用户只能从私网来登录telnet服务,那么加入

bind = 192.168.0.2 

各配置项具体的含义和语法可参考xined配置文件属性说明(man xinetd.conf)

配置端口,修改services文件:

# vi /etc/services 

# 找到以下两句 

telnet 23/tcp 

telnet 23/udp 

如果前面有#字符,就去掉它。telnet的默认端口是23,这个端口也是黑客端口扫描的主要对象,因此最好将这个端口修改掉,修改的方法很简单,就是将23这个数字修改掉,改成大一点的数字,比如61123。注意,1024以下的端口号是internet保留的端口号,因此最好不要用,还应该注意不要与其它服务的端口冲突。

rcp 远程文件拷贝

rcp [参数] [源文件] [目标文件]

rcp代表“remote file copy”(远程文件拷贝)。该命令用于在计算机之间拷贝文件。rcp命令有两种格式。第一种格式用于文件到文件的拷贝;第二种格式用于把文件或目录拷贝到另一个目录中。
如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。

要使用 rcp,需要具备以下条件

如果系统中有 /etc/hosts 文件,系统管理员应确保该文件包含要与之进行通信的远程主机的项。
/etc/hosts 文件中有一行文字,其中包含每个远程系统的以下信息:

internet_address   official_name   alias

例如:

9.186.10.***  webserver1.com.58.webserver

.rhosts 文件
.rhosts 文件位于远程系统的主目录下,其中包含本地系统的名称和本地登录名。
例如,远程系统的 .rhosts 文件中的项可能是:

webserver1 root

其中,webserver1 是本地系统的名称,root 是本地登录名。这样,webserver1 上的 root 即可在包含 .rhosts 文件的远程系统中来回复制文件。

配置过程

只对root用户生效
1.在双方root用户根目录下建立.rhosts文件,并将双方的hostname加进去.在此之前应在双方的 /etc/hosts文件中加入对方的IP和hostname

2.把rsh服务启动起来,redhat默认是不启动的。
方法:用执行ntsysv命令,在rsh选项前用空格键选中,确定退出。然后执行:service xinetd restart即可。

3.到/etc/pam.d/目录下,把rsh文件中的auth required /lib/security/pam_securetty.so一行用#注释掉即可。

命令使用

将文件复制到远程系统
要将本地系统中的文件复制到远程系统,使用以下命令:

rcplocal_fileremote_hostname:remote_fileEnter

注意,如果当前目录下没有 local_file,则除本地文件名外,还需要提供相对路径(自当前目录开始)或绝对路径名(自 / 开始)。

仅当希望将 remote_hostname 上的 remote_file 放到其他目录(远程主目录除外)下时,才需要为其指定完整的(绝对)路径。

命令参数:

-r 递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。

-p 试图保留源文件的修改时间和模式,忽略umask。

-k 请求rcp获得在指定区域内的远程主机的Kerberos 许可,而不是获得由krb_relmofhost⑶确定的远程主机区域内的远程主机的Kerberos许可。

-x 为传送的所有数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。如果在文件名中指定的路径不是完整的路径名,那么这个路径被解释为相对远程机上同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线(\\)、双引号(”)或单引号(’)括起来,使所有的shell元字符都能被远程地解释。需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。

directory 每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式:rname@rhost:path,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径。

实例

将当前目录下的 test1 复制到名为 webserver1的远程系统

rcp test1 webserver1:/home/root/test3

在这种情况下,test1 被复制到远程子目录 test3下,名称仍为 test1 。如果仅提供了远程主机名,rcp 将把 test1 复制到远程主目录下,名称仍为 test1 。
还可以在目的目录中包含文件名。例如,将文件复制到名为 webserver1的系统中:

rcp test1 webserver1:/home/root/test3

在这种情况下,将 test1 复制到远程目录root 下并将其命名为 test3。

从远程系统复制文件:要将远程系统中的文件复制到本地目录下

rcp remote_hostname:remote_file local_fileEnter

将远程系统 webserver1中的 test2 复制到当前目录:

rcp webserver1:/home/root/test2 .Enter

. 是“当前目录”的简写形式。在这种情况下,远程目录中的 test2 被复制到当前目录下,名称仍为 test2 。

如果希望用新名称复制文件,需提供目标文件名。

如果希望将 test2 复制到本地系统中的其他目录下,使用以下绝对或相对路径名:

rcp webserver1:/home/root/test2 otherdir/ Enter

或者,如果希望用其他文件名将文件复制到其他目录下:

rcp webserver1:/home/root/test2 otherdir/otherfile Enter

将目录复制到远程系统

要将本地目录及其文件和子目录复制到远程系统,请同时使用 rcp 和 -r(递归)选项。

rcp –r local_dir remote_hostname:remote_dir Enter

如果当前目录下没有 local_dir,则除本地目录名外,还需要提供相对路径名(自当前目录开始)或绝对路径名(自 / 顶级目录开始)。另外,如果主目录下没有 remote_dir,则 remote_dir 将需要一个相对路径(自主目录开始)或绝对路径(自 / 开始)。

要将名为 work 的子目录完整地复制到 webserver1远程计算机中的主目录下名为 products 的目录,请键入以下内容:

rcp –r work webserver1:/home/root/products Enter

此命令在 webserver1:/home/root/products 下创建名为 work 的目录及其全部内容(假定 /home/root/products 已存在于 webserver1中)。

本示例假定用户处于包含 work 的本地目录下。否则,必须提供该目录的相对或绝对路径,如 /home/root/work

从远程系统复制目录

要将远程目录及其所有文件和子目录复制到本地目录,在以下语法中使用 rcp 和 -r(递归)选项。

rcp –r remote_hostname:remote_dir local_dir Enter

要将名为 work 的远程目录复制到当前目录,键入以下内容:

rcp –r webserver1:/home/root/work .Enter

.表示当前目录。将在此目录下创建 work 目录。

posted @ 2017-08-09 19:39  晴明桑  阅读(1134)  评论(0编辑  收藏  举报