Linux系统的route命令用于显示和操作IP路由表, 要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
执行方式一般用:route -n
#-n 表示不解析名字,列出速度会比route 快
这里我用k8a集群中master节点的路由表来举例解释
#destination:目的地,终点,就是我们要去访问的目的IP
第一行的意思就是去往所有目标地址数据包由网关10.12.236.1 通过网卡ens33来转发;
#0.0.0.0代表的是匹配所有目标地址
实际上前两条是自动生成的,因为是直连的网段,在每块网卡上每配置一个IP就会生成一条记录(一个网卡上可以配置多个IP)。表示去往这两个网段的数据包,直接由网卡接口ens33发送出去。
Flags那一列中有G时才会使用Gateway
10.244.0.0是本机flannel.1的网卡设备
10.244.1.0是node1节点上flannel.1的网卡设备
10.244.2.0是node2节点上flannel.1的网卡设备
第三行:意思就是去往10.244.0.0地址的数据包通过cni0网桥设备来转发
第四行:表示去往node1节点的flannel.1的数据由网关10.244.1.0通过本机的flannel.1来转发
第五行:同样是去往node2节点的flannel.1的数据由网关10.244.2.0通过本机的flannel.1来转发
第六行:就是说去往172.17.0.0地址中的数据要通过docker0网卡来转发
在它显示的信息中,如果标志是 U,则说明是可达路由(活动的);如果是 G,则说明这个网络接口连接的是网关,H则说明目标是一个主机。