一:实现包转发
如果LInux主机作为路由器,除了设置路由表之外,还需要设置允许从一个网络接口到另一个网络接口转发数据包的设置。通过设置内核变量ip_forward的值为1打开转发,将值设为0然后关闭转发。设置该值需要在配置文件/proc/sys/net/ipv4/ip_forward的值进行更改。如果值为0,就使用echo命令将值改为1,开启转发,如下图所示:
设置启用主机centos.host01(IP:172.16.0.10/16)到物理主机的通信,如下图所示。使用ping命令进行验证连通性。
.ipv4.ip
使用sysctl net.ipv4.ip_forward命令可显示ip_forward的值该值为0,则使用sysctl net.ipv4.ip_forward-1将值改为1.使用这种方法在系统重启之后,ip_forward的值还是会恢复为0.可以在/etc/sysctl.conf文件中指定net.ipv4.ip_forward=1.
二:认识traceroute命令
traceroute命令用于跟踪并显示IP数据包到最终目标主机的路由。重复数据包传输增加TTL(生存时间)值,如果路由器的数量超过TTL的值,路由中的路由器或主机将跟踪错误数据包的源地址,返回ICMP错误的TIME_EXCEEDED,通过依次追踪错误分组的源地址来确定路径。traceroute命令用于发送数据包的默认协议为UDP,每次发送消息的时候,目标UDP端口号会增加1,默认初始值为33434.
格式:traceroute [选项] 目标主机
如果系统中没有安装这个命令可以使用:
- CentOS:yum install tcpdump
- Ubuntu:apt install tcpdump
traceroute命令的选项及其说明如下表所示:
选说 | 说明 |
-l | 发送ICMP ECHO数据包,默认为UDP数据包 |
-f TTL值 | 指定TTL(生存时间)的初始值,默认值为1 |
-i | 指定网络接口发送数据包 |
-n | 直接指定IP地址 |
-w | 设置等待远程主机回应的时间 |
与traceroute命令相似的是tracepath命令,但是该命令的功能比traceroute的功能少。tracepath命令用于发送数据包的协议是UDP,该命令的格式和traceroute相同,
tracepath命令的选项及其说明如下表所示:
选项 | 说明 |
-n | 不能查看主机名 |
-l | 设置初始化的数据包长度 |
在centos,host01执行tracepath命令显示路径,如下图所示:
通过traceroute这个命令显示路径,可以知道数据从计算机一端到另一端走的是什么路径,而tracepath命令可以追踪数据到达目标主机的路由信息。
三;网络管理总结