实战:动态网络中的路由管理──优化连接的策略与实践之双网卡打通内外网
背景
在现代网络环境中,组织往往经历频繁的网络拓扑变更,如子网重组、网关变更或设备迁移。这些变化要求 IT 管理团队迅速调整网络配置,以确保网络效率和安全性。静态的永久路由虽然在稳定网络中能很好地引导流量,但在动态变化的环境中可能导致网络性能下降,甚至引发连接问题。因此,当网络环境变化时,需要有效地管理这些路由配置以维持最佳连接性能。
环境
- 操作系统:Windows,要求执行网络命令时具备管理员权限。
- 网络设备:包括连接到内网和外网的多个接口,例如有线和无线网卡,支持动态和静态路由配置。
- 目标网络配置:需考虑组织内部的 IP 地址规划、子网掩码及网关分配,同时支持动态 DHCP 和静态 IP 环境。
- 工具需求 :需使用 Windows 内置工具例如命令提示符、
ipconfig
和route
命令来查看和管理路由表。 - 关键关注点:确保路由调整过程中的网络连通性可用,避免因路由错误而导致业务中断。
操作
要在 Windows 系统中通过增加路由的方式实现内网和外网的联通,你需要使用静态路由来指导网络流量的去向。假设你的电脑有两张网卡:一张无线网卡连接外网(Internet),另一张有线网卡连接内网。以下是实现内网与外网连通的步骤:
-
连接设备:
- 确保你的无线网卡已经连接到外网(Internet)。
- 确保你的有线网卡已经连接到内网。
-
查看网络配置:
- 打开命令提示符:按下
Win + R
,输入cmd
,然后按 Enter。 - 输入
ipconfig /all
,记录下无线网卡和有线网卡的 IP 地址、子网掩码和网关。
- 打开命令提示符:按下
cmd
以太网适配器 以太网 3: 连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Realtek USB FE Family Controller
物理地址. . . . . . . . . . . . . : 00-E0-4C-36-0C-7A DHCP
已启用 . . . . . . . . . . . : 否
自动配置已启用. . . . . . . . . . : 是
IPv4 地址 . . . . . . . . . . . . : 137.64.245.34(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 137.64.245.1
TCPIP 上的 NetBIOS . . . . . . . : 已启用
无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Intel(R) Wi-Fi 6 AX201 160MHz
物理地址. . . . . . . . . . . . . : 58-6C-25-EC-B5-17 DHCP
已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
IPv4 地址 . . . . . . . . . . . . : 110.179.67.109(首选)
子网掩码 . . . . . . . . . . . . : 255.255.248.0
获得租约的时间 . . . . . . . . . : 2024年12月10日 9:53:25
租约过期的时间 . . . . . . . . . : 2024年12月13日 10:38:45
默认网关. . . . . . . . . . . . . : 110.179.64.1
DHCP 服务器 . . . . . . . . . . . : 110.179.64.1
DNS 服务器 . . . . . . . . . . . : 59.49.49.49 219.149.135.188
TCPIP 上的 NetBIOS . . . . . . . : 已启用
-
添加静态路由:
-
在命令提示符中,使用
route add
命令添加静态路由。命令格式如下:xmlroute add <目的网络> mask <子网掩码> <网关> metric <跃点数> if <接口索引>
-
例子:假设内网的网络地址是
192.168.1.0
,子网掩码是255.255.255.0
,默认网关是192.168.1.1
,接口索引(可以在route print
中查看)是 2,你可以运行:csharproute add 192.168.1.0 mask 255.255.255.0 192.168.1.1 metric 1 if 2
-
这个命令表示将通往
192.168.1.0/24
网络的流量通过有线接口发送。
-
-
验证路由:
- 通过命令
route print
确认静态路由已被正确添加。
- 通过命令
cmd
IPv4 路由表
===========================================================================
活动路由: 网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 137.64.245.1 137.64.245.34 291
0.0.0.0 0.0.0.0 110.179.64.1 110.179.67.109 30
110.179.64.0 255.255.248.0 在链路上 110.179.67.109 286
110.179.67.109 255.255.255.255 在链路上 110.179.67.109 286
110.179.71.255 255.255.255.255 在链路上 110.179.67.109 286
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331
127.0.0.1 255.255.255.255 在链路上
127.0.0.1 331 127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
137.64.245.0 255.255.255.0 在链路上 137.64.245.34 291
137.64.245.34 255.255.255.255 在链路上 137.64.245.34 291
137.64.245.255 255.255.255.255 在链路上 137.64.245.34 291
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331
224.0.0.0 240.0.0.0 在链路上 110.179.67.109 286
224.0.0.0 240.0.0.0 在链路上 137.64.245.34 291
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
255.255.255.255 255.255.255.255 在链路上 110.179.67.109 286
255.255.255.255 255.255.255.255 在链路上 137.64.245.34 291
===========================================================================
永久路由: 网络地址 网络掩码 网关地址 跃点数
10.0.0.0 255.0.0.0 10.144.211.1 1 0.0.0.0 0.0.0.0 137.64.245.1 0
===========================================================================
IPv6 路由表
===========================================================================
活动路由: 接口跃点数网络目标 网关
1 331 ::1/128 在链路上
1 331 ff00::/8 在链路上
markdown
- 测试连通性,使用 `ping` 命令测试内网和外网是否都能通。
-
使路由永久化(可选) :
-
添加的静态路由默认情况下在重启后会丢失。若希望永久化,可以在
route add
命令后添加-p
参数:cssroute -p add 192.168.1.0 mask 255.255.255.0 192.168.1.1 metric 1 if 2
-
要注意的是,具体的网络参数如 IP 地址、子网掩码、网关和接口索引请根据你自己的网络环境进行调整。确保不要添加错误的路由,否则可能导致网络不可用。
注意事项
- 防火墙配置:确保你的 Windows 防火墙或任何第三方防火墙设置未阻止网络流量,特别是对于新的连接或路由。
- 对全局生效 :
route add
和-p
设置需要使用管理员权限的命令提示符。 - 路由冲突:确保没有与现有路由冲突,特别是在更复杂的网络环境中。
如果你的网络需求更为复杂,可能需要更多进阶的网络配置与设备(如路由器、交换机)来实现更复杂的路由功能。
实际
从你的路由表中可以看出,当前系统设置中包含两条默认路由(0.0.0.0/0):
- 跳跃数为 291 的默认路由,通过网关
137.64.245.1
,接口 IP 是137.64.245.34
。 - 跳跃数为 30 的默认路由,通过网关
110.179.64.1
,接口 IP 是110.179.67.109
。
显然,较低的跳跃数表示路由优先级更高,因此 110.179.64.1
作为网关的默认路由优先于 137.64.245.1
使用。
如何解决和调整
如果希望保持现有设置,并找出内网或外网的具体使用需求,可以根据以下提议来调整您希望的路由优先级:
1. 指定内网流量走特定接口
如果当前内网访问需要通过 137.64.245.1
,确保有对应内网段的路由(已经存在)通过这条路线。你可以通过 route add
确保某些特定内网段(如 137.64.245.0/24
)明确通过此网关进行:
csharp
bash
route add 137.64.245.0 mask 255.255.255.0 137.64.245.1 metric 1 if <以太网3接口索引>
2. 修改外网默认路由优先级
如果需要外网使用通过其他线路,则考虑将无线接口作为主要外网接口,让它拥有更低的跃点数:
css
bash
route change 0.0.0.0 mask 0.0.0.0 110.179.64.1 metric 5
3. 删除特定默认路由
简化你的路由表来避免冲突,可以删除一个不必要的默认路由:
arduino
bash
route delete 0.0.0.0 mask 0.0.0.0 137.64.245.1
此操作告诉系统通过另一条线路访问,所以请根据实际的网络需求考虑这个选项。
注意事项
- 管理员权限:这些操作需要在具有管理员权限的命令提示符下执行。
- 动态变化注意 :如果通过 DHCP 设置,该配置在网卡或系统重启后可能会变化,永久需要加
-p
标记。 - 网络服务限制:一些公司在内网和外网的路由设置上做了额外限制,需要与网络管理员核对。
接口索引 怎么填?
在Windows中,每个网络接口都有对应的接口索引,用来在路由命令中指定具体的网络接口。要找到接口索引号码,你可以通过以下步骤来获取:
如何查看接口索引
-
打开命令提示符:
- 按
Win + R
,输入cmd
,然后按Enter
。
- 按
-
运行命令查看接口索引:
- 输入以下命令并按
Enter
:
kotlinbash netsh interface ipv4 show interfaces
这将显示一个列表,包含所有网络接口及其接口索引(Idx)信息。例如,输出可能看起来如下:
diffIdx 状态 名称 --- ----------- -------------------- 1 已连接 Loopback Pseudo-Interface 1 6 已连接 以太网 14 已连接 WLAN
- 输入以下命令并按
-
查找相关接口:
- 在输出中寻找与具体网卡匹配的名称。你需要根据之前
ipconfig
中描述的网卡名称匹配相应的接口。例如,WLAN
可能是你的无线适配器,如果你想修改它的路由,那么就使用它对应的接口索引。
- 在输出中寻找与具体网卡匹配的名称。你需要根据之前
使用接口索引
一旦知道接口索引号,你可以在 route
命令中使用 if
参数来指定接口索引。比如:
csharp
bash
route add 137.64.245.0 mask 255.255.255.0 137.64.245.1 metric 1 if 6
在这个例子中,6
就是指定的接口索引,用于配置默认路由或者特定路由信息。
注意事项
- 确确保使用正确的接口索引,以免误配置不相关的网络接口。
- 在执行命令行操作时,确保命令提示符是在管理员权限下运行,以免遇到权限问题。
我需要让访问内网137.64.108.0网段的走网线以太网3 137.64.245.1 实际的路由应该是
csharp
route add 137.64.108.0 mask 255.255.255.0 137.64.245.1 metric 1 if 62
解释
在执行 route add
命令时,确保以下几点,以便配置正确无误:
-
接口索引正确性:
- 确认
if 62
确实是对应于以太网适配器137.64.245.34
的接口索引。可以使用netsh interface ipv4 show interfaces
确认索引。如果不正确,请替换为对应的正确值。
- 确认
-
路由配置解释:
- 这条命令的设置是为IP段
137.64.108.0/24
添加一个静态路由。 - 使用的网关是
137.64.245.1
。 - 路由通过索引为
62
的网卡接口。 - 跃点数为
1
,表示优先级很高(数值越小,优先级越高)。
- 这条命令的设置是为IP段
-
命令执行权限:
- 确保以管理员权限运行命令提示符,否则可能会因为权限问题导致命令无法正常执行。
-
验证路由条目:
- 运行命令
route print
检查路由表,确认新添加的路由已出现在表中。 - 使用
ping
或tracert
测试网络通达性,看能否正常访问目标网段。
- 运行命令
如果确认接口索引和其他参数都没有问题,并且添加的路由有效且正确,那么问题应该会得到解决。否则,请检查网络配置和物理连接,是否符合预期的设置。
总结
-
查看网络配置:
- 打开命令提示符:按下
Win + R
,输入cmd
,然后按 Enter。 - 输入
ipconfig /all
,记录下无线网卡和有线网卡的 IP 地址、子网掩码和网关。
- 打开命令提示符:按下
-
运行命令查看接口索引:
- 输入以下命令并按
Enter
:
kotlinbash netsh interface ipv4 show interfaces
这将显示一个列表,包含所有网络接口及其接口索引(Idx)信息。例如,输出可能看起来如下:
diffIdx 状态 名称 --- ----------- -------------------- 1 已连接 Loopback Pseudo-Interface 1 6 已连接 以太网 14 已连接 WLAN
- 输入以下命令并按
-
添加静态路由:
-
在命令提示符中,使用
route add
命令添加静态路由。命令格式如下:csharproute add 137.64.108.0 mask 255.255.255.0 137.64.245.1 metric 1 if 62
- 验证路由:
-
通过命令
route print
确认静态路由已被正确添加。
-
cmd
IPv4 路由表
===========================================================================
活动路由: 网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 137.64.245.1 137.64.245.34 291
0.0.0.0 0.0.0.0 110.179.64.1 110.179.67.109 30
110.179.64.0 255.255.248.0 在链路上 110.179.67.109 286
110.179.67.109 255.255.255.255 在链路上 110.179.67.109 286
110.179.71.255 255.255.255.255 在链路上 110.179.67.109 286
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331
127.0.0.1 255.255.255.255 在链路上
127.0.0.1 331 127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
137.64.245.0 255.255.255.0 在链路上 137.64.245.34 291
137.64.245.34 255.255.255.255 在链路上 137.64.245.34 291
137.64.245.255 255.255.255.255 在链路上 137.64.245.34 291
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331
224.0.0.0 240.0.0.0 在链路上 110.179.67.109 286
224.0.0.0 240.0.0.0 在链路上 137.64.245.34 291
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
255.255.255.255 255.255.255.255 在链路上 110.179.67.109 286
255.255.255.255 255.255.255.255 在链路上 137.64.245.34 291
===========================================================================
永久路由: 网络地址 网络掩码 网关地址 跃点数
10.0.0.0 255.0.0.0 10.144.211.1 1 0.0.0.0 0.0.0.0 137.64.245.1 0
===========================================================================
IPv6 路由表
===========================================================================
活动路由: 接口跃点数网络目标 网关
1 331 ::1/128 在链路上
1 331 ff00::/8 在链路上
markdown
- 测试连通性,使用 `ping` 命令测试内网和外网是否都能通。

-
使路由永久化(可选) :
-
添加的静态路由默认情况下在重启后会丢失。若希望永久化,可以在
route add
命令后添加-p
参数:cssroute -p add 192.168.1.0 mask 255.255.255.0 192.168.1.1 metric 1 if 2
-
删除路由
如果网络环境发生变化,之前配置的永久路由可能不再适合当前的网络需求。在这种情况下,删除或更新这些路由是很重要的,以避免造成不必要的网络连接问题或性能下降。
何时需要删除永久路由
- 网络拓扑变化:当网络结构、IP规划或网关地址发生变化时,旧的永久路由可能指向错误的网关或网段。
- 设备或网段移除:如果某些设备或子网不再存在,相关的路由就没有意义,并且可能会导致误导的网络流量路径。
- 路由冲突:当现有的永久路由和新的动态路由规则或其他静态路由冲突时,需要删除旧路由以确保网络顺畅。
- 故障排查:为了排查网络连接问题,需要简化路由表,保持其干净有序。
如何删除永久路由
要删除永久路由,你需要知道网关和目标网络的信息。从之前的永久路由输出中可以看到用于删除的参数。
-
打开命令提示符:
- 用管理员权限运行命令提示符。
-
查看当前路由:
- 使用
route print
查看当前活动和永久路由。
- 使用
-
删除永久路由:
- 使用
route delete
命令。格式如下:
xmlbash route delete <目标网络> mask <子网掩码> <网关>
例如,假设要删除
10.0.0.0/8
的永久路由,可以使用:arduinobash route delete 10.0.0.0 mask 255.0.0.0 <网关>
<网关>需要填写之前用于此路由的网关,例如
10.144.211.1
。 - 使用
-
验证删除效果:
- 重新执行
route print
,确认永久路由已被成功移除。
- 重新执行
后续措施
- 在网络环境变化后,合理配置新的路由以适应当前的网络需求。
- 定期审核和清理永久路由,确保其与当前网络配置的实际需求相符,确保网络性能最优化。
由于权限问题,有时可能需要注销或重新启动设备来使删除的路由完全生效。确保在这些更改操作完成后进行适当验证,以确保网络连通性未受负面影响。