双网卡主机内网外网网关冲突问题探索(策略路由、网络命名空间)(内外网双网卡时,通常不需要在内网网卡上设置默认网关)

2023-09-15 18:23:24

问题背景

我们有一台windows server 2012服务器,配置了双网卡,一个网卡配置外网,一个网卡配置内网,当我们将外网网络配置外网网关,内网网络配置内网网关时,奇怪的事情发生了,系统重启后,远程连接工具todesk无法正常与外网通信,配置了自动启动的vmware虚拟机无法正常与内网通信,手动登录系统后,一切才变得正常(这个不知为啥);当我们将配置内网的网络网关选择不填,再重启系统,发现不用手动登录系统,一切都能正常工作;这引发了我的思考,这到底是什么原因引起的?

经过一番探索,我发现此问题可能是内网外网网关冲突导致的。

内外网双网卡时,通常不需要在内网网卡上设置默认网关

如果在内网网卡上也设置了默认网关,可能会导致一些网络问题。

1. 网络冲突

最常见的问题是路由冲突。当在两个网络接口上都设置了默认网关时,操作系统可能无法确定应该通过哪个接口发送Internet流量,因为默认网关通常用于处理不属于任何子网的流量,即所有未在本地路由表中找到特定路径的流量。

在这种情况下,可能会发生以下情况:

  • 系统可能随机选择一个默认网关,导致部分或全部流量走错误的路径。
  • 系统可能按照某种未知的规则选择默认网关,导致网络行为难以预测。
  • 在某些情况下,系统可能尝试同时使用两个默认网关,从而导致严重的性能问题。

2. 性能影响

此外,如果在内网网卡上设置了默认网关,可能会导致内部网络通信效率降低。因为即使是局域网内的通信,也需要经过默认网关,这就增加了通信的延迟和负载。

解决方法

当我们在一台拥有多个网络接口(例如双网卡)的机器上配置网络时,通常只在一个接口上设置默认网关。这是因为默认网关是用来路由不属于任何子网的流量的,也就是说,它处理的是目标IP地址不在任何已知局域网内的数据包。

1. 默认网关的作用

默认网关负责处理所有未在本地路由表中找到特定路径的流量。一般来说,这包括所有外出的Internet流量。对于大多数系统,尤其是需要访问Internet的系统,我们通常将默认网关设置在能够访问Internet的接口上。

2. 只设置一个默认网关

如果在多个接口上设置了默认网关,可能会导致系统无法确定应该通过哪个接口发送Internet流量,从而引发冲突。此外,设置多个默认网关也可能导致路由效率降低,因为系统需要检查多个接口以确定最佳路径。

3. 内网通信

对于内网通信,即源和目标IP地址都在同一个局域网内的流量,通常不需要通过默认网关。系统可以通过ARP协议直接获取目标的MAC地址,然后直接将数据包发送给目标。所以,通常我们不在内网网卡上设置默认网关。

4. 结论

在配置双网卡时,通常只在外网网卡上设置默认网关,以处理所有外出的Internet流量。而内网网卡的默认网关保留为空,让其专注于处理局域网内的流量。这样可以有效避免冲突,同时提高路由效率。

参考文章

  1. “Understanding networking basics”
  2. “What is a Default Gateway?” - Webopedia

ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍
ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ

更多推荐

网络初识

一IP地址概念:IP地址主要用于表示网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址格式IP地址是一个32为的二进制数,通常被分割为4个“8位二进制数“(也就是4个字节),通常用”点分十进制“的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)。如:1

mysql 备份和还原 mysqldump

因window系统为例在mysql安装目录中的bin目录下cmd备份备份一个数据库mysqldump-uroot-hhostname-p数据库名>备份的文件名.sql备份部分表mysqldump-uroot-hhostname-p数据库名[表[表2…]]>备份的文件名.sql##多个表空格隔开,中间没有逗号备份单表的部

数据工程中的单元测试完全指南

在数据工程领域中,经常被忽视的一项实践是单元测试。许多人可能认为单元测试仅仅是一种软件开发方法论,但事实远非如此。随着我们努力构建稳健、无错误的数据流水线和SQL数据模型,单元测试在数据工程中的价值变得越来越清晰。本文带你深入探索如何将这些成熟的软件工程实践应用到数据工程中。1单元测试的重要性在数据工程的背景下,采用单

【Android取证篇】华为设备跳出“允许USB调试“界面方法的不同方法

【Android取证篇】华为设备跳出"允许USB调试"界面方法的不同方法华为设备在鸿蒙OS3系统之后,部分设备启用"允许USB调试"方式会有所变化,再次做个记录—【蘇小沐】1.实验环境系统版本Windows11专业工作站版22H2(22621.2134);HarmonyOS3;(一)【Android取证篇】华为设备无法

dockerfile文件详解(常用命令)

在编写Dockerfile时,考虑以下最佳实践:最小化镜像大小:尽量使用轻量级的基础镜像,并在构建过程中尽量减少不必要的层。合理使用缓存:Docker会尝试重用缓存的层,如果一个步骤发生变化,后续步骤将失去缓存。因此,将频繁变化的步骤放在最后,以便充分利用缓存。清理不必要的文件:在构建镜像时,删除不必要的文件和缓存以减

【从0学习Solidity】13. 继承

【从0学习Solidity】13.继承博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本文收录于不写代码没饭吃的学习汇报系列,大家有兴趣的可

Java实现图书管理系统

一、分析有主要对象二、整理思路三、框架的搭建四、操作内部的具体实现一、分析主要对象我们做的图书管理系统的目的,是可以根据不同的用户,所能执行的操作不一样,主要有增删查改图书等操作,选择这些不同的操作会给我们反馈不一样的结果,而我们的主要对象就有书、书架、用户、操作这四个对象。二、整理思路书里面可以放书名、作者、价格等变

VS2019的SDL2项目配置

库下载SimpleDirectMediaLayer-Homepage对于Windows下使用VS2019开发的选手,应该直接选VC后缀了。VS目录配置首先VS2019创建一个空项目,新加入一个源文件,代码如下:/*ThissourcecodecopyrightedbyLazyFoo'Productions2004-20

【C++】topk问题

解决topK问题是寻找给定数据集中前K个最大或最小的元素。常见有三种算法:堆排序维护一个大小为K的最小(或最大)堆。遍历数据集,将元素插入堆中,如果堆大小超过K,则删除堆顶元素。遍历结束后,堆中剩余的K个元素就是前K个最小(或最大)的元素。时间复杂度:O(NlogK),其中N为数据集大小。示例代码如下:#include

Docker 恶意挖矿镜像应急实例

01、概述当网络流量监控发现某台运行多个docker容器的主机主动连接到一个疑似挖矿矿池的地址时,需要快速响应和排查,以阻止进一步的损害。面对docker容器的场景下,如何快速分析和识别恶意挖矿容器?本文将分享一种应急响应思路,用于排查运行多个Docker容器的主机中可能存在的恶意挖矿容器。02、定位容器在宿主机上通过

C 风格文件输入/输出---错误处理---(std::clearerr,std::feof,std::ferror,std::perror)

C++标准库的CI/O子集实现C风格流输入/输出操作。<cstdio>头文件提供通用文件支持并提供有窄和多字节字符输入/输出能力的函数,而<cwchar>头文件提供有宽字符输入/输出能力的函数。错误处理清除错误std::clearerrvoidclearerr(std::FILE*stream);重置给定文件流的错误标

热文推荐