windows/linux添加路由

​​一、路由追踪(路径诊断)

​​​​Windows系统​​

​​tracert命令​​:
功能:追踪数据包路径,显示每个节点的IP和延迟。
示例:tracert 8.8.8.8(追踪到Google DNS的路由)。
​​pathping命令​​:
结合tracert和ping,提供节点丢包率和延迟统计。

​​Linux系统​​

​​traceroute命令​​:
默认使用UDP协议,可切换为ICMP(-I参数)或TCP(-T参数)。
示例:traceroute -I google.com(ICMP协议追踪)。
​​mtr命令​​:
实时刷新路径和延迟,支持持续监控:mtr 8.8.8.8。
​​tracepath命令​​:
无需root权限,自动检测MTU(最大传输单元)。

 ​​二、路由表查看​​

​​Windows​​

​​route print​​:
显示活动路由(目标网段、掩码、网关、接口、跃点数)及永久路由。

​​Linux​​

​​route -n​​:
以数字格式输出路由表(避免DNS解析延迟)。
​​ip route show​​:
更现代的替代命令,支持IPv4/IPv6和策略路由。

 ​​三、路由操作(增删改)​​

3.1. 路由命令参数详解

3.1.1. Windows 路由命令参数详解​​

​​1. 基本语法​​

route add [目标网络] mask [子网掩码] [网关] [参数]

​​2. 常用参数​​​​

​​参数​​

​​作用​​

​​示例​​

-p

永久路由(重启后保留)

route add -p 192.168.1.0 mask 255.255.255.0 192.168.1.1

mask

指定子网掩码

mask 255.255.255.0(网段)或 mask 255.255.255.255(单主机)

[网关]

数据包转发的下一跳IP

172.11.11.1

if [接口索引]

​​强制指定发送数据的网卡​​(解决多网卡冲突)

if 14(对应 route print中的接口列表索引)

metric [数值]

路由优先级(数值越小优先级越高)

metric 10(默认根据接口速度自动计算)

delete

删除路由

route delete 192.168.1.0

​​3. 关键参数说明​​

​​if 14​​:
在您的 route print输出中,接口列表显示:
14...f4 6b 8c a4 cb 42 ......Intel(R) Ethernet Connection X722 for 1GbE #2
if 14表示强制使用 ​​第二个物理网卡​​(索引为14)发送数据包。
​​何时需要?​​当主机有多个网卡(如一个连接内网,一个连接外网),需明确指定出口网卡避免路由混乱。
​​metric​​:
系统默认根据网卡速度自动计算(如千兆网卡通常为 20,百兆为 30)。
手动设置可覆盖默认值(例如:metric 10优先于 metric 20)。

​​3.1.2. Linux 路由命令参数详解​​

​​1. 基本语法(传统 route命令)​​

route add -net [目标网络] netmask [子网掩码] gw [网关] dev [网卡]

​​2. 现代语法(ip route命令)​​

ip route add [目标网络]/[掩码位数] via [网关] dev [网卡]

​​3. 常用参数​​

​​参数​​

​​作用​​

​​示例​​

-net

目标为网络(非单主机)

-net 192.168.1.0

netmask

子网掩码(传统命令)

netmask 255.255.255.0

gw

指定网关(传统命令)

gw 192.168.1.1

via

指定网关(现代命令)

via 192.168.1.1

dev [网卡]

​​强制指定发送数据的网卡​​

dev eth0

metric [数值]

路由优先级

metric 100

src [IP]

指定源IP(多IP绑定时使用)

src 192.168.1.100

table [表名]

使用自定义路由表(非默认 main表)

table 100

​​4. 关键参数说明​​

​​dev eth0​​:
类似 Windows 的 if,指定数据从哪个网卡发出(如 eth0、ens33)。
​​查看网卡名​​:
ip link show # 或 ifconfig
​​metric​​:
Linux 的 metric值越大优先级越低(与 Windows 相反)。
默认值通常为 0(主路由表)或 100(辅助路由)。

​​3.1.3. 跨系统对比​​

​​功能​​

​​Windows 命令​​

​​Linux 命令(传统)​​

​​Linux 命令(现代)​​

​​添加路由​​

route add -p 目标 mask 掩码 网关 if 14

route add -net 目标 netmask 掩码 gw 网关 dev eth0

ip route add 目标/掩码 via 网关 dev eth0

​​永久生效​​

-p参数

写入 /etc/network/interfaces

写入 /etc/network/interfaces或 netplan

​​指定网卡​​

if 接口索引

dev 网卡名

dev 网卡名

​​优先级控制​​

metric 数值(值小优先)

metric 数值(值大优先)

metric 数值(值大优先)

3.1.4. 实际案例​​

​​1. Windows 示例​​

route add -p 39.153.157.18 mask 255.255.255.255 172.17.11.1 if 14 metric 10
​​解释​​:永久添加一条路由,所有到 39.153.157.18的流量通过 172.17.11.1网关,从索引为 14的网卡发出,优先级为 10

​​2. Linux 示例​​

ip route add 39.153.157.18/32 via 172.17.11.1 dev eth0 metric 100
​​解释​​:所有到 39.153.157.18的流量通过 172.17.11.1网关,从 eth0网卡发出,优先级为 100

​​3.1.5. 常见问题​​

​​Q1: 如何查看网卡接口索引(Windows)?​​
运行 route print,在 ​​“接口列表”​​ 部分找到对应网卡的索引号(如 14)。
​​Q2: Linux 如何让路由永久生效?​​
​​Ubuntu/Debian​​:编辑 /etc/network/interfaces,添加:
post-up ip route add 39.153.157.18/32 via 172.17.11.1 dev eth0
​​CentOS/RHEL​​:创建文件 /etc/sysconfig/network-scripts/route-eth0,内容:
39.153.157.18/32 via 172.17.11.1 dev eth0
​​Q3: 如何删除路由?​​
​​Windows​​:
route delete 39.153.157.18
​​Linux​​:
ip route del 39.153.157.18/32

​​3.1.6. 总结​​​​

Windows​​ 的 if和 Linux 的 dev均用于​​绑定出口网卡​​,解决多网卡路由冲突。

​​掩码选择​​:
/32255.255.255.255)用于单主机,/24255.255.255.0)用于网段。
​​优先级​​:
Windows:metric值越小越优先。
Linux:metric值越大越优先。

3.2. 添加路由​​

​​Windows​​:

临时添加:route add 192.168.2.0 mask 255.255.255.0 192.168.1.1
永久添加:route add -p 192.168.2.0 mask 255.255.255.0 192.168.1.1

​​Linux​​:

传统命令:route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1
ip命令:ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

​​3.2. 删除路由​​

​​Windows​​:

route delete 192.168.2.0(删除目标网段路由)。

​​Linux​​:

route del -net 192.168.2.0 netmask 255.255.255.0
ip route del 192.168.2.0/24 via 192.168.1.1

​​3.3. 修改路由​​

​​Windows​​:

直接修改网关:route change 192.168.2.0 mask 255.255.255.0 192.168.1.2

​​Linux​​:
需先删除旧路由再添加新路由(无直接修改命令)。

​​四、高级功能与注意事项​​

​​协议选择​​:
Linux中可通过参数切换协议(如traceroute -T用TCP SYN包),绕过防火墙限制。
Windows的tracert仅支持ICMP,灵活性较低。

​​双网卡路由配置​​:
案例:Windows双网卡需删除默认路由,为不同网段添加静态路由(如办公网和互联网分离)。
​​路由度量值(Metric)​​:
作用:优先级控制(数值越低优先级越高)。

示例:route add 192.168.2.0 mask 255.255.255.0 192.168.1.1 metric 10

4.1. ​​永久路由保存​​

​​4.1.1 Windows​​:

命令结构​​:

route add 192.168.2.0 mask 255.255.255.0 192.168.1.1 metric 10

​​参数详解​​

​​部分​​

​​含义​​

route add

添加一条静态路由

192.168.2.0

​​目标网络地址​​,表示该路由规则适用的目标网段

mask 255.255.255.0

​​子网掩码​​,与目标地址共同定义网段范围(这里是标准的C类局域网掩码)

192.168.1.1

​​网关地址​​(下一跳),数据包必须通过此IP转发到目标网络

metric 10

​​路由优先级​​,数值越小优先级越高(当多条路由冲突时选择此值最小的路径)​​实际作用

4.1.1.1 ​​实际作用​​

这条命令的意思是:

​​“所有发送到 192.168.2.0/24网段的数据包,必须通过网关 192.168.1.1转发,且该路由的优先级为10。”​​

4.1.1.2 ​​典型应用场景​​

​​多网卡环境​​:
例如:一台电脑同时连接内网(192.168.1.0/24)和专线(192.168.2.0/24),需手动指定专网流量走特定网关。
​​企业网络分区​​:
若 192.168.2.0/24是财务部子网,192.168.1.1是连接该子网的核心交换机IP。
​​路由优先级控制​​:
如果存在另一条到 192.168.2.0/24的路由(如 metric 20),系统会优先选择 metric 10的路径。
​​验证路由是否生效​​

route print | findstr 192.168.2.0

​​预期输出​​:

192.168.2.0 255.255.255.0 192.168.1.1 192.168.1.100 10
(其中 192.168.1.100是本机用于发送数据的网卡IP)
4.1.1.3 注意事项​​

​​网关必须可达​​:
执行前需确认能 ping 通 192.168.1.1,否则路由无效。
​​永久生效​​:
默认重启后路由会丢失,需加 -p参数永久保存:

route add -p 192.168.2.0 mask 255.255.255.0 192.168.1.1 metric 10

​​冲突处理​​:
若已有相同目标的路由,需先删除旧规则:

route delete 192.168.2.0

​​Linux系统差异​​:
在Linux中需使用 ip route命令,例如:

ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 metric 10

Linux:需将路由命令写入/etc/network/interfaces或/etc/sysconfig/network-scripts/(CentOS)

​​永久生效​​(写入配置文件):
Ubuntu/Debian:
编辑
/etc/network/interfaces
添加: post
-up ip route add 39.153.157.19/32 via 172.11.11.1 dev eth0
CentOS
/RHEL:
编辑
/etc/sysconfig/network-scripts/route-eth0
添加:
39.153.157.19/32 via 172.11.11.1

4.1.2.  Ubuntu/Debian 系统

​​配置行( /etc/network/interfaces)​​:

post-up ip route add 39.153.157.19/32 via 172.11.11.1 dev eth0

​​参数解析​​:

​​部分​​

​​含义​​

post-up

表示在网卡启动(up)后执行的命令。

ip route add

添加一条静态路由。

39.153.157.19/32

目标IP地址,/32表示精确匹配单个主机(非网段)。

via 172.11.11.1

指定下一跳网关地址(数据包转发到的下一个节点)。

dev eth0

指定从哪个网络接口(如 eth0)发送数据包。

​​作用​​:

  • 当系统启动或网卡 eth0激活时,自动添加一条规则:

    “所有发送到 39.153.157.19的数据包,通过网关 172.11.11.1从 eth0网卡发出。”


​​4.1.2.1. CentOS/RHEL 系统

​​配置行( /etc/sysconfig/network-scripts/route-eth0)​​:

39.153.157.19/32 via 172.11.11.1

​​参数解析​​:

​​部分​​

​​含义​​

39.153.157.19/32

目标IP地址,/32表示主机路由(仅匹配该IP)。

via 172.11.11.1

指定下一跳网关地址。

​​作用​​:

  • 系统启动时自动加载该文件,将规则添加到路由表:

    “所有发送到 39.153.157.19的数据包,通过网关 172.11.11.1转发。”

  • ​​注意​​:

    • 文件名 route-eth0中的 eth0需与实际网卡名一致(如 ens33)。

    • 若需指定出口网卡,需额外配置(默认根据网关自动选择接口)。


4.1.2.2. 共同原理​​
  • ​​永久性​​:写入配置文件后,重启网络服务或系统时规则会自动生效,避免手动重复添加。

  • ​​精确控制​​:/32掩码确保仅影响 39.153.157.19,其他流量走默认路由。

  • ​​依赖网关​​:via 172.11.11.1要求该网关必须可达(否则路由无效)。


4.1.2.3. 验证配置是否生效​​

​​Ubuntu/Debian​​:

sudo systemctl restart networking # 重启网络服务 
ip route show | grep 39.153.157.19 # 查看路由表

​​CentOS/RHEL​​:

sudo systemctl restart network # 重启网络服务 
ip route show | grep 39.153.157.19 # 查看路由表

​​预期输出​​:

39.153.157.19 via 172.11.11.1 dev eth0

​​4.2. 故障排查​​

​​问题1:配置未生效​​

  • ​​原因​​:网卡名不匹配(如配置中是 eth0,实际为 ens33)。

  • ​​解决​​:

    ip link show # 查看实际网卡名 
    mv /etc/sysconfig/network-scripts/route-eth0 /etc/sysconfig/network-scripts/route-ens33 # CentOS
    sed -i 's/eth0/ens33/g' /etc/network/interfaces # Ubuntu

​​问题2:网关不可达​​

  • ​​现象​​:路由存在但 telnet仍不通。

  • ​​解决​​:

    ping 172.11.11.1 # 测试网关连通性 
    traceroute 39.153.157.19 # 检查数据包是否经过网关

​​总结​​

​​配置项​​

​​Ubuntu/Debian​​

​​CentOS/RHEL​​

​​配置文件​​

/etc/network/interfaces

/etc/sysconfig/network-scripts/route-eth0

​​语法​​

post-up ip route add ...

目标IP/掩码 via 网关

​​生效命令​​

systemctl restart networking

systemctl restart network

​​核心作用​​

指定单个IP的转发路径

同上

通过以上配置,您无需修改网卡默认网关,即可精准控制到 39.153.157.19的路由路径。

4.3. 替代工具​​:

​​tcptraceroute​​(Linux):基于TCP协议,穿透防火墙能力更强。
​​Wireshark​​:深度分析路由路径的底层数据包。

 ​​五、综合命令速查表​​

​​操作​​

​​Windows命令​​

​​Linux命令​​

​​路由追踪​​

tracert 目标IP

traceroute -I 目标IP

​​路由表查看​​

route print

ip route show或 route -n

​​添加路由​​

route add 目标网段 mask 掩码 网关

ip route add 目标网段 via 网关 dev 接口

​​删除路由​​

route delete 目标网段

ip route del 目标网段 via 网关

​​修改路由​​

route change 目标网段 mask 掩码 新网关

需删除后重新添加

​​六、避坑指南​​

​​权限问题​​:Windows需以管理员运行CMD;Linux的traceroute部分参数需sudo。
​​防火墙干扰​​:Linux建议用tcptraceroute或mtr -T(TCP模式)避免被拦截。
​​路由冲突​​:避免多网卡默认网关冲突,通过metric调整优先级。
掌握这些操作可覆盖90%的路由管理场景。若需更深入的策略路由(如基于源IP的路由选择),可进一步研究Linux的ip rule命令或Windows的netsh脚本。

 

posted @ 2025-08-06 11:16  O波V步  阅读(135)  评论(0)    收藏  举报