
简介对于既有内网访问需求又需保持外网连接的单位单网卡双IP加路由规则是替代代理服务器或双网卡的一种轻量方案。这份PDF面向网络管理员和IT运维人员重点解决单网卡无法同时访问内外网、代理逐一配置繁琐等实际问题内容覆盖双IP绑定、网关预留设置、内网与外网连通性验证以及通过批处理命令添加和删除默认路由、指定10网段流向内网网关等关键步骤。资源为独立PDF文档共1个文件大小258KB结构紧凑适合随时查阅目前已有94人学习使用。文档结合10.85.x.x与192.168.x.x等常见网段示例对route print、route delete、route add等命令做了分步说明读者可依据实际环境调整掩码和网关后直接套用减少反复插拔网线与额外购置网卡的成本。1. 单网卡同时上内外网的路由设置一根网线怎么走两条路工位墙上只有一个网口公司内网 OA、文件服务器要走内网查资料、连云服务又要走外网拔线切换的日子过够了。单网卡同时上内外网靠的不是玄学是操作系统路由表的静态路由策略给网卡绑两个不同网段的 IP让默认网关管外网再用一条或几条精确路由把内网网段指到内网网关数据包自己会选路。这个方案不需要加装第二张网卡也无需改交换机端口适合只有一根网线、内网外网出口不同的办公环境。本文完整给出从原理到命令、再到排错和开机自启的落地路径。2. 路由设置的核心原理路由表、网关与数据包选路2.1 一张网卡为什么能同时属于两个网段很多人的直觉是“一个网卡只能配一个 IP”其实网卡可以绑定多个 IP 地址每个 IP 属于不同网段时系统就会认为本机同时连接了多个网络。比如网卡既有 192.168.1.100外网网段又有 10.10.10.100内网网段操作系统生成路由表时就会为这两个网段分别生成直连路由。关键在于访问目标时查什么出站数据包先查路由表再决定从哪个 IP、哪个网关出去。这个机制的底层是路由表里每条记录的“目标网段 子网掩码 网关 接口”。只要路由表里有两个不同的网段条目系统就能在手头只有一个物理网卡的情况下对不同目标用不同的源 IP 和网关发包。这也是所有“单网卡双网段”方案的理论基础。2.2 路由表选路规则最长前缀匹配与默认网关路由表的选路规则不是“先到先得”而是“谁匹配得更精确谁优先”。当目标地址是 10.10.10.5 时路由表里有两条候选一条是 10.0.0.0/8掩码 255.0.0.0另一条是 0.0.0.0/0掩码 0.0.0.0那么系统选择 10.0.0.0/8因为它的前缀更长、匹配更具体。只有当没有更具体路由时才走默认网关 0.0.0.0/0即外网出口。这就是单网卡内外网共存的基石外网所有未知地址统统丢给默认网关内网网段则用一条精确静态路由覆盖。所以一个标准的配置方法是删除或忽略自动获取的内网网关把默认网关设成外网网关再手工添加一条“内网网段指向内网网关”的路由。2.3 方案选型为什么是“静态路由”而不是“切换 IP”常见做法有两种一种是频繁改网卡 IP需要访问内网时改成内网地址访问外网时再改回来操作繁琐而且容易忘。另一种是本文要讲的静态路由方案同时绑定两个 IP用路由规则把两种流量分离。静态路由方案的好处是配置一次长期生效内网外网同时可用不需要反复改 IP。用命令添加路由的本质是往系统路由表里写一条“去哪怎么走”的规则。Windows 下是 route addLinux 下是 ip route add。两者思路一样但参数写法不同。本文以 Windows 为主讲透最小命令因为单网卡同时上内外网的需求在 Windows 办公机、测试机上出现频率最高。3. 最小可复现配置Windows 下用 route 命令让单网卡同时走内外网3.1 动手前必须确认的三项信息先别急着敲命令信息不全容易翻车。需要问清楚三个问题内网网段是多少内网网关 IP 是多少外网网关 IP 是多少。如果内网有多个网段要列全或者确认是否能够通过一台内网路由器转发。这些信息一般网络管理员能直接提供也可以自己在电脑上临时配一个内网静态 IP用 ipconfig 查网关确认。默认情况下网卡可能同时从 DHCP 拿到内网 IP 和外网 IP但只有一个默认网关。这时先要在网卡属性里手动添加第二个 IP 地址两个地址分别属于内网网段和外网网段。例如外网 IP192.168.1.100掩码 255.255.255.0网关 192.168.1.1内网 IP10.10.10.100掩码 255.255.255.0网关 10.10.10.1DNS 建议先用外网的内网域名解析有问题再单独加。3.2 给网卡绑定第二个 IP图形界面操作在“网络连接”里打开网卡属性选中“Internet 协议版本 4 (TCP/IPv4)”点击“属性”然后点“高级”在“IP 地址”区域点“添加”填内网 IP 和掩码。网关不需要在这个界面填而是在“默认网关”区域填外网网关即可。完成后用 ipconfig 验证能看到网卡下挂着多个 IP 地址这是预期的效果ipconfig输出里会多出几个 IPv4 地址分别对应外网和内网。这一步最大的坑是网关填错位置在“高级”里填了内网网关系统可能会自动生成一条默认路由覆盖外网默认路由导致外网通不了。所以图形界面里只填外网网关内网网关留给后面的 route add 命令。3.3 查看当前路由表状态配置双 IP 后先查看当前路由表确认系统自动生成的直连路由和默认路由是否符合预期route print -4重点看这两部分接口列表里的 IPv4 地址是否包含两个网段路由表里是否有两个直连条目10.10.10.0 和 192.168.1.0以及默认路由 0.0.0.0/0 指向哪个网关。如果默认路由指向内网网关要把它改掉否则默认流量会错误地发往内网。3.4 添加内网静态路由确认默认路由指向外网网关后添加内网静态路由。假设内网网段是 10.10.0.0/16内网网关是 10.10.0.1执行route add 10.10.0.0 mask 255.255.0.0 10.10.0.1 -p这条命令的四个核心参数目标网段10.10.0.0、子网掩码255.255.0.0、网关10.10.0.1、-p 表示持久化路由重启后不丢。路由添加成功后去 ping 一个内网地址验证。如果之前有旧的错误路由可以用 route delete 删掉再重新添加。删除命令的格式和添加时保持一致只是把 add 换成 delete。3.5 验证内外网是否同时可用验证分两步一是验证外网比如 ping 8.8.8.8 或打开一个公网网站二是验证内网ping 内网服务器的 IP 或访问内网页面。都不通时用 route print -4 再看一次路由表重点确认目标网段那一行是否有匹配。代码块里加注释的话Windows 的批处理不支持 # 注释这里就不强求直接说明意图。验证时 ping 加 -n 4 可以连续发四个包避免单个包丢包误判。外网通、内网不通时先排查防火墙是否栏了 ICMP再排查路由条目本身。4. 多网段与多网关场景把 route 命令用到极致4.1 内网不止一个网段时怎么合并路由很多单位的内网不是一个 C 段而是多个网段常见的有 10.10.1.0/24、10.10.2.0/24、172.16.1.0/24 等。逐个添加是一个思路但更高效的做法是把连续网段合并成一条路由。比如内网全在 10.10.0.0/16 范围内时添加一条 10.10.0.0 掩码 255.255.0.0 即可覆盖所有子网段。如果不能合并可以写多条 route add每条对应一个子网只要网关相同系统按最长匹配规则自动处理。此时要特别注意两条路由的网段不能互相包含否则系统只会用前缀更长的那条另一条等于失效。合并的原则是取所有子网的共同前缀掩码按前缀长度收敛能用 /16 不要拆成四条 /24。4.2 用 metric 控制路由优先级默认网关和静态路由冲突时系统会选 metric 值小优先级高的条目。外网默认路由没有特别指定 metric自动生成的默认路由 metric 通常是 20 或 25。如果加了一条同为 0.0.0.0/0 的路由两条默认路由之间才会按 metric 竞争。但内网静态路由的网段和外网默认路由的网段不同正常情况下不冲突metric 的作用更多体现在多条默认路由或同网段路由并存的情况。加入接口跃点数是一个常见的调整手段。在网卡的高级 TCP/IP 设置里“接口跃点数”可以手动填一个值比如外网填 10内网接口填 20。但单网卡情况下两个 IP 在同一张物理网卡上接口跃点只能控制整张网卡无法按 IP 区分。所以这里更实用的调整方式是删掉系统自动生成的错误默认路由只保留外网默认路由再为内网添加静态路由。4.3 为什么说“单网卡双网关”是个坑常见的错误做法是在外网和内网的网卡属性里各填一个网关。单网卡下同时填两个网关系统会生成两条默认路由去外网的包可能被发到内网网关去内网的包可能被发到外网网关流量随机翻车。正确做法是默认路由只保留外网网关内网必须用精确网段的静态路由。多网段场景下还有一个隐藏陷阱系统在网卡重新探测网络时可能会自动追加一条默认路由覆盖掉手工配置。此时唯一可靠的保障是静态路由用 -p 持久化默认路由的网卡属性里不要填内网网关。重启前把 route print 的快照截图重启后再对一次能快速发现被自动覆盖的问题。4.4 Linux 下的等价配置ip route 的写法Windows 之外Linux 服务器上也有需求做法等价但命令不同。假设外网网关 192.168.1.1内网网关 10.10.0.1ip addr add 10.10.10.100/24 dev eth0 ip route del default ip route add default via 192.168.1.1 dev eth0 ip route add 10.10.0.0/16 via 10.10.0.1 dev eth0第一行给 eth0 添加附加 IP第二行删掉默认路由第三行把默认路由指向外网网关第四行添加内网静态路由。这里没有 -p 的概念持久化需要写入网络配置文件比如 RHEL 系的 /etc/sysconfig/network-scripts/route-eth0。它的内容和命令一一对应便于排查。5. 路由设置避坑指南单网卡内外网切换失败的常见原因与排查5.1 现象添加内网路由后外网通内网不通原因很可能是内网网关填错了或者内网网段掩码过窄。比如内网实际是 10.10.0.0/16路由里写了 10.10.1.0/24就只覆盖了第一段其他内网地址仍走默认路由被丢到外网网关外网网关不认识内网地址自然回包失败。解决方法是先用内网一台机器的 IP 和掩码推一次子网范围确认后把掩码放宽。最常见的是把 /16 当成 /24 用一查一个准。也有可能是内网服务器禁 ping不能只凭 ping 不通判断网络故障。用 telnet 测一个内网端口或者直接访问内网页面比 ping 更可靠。5.2 现象路由添加后重启就没了原因是没有加 -p 参数route add 默认是临时路由系统重启后路由表清空。解决方法是重新执行一次带 -p 的命令。有些单位装了安全软件或防火墙策略每次开机时可能重置路由表这时要看是否被组策略或终端安全软件拦截。临时排查时先手动添加验证网络通后再考虑持久化方案。补充一个细节route add -p 在 Windows 上实际写入了注册表位置在 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes。安全软件扫描到这里时可能会误报或清理备份这个注册表键值可以算是后悔药。5.3 现象内外网都通但访问内网页面很慢原因大概率是 DNS 解析走的外网 DNS内网域名被解析到公网地址或者解析超时。解决方法是打开网卡的高级 TCP/IP 设置在 DNS 选项卡里添加内网 DNS 服务器并且把它放在外网 DNS 前面或者是内网应用用 IP 直连。如果是同一个域名既需要外网解析又需要内网解析单靠 DNS 优先级解决不了只能在 hosts 文件里写固定映射。一个实际案例内网 git 服务器的域名是 git.company.com外网 DNS 解析出来是公网 IP导致 git 连接超时。后来在 hosts 里加了 10.10.10.50 git.company.com流量走内网路由速度立即正常。5.4 现象route add 报错“请求的操作需要提升”原因是没有以管理员权限运行命令行。route 命令修改路由表属于系统级操作普通权限会被拒绝。解决方法是开始菜单搜索 cmd右键“以管理员身份运行”再执行命令。有些精简版系统还可能出现 route.exe 文件缺失在 system32 里确认文件存在即可。这个报错出现频率很高是新手最容易卡住的地方不是命令问题是权限问题。5.5 排查工具组合route print、tracert、pathping排查单网卡路由问题时我最常用的组合是 route print -4 看路由表tracert -d 目标 IP 看每一跳的走向再配合 ping 观察延迟和丢包。如果 tracert 第一跳就到了外网网关说明这个目标 IP 没有匹配到内网静态路由问题在路由表如果第一跳是内网网关但后面超时问题在防火墙或中间链路。pathping 的细节更丰富能显示每一跳的丢包率适合排查内网某段链路质量。注意提示Windows 的 tracert 默认解析每个节点的域名-d 参数可以跳过反向解析速度更快输出也更干净。6. 把单网卡路由设置固化成批处理脚本与自启动日常使用中手动敲 route add 还是太累我习惯把整套配置写成一个批处理脚本。脚本内容分三步清掉可能的旧路由、添加内网静态路由、打印确认结果。因为 -p 参数已经把路由持久化脚本的主要作用是重置现场和快速排错。echo off route delete 10.10.0.0 mask 255.255.0.0 route add 10.10.0.0 mask 255.255.0.0 10.10.0.1 -p route print -4 | findstr 10.10 pause第一行删掉旧路由防止重复添加导致配置错乱第二行重新添加并持久化第三行用 findstr 过滤打印出内网路由条目确认是否添加成功。脚本放到任意目录都可以以管理员身份运行。如果想开机自动执行把脚本放进 shell:startup 启动文件夹即可或注册成计划任务。注意脚本里的网关地址、网段要按自己的环境替换。一次设备切换的教训我之前在一个项目现场忘了确认 DHCP 是否会给网卡下发内网网关结果是系统自动生成了一条默认路由指向内网网关导致外网的会话时通时断。后来在脚本开头加了一步强制删除非外网默认路由这个问题就基本绝迹了。路由配置这事把每一步都变成可重复执行的脚本比依赖记忆可靠得多。希望帮到你。本文还有配套的精品资源点击获取