
Linux下使用ping命令ping另一台主机,返回
From 192.168.2.1 icmp_seq=0 Time to live exceeded
使用telnet命令,返回 telnet: Unable to connect to remote host: No route to host
超时,到远程主机没路由,看下你两个机子是不是在同一网段。
TTL即生存时间(time-to-live),指定数据包被路由器丢弃之前允许通过的网段数量。
它是IP(中文全称:网络协议)协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。在使用ping命令ping某个ip地址时,会显一个TTL值,TTL是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间。一般Linux系统的TTL值为64或255,Windows NT/2000/XP系统的默认TTL值为128,Win7系统的TTL值是64,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。
当我们对网络上的主机进行ping *** 作的时候,我们本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。
当TTL被扣到0时,最后一个经手的路由器就会给源主机发来一个Time to live exceeded的ICMP信息。
建议用traceroute命令试一下,如果是跑动态路由的话应该不会有这种问题,很可能是静态路由配置错误
TTL=52在互联网环境下直接判断 *** 作系统是没有准确依据的。TTL是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间。
分析如下:
1、当对网络上的主机进行ping *** 作的时候,本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失;
2、默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255;
3、所有TTL=52有可能是任何默认TTL大于52的 *** 作系统。
通常情况下,Windows的TTL的基数是128,而早期的Red Hat Linux和Solaris的TTL基数是255,FreeBSD和新版本的Red Hat Linux的TTL基数是64。比如,ping一个Red Hat系统,显示如下:[root@ www.linuxidc.com ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.030 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.013 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.013 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.012 ms
用以下命令修改Red Hat Linux的TTL基数为128(本来为64):
# echo 128 >/proc/sys/net/ipv4/ip_default_ttl
上面的128其实可以是任何数,但是为了伪装成是WIN系统,所以选择这个数字
若想使设置永久生效,可以修改/etc/sysctl.conf配置文件,添加如下一行:
net.ipv4.ip_default_ttl = 128
保存退出后需要重启下,再ping 下,TTL基数就变为128了。
关于更多Linux的学习,请查阅书籍《linux就该这么学》。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)