• Long Live Kubernetes!
  • 可关注微信公众第一时间知晓网站动态。 微信公众号
  • Long Live Linux!
  • 您觉得本站非常有看点,可以收藏本站,本站将持续推出高质量文章!
  • This site has been created and is maintained by and is the sole property of Yok8s.com. No part of this site may be copied or reproduced without express written consent from the authors of this site.

Linux路由表详解及route命令详解

linux网络 Rocloong 来源:CSDN 2个月前 (10-14) 75次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

Linux内核的路由表

通过route命令查看linux内核的路由表

root@k8s:~# route
Kernel IP routing table
Destination        Gateway      Genmask           Flags     Metric    Ref      Use    Iface
default            _gateway     0.0.0.0           UG        0         0        0      ens18
10.244.17.128      master       255.255.255.192   UG        0         0        0      ens18
10.244.57.192      0.0.0.0      255.255.255.192   U         0         0        0      *
10.244.85.192      node01       255.255.255.192   UG        0         0        0      ens18
10.244.116.64      node02       255.255.255.192   UG        0         0        0      ens18
10.244.198.128     master       255.255.255.192   UG        0         0        0      ens18
10.244.201.192     node03       255.255.255.192   UG        0         0        0      ens18
172.17.0.0         0.0.0.0      255.255.0.0       U         0         0        0      docker0
192.168.16.0       0.0.0.0      255.255.255.0     U         0         0        0      ens18

root@k8s:~# route -n
Kernel IP routing table
Destination      Gateway        Genmask           Flags       Metric      Ref      Use   Iface
0.0.0.0          192.168.16.1   0.0.0.0           UG          0           0        0     ens18
10.244.17.128    192.168.16.77  255.255.255.192   UG          0           0        0     ens18
10.244.57.192    0.0.0.0        255.255.255.192   U           0           0        0     *
10.244.85.192    192.168.16.78  255.255.255.192   UG          0           0        0     ens18
10.244.116.64    192.168.16.79  255.255.255.192   UG          0           0        0     ens18
10.244.198.128   192.168.16.76  255.255.255.192   UG          0           0        0     ens18
10.244.201.192   192.168.16.80  255.255.255.192   UG          0           0        0     ens18
172.17.0.0       0.0.0.0        255.255.0.0       U           0           0        0     docker0
192.168.16.0     0.0.0.0        255.255.255.0     U           0           0        0     ens18

各列字段说明

Destination: 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1)
Gateway:      网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关
Genmask:     Destination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255,是默认路由时会设置为 0.0.0.0
Flags:            标记,含义参考表格后面的解释
Metric:          路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。)
Ref:               路由项引用次数 (不在Linux内核中使用。)
Use:              此路由项被路由软件查找的次数
Iface:            网卡名字,例如 eth0

Flags含义

  • U 路由是活动的
  • H 目标是个主机
  • G 需要经过网关
  • R 恢复动态路由产生的表项
  • D 由路由的后台程序动态地安装
  • M 由路由的后台程序修改
  • ! 拒绝路由

Linux内核的路由种类

主机路由

路由表中指向单个 IP 地址或主机名的路由记录,其 Flags 字段为 H。下面示例中,对于 10.0.0.10 这个主机,通过网关 10.0.0.1网关路由:

[root@k8s ~]# route -n
Kernel IP routing table
Destination     Gateway       Genmask         Flags    Metric   Ref  Use  Iface
10.0.0.10       10.0.0.1      255.255.255.255 UGH      0        0    0    eth0

网络路由

主机可以到达的网络。下面示例中,对于 10.0.0.0/24 这个网络,通过网关 10.0.0.1 网关路由:

[root@k8s ~]# route -n
Kernel IP routing table
Destination     Gateway       Genmask         Flags     Metric    Ref    Use   Iface
10.0.0.0        10.0.0.1      255.255.255.0   UG        0         0      0     eth0

默认路由

当目标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由的 Destination 是 default 或 0.0.0.0。

[root@k8s ~]# route
Kernel IP routing table
Destination       Gateway       Genmask     Flags    Metric   Ref   Use   Iface
default           gateway       0.0.0.0     UG       0        0     0     eth0

route命令

route命令可以显示或设置Linux内核中的路由表,主要是静态路由。
对于局域网中的Linux主机,要想访问Internet,需要将局域网的网关IP地址设置为这个主机的默认路由。在命令行中通过route命令添加的路由在网卡重启或机器重启后失效。可以在/etc/rc.local中添加route命令来保证路由设置永久有效。

选项:

-A:设置地址类型
-C:打印 Linux 内核的路由缓存
-v:显示详细信息
-n:不执行 DNS 反向查找,直接显示数字形式的 IP 地址
-e:netstat 格式显示路由表
-net:到一个网络的路由表
-host:到一个主机的路由表

参数:

add:增加路由记录
del:删除路由记录
target:目的网络或目的主机
gw:设置默认网关
mss:设置TCP的最大区块长度(MSS),单位MB
window:指定通过路由表的TCP连接的TCP窗口大小
dev:路由记录所表示的网络接口

添加路由 add

可以添加一条可用路由,或添加一条要屏蔽的路由。

添加主机路由

添加主机路由时,需要指定网络 ID 和主机 ID,此时需要设置netmask255.255.255.255:

[root@k8s ~]# route add -net 10.0.0.10 netmask 255.255.255.255 gw 10.0.0.1 dev eth0
[root@k8s ~]# route -n
Kernel IP routing table
Destination      Gateway      Genmask         Flags    Metric    Ref   Use   Iface
10.0.0.10        10.0.0.1     255.255.255.255 UGH      0         0     0     eth0

添加网络路由

添加网络路由时,只需指定网络ID,通过netmask设置掩码长度:

[root@k8s ~]# route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1 dev eth0
[root@k8s ~]# route -n
Kernel IP routing table
Destination      Gateway       Genmask        Flags         Metric    Ref   Use   Iface
10.0.0.0         10.0.0.1      255.255.255.0  UG            0         0     0     eth0

添加同一个局域网的主机

不指定gw选项时,添加的路由记录不使用网关:

[root@k8s ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
[root@k8s ~]# route -n
Kernel IP routing table
Destination        Gateway       Genmask      Flags   Metric   Ref   Use   Iface
224.0.0.0          0.0.0.0       240.0.0.0    U       0        0     0     eth0

屏蔽路由

[root@k8s ~]# route add -net 224.0.0.0 netmask 240.0.0.0 reject
[root@k8s ~]# route -n
Kernel IP routing table
Destination     Gateway     Genmask    Flags    Metric   Ref   Use   Iface
224.0.0.0       -           240.0.0.0  !        0        -     0     -

删除路由记录

跟添加路由类似,可以删除一条可用路由,或删除一条屏蔽的路由。

删除可用路由

route del -net 224.0.0.0 netmask 240.0.0.0

删除屏蔽的路由

route del -net 224.0.0.0 netmask 240.0.0.0 reject

删除和添加设置默认网关

添加或删除默认网关时,Linux 会自动检查网关的可用性:

[root@k8s ~]# route add default gw 192.168.1.1
SIOCADDRT: Network is unreachable
[root@k8s ~]# route del default gw 192.168.1.1
SIOCDELRT: No such process

未完待续。。。


《Linux路由表详解及route命令详解》版权归作者所有,如需转载请注明出处,并附带文章链接地址,侵权必究!!!
喜欢 (1)
[]
分享 (0)
Rocloong
关于作者:
善战者无赫赫战功!
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到