route路由

route 命令用于在 Linux 系统中查看和操作 IP 路由表。它可以显示、添加、删除或修改路由表中的条目。

常见用法

1. 查看路由表

要查看当前的路由表,可以使用以下命令:

1
route -n
  • -n 选项表示以数字形式显示 IP 地址和端口号,而不进行 DNS 解析。

输出示例:

1
2
3
4
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
  • Destination: 目标网络或主机。
  • Gateway: 网关地址,0.0.0.0 表示没有网关。
  • Genmask: 子网掩码。
  • Flags: 路由标志(如 U 表示路由是活动的,G 表示使用网关)。
  • Metric: 路由距离(用于路由算法)(越小优先级越高)。
  • Iface: 使用的网络接口。

2. 添加路由

要添加一条新的路由,可以使用以下命令:

1
2
3
4
5
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0

sudo route add -net 192.168.2.0/24 gw 192.168.1.1 dev eth0

sudo route add -net 192.168.2.0/24 gw 192.168.1.1
  • -net: 指定目标网络。
  • netmask: 指定子网掩码。
  • gw: 指定网关。
  • dev: 指定网络接口。

3. 删除路由

要删除一条路由,可以使用以下命令:

1
2
3
sudo route del -net 192.168.2.0 netmask 255.255.255.0

sudo route del -net 192.168.2.0/24

4. 添加默认网关

要添加默认网关,可以使用以下命令:

1
sudo route add default gw 192.168.1.1

5. 删除默认网关

要删除默认网关,可以使用以下命令:

1
sudo route del default gw 192.168.1.1

6. 添加主机路由

要添加一条到特定主机的路由,可以使用以下命令:

1
sudo route add -host 192.168.1.100 gw 192.168.1.1 dev eth0

7. 删除主机路由

要删除一条到特定主机的路由,可以使用以下命令:

1
sudo route del -host 192.168.1.100

注意事项

  • route 命令在大多数现代 Linux 发行版中仍然可用,但更推荐使用 ip route 命令(来自 iproute2 工具包),因为它提供了更多的功能和更现代的语法。

例如,使用 ip route 查看路由表:

1
ip route show

添加路由:

1
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

删除路由:

1
sudo ip route del 192.168.2.0/24

ip route 命令的功能更强大,建议在需要更复杂的路由配置时使用。

tracepath/traceroute help

[root@centos9-81 ~]# tracepath

Usage
  tracepath [options] <destination>

Options:
  -4             use IPv4
  -6             use IPv6
  -b             print both name and ip
  -l <length>    use packet <length>
  -m <hops>      use maximum <hops>
  -n             no dns name resolution
  -p <port>      use destination <port>
  -V             print version and exit
  <destination>  dns name or ip address

For more details see tracepath(8).

例子

[root@centos9-81 ~]# tracepath -b  -n  1.1.1.1
 1?: [LOCALHOST]                      pmtu 1500
 1:  10.0.2.2 (_gateway)                                   0.435ms 
 1:  10.0.2.2 (_gateway)                                   0.317ms 
 2:  192.168.3.1 (192.168.3.1)                             3.326ms asymm 64 
 3:  116.148.104.1 (116.148.104.1)                         8.517ms asymm 63 
 4:  no reply
^C

route更加详细例子

route 命令用于在 Linux 系统中查看和操作 IP 路由表。它可以显示、添加、删除或修改路由表中的条目。

命令归属包

  • centos
    • net-tools
0.查看路由
    route -n

1.默认路由/网关:172.16.0.1
    route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1  //出路由
    route add default gw 172.16.0.1  //默认网关
    route add -net 192.168.24.0/24 gw 172.24.20.2 [dev eth0]  //一般不用填写dev自动根据IP绑定网卡

2.删除route del
    route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]

    目标:192.168.1.3 网关:172.16.0.1
        route del -host 192.168.1.3

    目标:192.168.0.0 网关:172.16.0.1
        route del -net 192.168.0.0 netmask 255.255.255.0
        route del -net 192.168.0.0/24

1. 查看路由表

要查看当前的路由表,可以使用以下命令:

1
route -n
  • -n 选项表示以数字形式显示 IP 地址和端口号,而不进行 DNS 解析。

输出示例:

1
2
3
4
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
  • Destination: 目标网络或主机。
  • Gateway: 网关地址,0.0.0.0 表示没有网关。
  • Genmask: 子网掩码。
  • Flags: 路由标志(如 U 表示路由是活动的,G 表示使用网关)。
  • Metric: 路由距离(用于路由算法)。
  • Iface: 使用的网络接口。

2. 添加路由

要添加一条新的路由,可以使用以下命令:

1
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
  • -net: 指定目标网络。
  • netmask: 指定子网掩码。
  • gw: 指定网关。
  • dev: 指定网络接口。

3. 删除路由

要删除一条路由,可以使用以下命令:

1
sudo route del -net 192.168.2.0 netmask 255.255.255.0

4. 添加默认网关

要添加默认网关,可以使用以下命令:

1
sudo route add default gw 192.168.1.1

5. 删除默认网关

要删除默认网关,可以使用以下命令:

1
sudo route del default gw 192.168.1.1

6. 添加主机路由

要添加一条到特定主机的路由,可以使用以下命令:

1
sudo route add -host 192.168.1.100 gw 192.168.1.1 dev eth0

7. 删除主机路由

要删除一条到特定主机的路由,可以使用以下命令:

1
sudo route del -host 192.168.1.100

8. 查看帮助

要查看 route 命令的帮助信息,可以使用以下命令:

1
route --help

或者查看手册页:

1
man route

注意事项

  • route 命令在大多数现代 Linux 发行版中仍然可用,但更推荐使用 ip route 命令(来自 iproute2 工具包),因为它提供了更多的功能和更现代的语法。

例如,使用 ip route 查看路由表:

1
ip route show

添加路由:

1
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

删除路由:

1
sudo ip route del 192.168.2.0/24

ip route 命令的功能更强大,建议在需要更复杂的路由配置时使用。

ip route

ip route 是 Linux 系统中用于管理路由表的命令,属于 iproute2 工具集的一部分。它用于查看、添加、删除或修改路由表中的路由条目。以下是一些常见的用法:

1. 查看路由表

1
ip route show

或简写为:

1
ip route

这将显示当前系统的路由表。

2. 添加路由

1
ip route add <目标网络> via <网关> dev <网络接口>

例如,添加一个到 192.168.1.0/24 网络的路由,通过网关 192.168.0.1,使用网络接口 eth0

1
ip route add 192.168.1.0/24 via 192.168.0.1 dev eth0

3. 删除路由

1
ip route del <目标网络>

例如,删除到 192.168.1.0/24 网络的路由:

1
ip route del 192.168.1.0/24

4. 添加默认路由

1
ip route add default via <网关> dev <网络接口>

例如,添加默认路由,通过网关 192.168.0.1,使用网络接口 eth0

1
ip route add default via 192.168.0.1 dev eth0

5. 删除默认路由

1
ip route del default

6. 修改路由

1
ip route change <目标网络> via <新网关> dev <网络接口>

例如,修改到 192.168.1.0/24 网络的路由,使用新的网关 192.168.0.2

1
ip route change 192.168.1.0/24 via 192.168.0.2 dev eth0

7. 查看特定网络的路由

1
ip route get <目标地址>

例如,查看到 192.168.1.1 的路由:

1
ip route get 192.168.1.1

8. 清空路由表

1
ip route flush table main

这将清空整个路由表。

9. 添加多路径路由

1
ip route add <目标网络> nexthop via <网关1> dev <接口1> weight <权重1> nexthop via <网关2> dev <接口2> weight <权重2>

例如,添加一个多路径路由到 192.168.1.0/24 网络,通过两个不同的网关:

1
ip route add 192.168.1.0/24 nexthop via 192.168.0.1 dev eth0 weight 1 nexthop via 192.168.0.2 dev eth1 weight 1

10. 查看路由缓存

1
ip route show cache

这将显示路由缓存中的条目。

11. 添加静态路由

1
ip route add <目标网络> via <网关> dev <网络接口> metric <度量值>

例如,添加一个静态路由到 192.168.2.0/24 网络,通过网关 192.168.0.3,使用网络接口 eth0,并设置度量值为 100

1
ip route add 192.168.2.0/24 via 192.168.0.3 dev eth0 metric 100

12. 删除静态路由

1
ip route del <目标网络> via <网关> dev <网络接口> metric <度量值>

例如,删除上述静态路由:

1
ip route del 192.168.2.0/24 via 192.168.0.3 dev eth0 metric 100

13. 查看特定接口的路由

1
ip route show dev <网络接口>

例如,查看 eth0 接口的路由:

1
ip route show dev eth0

14. 添加黑洞路由

1
ip route add blackhole <目标网络>

例如,添加一个黑洞路由到 192.168.3.0/24 网络:

1
ip route add blackhole 192.168.3.0/24

15. 删除黑洞路由

1
ip route del blackhole <目标网络>

例如,删除上述黑洞路由:

1
ip route del blackhole 192.168.3.0/24

16. 添加不可达路由

1
ip route add unreachable <目标网络>

例如,添加一个不可达路由到 192.168.4.0/24 网络:

1
ip route add unreachable 192.168.4.0/24

17. 删除不可达路由

1
ip route del unreachable <目标网络>

例如,删除上述不可达路由:

1
ip route del unreachable 192.168.4.0/24

18. 查看路由统计信息

1
ip route show stat

这将显示路由统计信息。

19. 查看路由表的所有详细信息

1
ip route show detail

这将显示路由表的详细信息,包括路由的来源、协议等。

20. 查看特定协议的路由

1
ip route show proto <协议>

例如,查看 kernel 协议的路由:

1
ip route show proto kernel

21. 查看路由表的缓存条目

1
ip route show cache

这将显示路由缓存中的条目。

22. 查看路由表的策略路由

1
ip route show table <表名>

例如,查看 main 表的路由:

1
ip route show table main

23. 添加策略路由

1
ip route add <目标网络> via <网关> dev <网络接口> table <表名>

例如,添加一个策略路由到 192.168.5.0/24 网络,通过网关 192.168.0.4,使用网络接口 eth0,并将其添加到 custom 表中:

1
ip route add 192.168.5.0/24 via 192.168.0.4 dev eth0 table custom

24. 删除策略路由

1
ip route del <目标网络> via <网关> dev <网络接口> table <表名>

例如,删除上述策略路由:

1
ip route del 192.168.5.0/24 via 192.168.0.4 dev eth0 table custom

25. 查看路由表的策略路由规则

1
ip rule show

这将显示策略路由规则。

26. 添加策略路由规则

1
ip rule add from <源地址> table <表名>

例如,添加一个策略路由规则,将所有来自 192.168.6.0/24 的流量路由到 custom 表:

1
ip rule add from 192.168.6.0/24 table custom

27. 删除策略路由规则

1
ip rule del from <源地址> table <表名>

例如,删除上述策略路由规则:

1
ip rule del from 192.168.6.0/24 table custom

28. 查看路由表的策略路由规则优先级

1
ip rule show

这将显示策略路由规则的优先级。

29. 添加策略路由规则优先级

1
ip rule add from <源地址> table <表名> priority <优先级>

例如,添加一个策略路由规则,将所有来自 192.168.7.0/24 的流量路由到 custom 表,并设置优先级为 1000

1
ip rule add from 192.168.7.0/24 table custom priority 1000

30. 删除策略路由规则优先级

1
ip rule del from <源地址> table <表名> priority <优先级>

例如,删除上述策略路由规则:

1
ip rule del from 192.168.7.0/24 table custom priority 1000

31. 查看路由表的策略路由规则来源

1
ip rule show

这将显示策略路由规则的来源。

32. 添加策略路由规则来源

1
ip rule add from <源地址> table <表名>

例如,添加一个策略路由规则,将所有来自 192.168.8.0/24 的流量路由到 custom 表:

1
ip rule add from 192.168.8.0/24 table custom

33. 删除策略路由规则来源

1
ip rule del from <源地址> table <表名>

例如,删除上述策略路由规则:

1
ip rule del from 192.168.8.0/24 table custom

34. 查看路由表的策略路由规则目标

1
ip rule show

这将显示策略路由规则的目标。

35. 添加策略路由规则目标

1
ip rule add to <目标地址> table <表名>

例如,添加一个策略路由规则,将所有到 192.168.9.0/24 的流量路由到 custom 表:

1
ip rule add to 192.168.9.0/24 table custom

36. 删除策略路由规则目标

1
ip rule del to <目标地址> table <表名>

例如,删除上述策略路由规则:

1
ip rule del to 192.168.9.0/24 table custom

37. 查看路由表的策略路由规则接口

1
ip rule show

这将显示策略路由规则的接口。

38. 添加策略路由规则接口

1
ip rule add dev <网络接口> table <表名>

例如,添加一个策略路由规则,将所有通过 eth0 接口的流量路由到 custom 表:

1
ip rule add dev eth0 table custom

39. 删除策略路由规则接口

1
ip rule del dev <网络接口> table <表名>

例如,删除上述策略路由规则:

1
ip rule del dev eth0 table custom

40. 查看路由表的策略路由规则协议

1
ip rule show

这将显示策略路由规则的协议。

41. 添加策略路由规则协议

1
ip rule add proto <协议> table <表名>

例如,添加一个策略路由规则,将所有 TCP 协议的流量路由到 custom 表:

1
ip rule add proto tcp table custom

42. 删除策略路由规则协议

1
ip rule del proto <协议> table <表名>

例如,删除上述策略路由规则:

1
ip rule del proto tcp table custom

43. 查看路由表的策略路由规则标记

1
ip rule show

这将显示策略路由规则的标记。

44. 添加策略路由规则标记

1
ip rule add fwmark <标记> table <表名>

例如,添加一个策略路由规则,将所有标记为 0x1 的流量路由到 custom 表:

1
ip rule add fwmark 0x1 table custom

45. 删除策略路由规则标记

1
ip rule del fwmark <标记> table <表名>

例如,删除上述策略路由规则:

1
ip rule del fwmark 0x1 table custom

46. 查看路由表的策略路由规则优先级

1
ip rule show

这将显示策略路由规则的优先级。

47. 添加策略路由规则优先级

1
ip rule add priority <优先级> table <表名>

例如,添加一个策略路由规则,将所有优先级为 1000 的流量路由到 custom 表:

1
ip rule add priority 1000 table custom

48. 删除策略路由规则优先级

1
ip rule del priority <优先级> table <表名>

例如,删除上述策略路由规则:

1
ip rule del priority 1000 table custom

49. 查看路由表的策略路由规则来源

1
ip rule show

这将显示策略路由规则的来源。

50. 添加策略路由规则来源

1
ip rule add from <源地址> table <表名>

例如,添加一个策略路由规则,将所有来自 192.168.10.0/24 的流量路由到 custom 表:

1
ip rule add from 192.168.10.0/24 table custom

51. 删除策略路由规则来源

1
ip rule del from <源地址> table <表名>

例如,删除上述策略路由规则:

1
ip rule del from 192.168.10.0/24 table custom

52. 查看路由表的策略路由规则目标

1
ip rule show

这将显示策略路由规则的目标。

53. 添加策略路由规则目标

1
ip rule add to <目标地址> table <表名>

例如,添加一个策略路由规则,将所有到 192.168.11.0/24 的流量路由到 custom 表:

1
ip rule add to 192.168.11.0/24 table custom

54. 删除策略路由规则目标

1
ip rule del to <目标地址> table <表名>

例如,删除上述策略路由规则:

1
ip rule del to 192.168.11.0/24 table custom

55. 查看路由表的策略路由规则接口

1
ip rule show

这将显示策略路由规则的接口。

56. 添加策略路由规则接口

1
ip rule add dev <网络接口> table <表名>

例如,添加一个策略路由规则,将所有通过 eth0 接口的流量路由到 custom 表:

1
ip rule add dev eth0 table custom

57. 删除策略路由规则接口

1
ip rule del dev <网络接口> table <表名>

例如,删除上述策略路由规则:

1
ip rule del dev eth0 table custom

58. 查看路由表的策略路由规则协议

1
ip rule show

这将显示策略路由规则的协议。

59. 添加策略路由规则协议

1
ip rule add proto <协议> table <表名>

例如,添加一个策略路由规则,将所有 TCP 协议的流量路由到 custom 表:

1
ip rule add proto tcp table custom

60. 删除策略路由规则协议

1
ip rule del proto <协议> table <表名>

例如,删除上述策略路由规则:

1
ip rule del proto tcp table custom

61. 查看路由表的策略路由规则标记

1
ip rule show

这将显示策略路由规则的标记。

62. 添加策略路由规则标记

1
ip rule add fwmark <标记> table <表名>

例如,添加一个策略路由规则,将所有标记为 0x1 的流量路由到 custom 表:

1
ip rule add fwmark 0x1 table custom

63. 删除策略路由规则标记

1
ip rule del fwmark <标记> table <表名>

例如,删除上述策略路由规则:

1
ip rule del fwmark 0x1 table custom

64. 查看路由表的策略路由规则优先级

1
ip rule show

这将显示策略路由规则的优先级。

65. 添加策略路由规则优先级

1
ip rule add priority <优先级> table <表名>

例如,添加一个策略路由规则,将所有优先级为 1000 的流量路由到 custom 表:

1
ip rule add priority 1000 table custom

66. 删除策略路由规则优先级

1
ip rule del priority <优先级> table <表名>

例如,删除上述策略路由规则:

1
ip rule del priority 1000 table custom

67. 查看路由表的策略路由规则来源

1
ip rule show

这将显示策略路由规则的来源。

68. 添加策略路由规则来源

1
ip rule add from <源地址> table <表名>

例如,添加一个策略路由规则,将所有来自 192.168.12.0/24 的流量路由到 custom 表:

1
ip rule add from 192.168.12.0/24 table custom

69. 删除策略路由规则来源

1
ip rule del from <源地址> table <表名>

例如,删除上述策略路由规则:

1
ip rule del from 192.168.12.0/24 table custom

70. 查看路由表的策略路由规则目标

1
ip rule show

这将显示策略路由规则的目标。

71. 添加策略路由规则目标

1
ip rule add to <目标地址> table <表名>

例如,添加一个策略路由规则,将所有到 192.168.13.0/24 的流量路由到 custom 表:

1
ip rule add to 192.168.13.0/24 table custom

72. 删除策略路由规则目标

1
ip rule del to <目标地址> table <表名>

例如,删除上述策略路由规则:

1
ip rule del to 192.168.13.0/24 table custom

73. 查看路由表的策略路由规则接口

1
ip rule show

这将显示策略路由规则的接口。

74. 添加策略路由规则接口

1
ip rule add dev <网络接口> table <表名>

例如,添加一个策略路由规则,将所有通过 eth0 接口的流量路由到 custom 表:

1
ip rule add dev eth0 table custom

主机通过2个路由器实现网络互通

d1739853739ac24252ede95dba4b76c0.png

搭建4台虚拟机: 2台模拟路由器,2台模拟主机

注意点:

  • 1.HostA 网关指向 RouteA eth0
  • 2.HostB 网关指向 RouteB eth1
  • 3.RouteA/RouteB 通过eth1网卡通信,各端配置eth0网卡当作对端网关(gateway)
  • 4.RouteA/RouteB上须配置ip_forward 支持多网卡建数据包的转发
  • 5.RouteA/RouteB上新增路由,源端下一跳到对端
临时添加验证
sysctl -w net.ipv4.ip_forward=1
sysctl -p

or

写配置文件
tee net.ipv4.ip_forward=1 >> /etc/sysctl.conf 
sysctl -p

route add -net  172.24.24.0/24  gw 10.10.0.2 [dev eth1]

route add -net  192.168.24.0/24  gw 10.10.0.1 [dev eth1]

动态路由(自动交换路由寻址)

  • quagga
    • vtysh 配置
  • 路由协议:
    • RIP
    • OSPF
    • BGP