windows 多 IP 时指定流量外访的出口 IP

问题描述:

在window环境下(windows server2008/vista及以上版本)中,绑定了辅助IP后,主动外访时有可能不再走主IP。

导致后果:往往表现为主机绑了辅助IP后主动外访不通,但外网IP被访问时是通的。

因为外网IP经常是绑在主内网IP上,如果当对外发送流量不再选择走主内网IP,而是选择没有绑外网IP的辅助IP的时候,网络当然不通。

这与我们的期望不符,我们往往认为网络流量会默认从主IP出去。

示例案例:

primary IP:10.10.20.163 -> 绑定了外网IP:123.206.21.201

secondary IP:10.10.20.30 (后来绑上去的)

gateway:10.10.20.1

问题原因

微软官方镜像的IP选择策略发生了变化:windows server08/Vista之前的版本,会默认从第一个add到网卡的IP出去。

而windows server2008/Vista 及其之后的版本(包括windows server2008、windows server2012、windows server2016、windows 7等),会遵循以下方式:

  • Rule 1: Prefer same address (applies)
  • Rule 2: Prefer appropriate scope (applies)
  • Rule 3: Avoid deprecated addresses (applies)
  • Rule 4: Prefer home addresses - does not apply to IP v4
  • Rule 5: Prefer outgoing Interfaces (applies)
  • Rule 6: Prefer matching label - does not apply to IP v4
  • Rule 7: Prefer public addresses - does not apply to IP v4
  • Rule 8: Use longest matching prefix with the next hop IP address.

根据规则8,如果主IP与下一跳IP的 matching prefix(前缀匹配) 短于辅助IP与下一跳的 matching prefix ,那辅助IP的优先级会高于主IP,packet 就会由辅助IP发送。

本示例案例中,辅助IP(10.10.20.30)与下一条(即网关10.10.20.1)的 matching prefix 更长,因此流量不再走主IP。

规避方法

使用标志位skipAsSource:用 netsh 命令添加IP时,把skipAsSource标为true。

设置方法

server 2008:

netsh int ipv4 add address < Interface Name > < ip address > < subnet mask > skipassource=true

server 2012:

netsh int ipv4 add address < Interface Name > < ip address > skipassource=true

本示例案例中,对应的命令为:

netsh int ipv4 add address "以太网" 10.10.20.30/24 skipassource=true

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

客户端程序传送图片到服务器

转载:http://www.cnblogs.com/networkcomms/p/4314898.html

1562
来自专栏二进制文集

思维导图学《Mongo 官方文档》

本文是对 Mongo 官方文档粗略的总结,并没有涉及到很深的细节(细节还是直接看官方文档吧)。我认为 Mongo 有重要的就 3 点:

653
来自专栏数据之美

关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享

1、原理简介: Fiddler 是目前最强大最好用的 Web 调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置 CGI 请...

2117
来自专栏天天P图攻城狮

Android减包 - 减少APK大小

本文是对Google官方文档 Reduce APK Size 的翻译 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G、3G网络或者在以字节付费的网...

27010
来自专栏码匠的流水账

JDK 10.0.1发布

2018年4月17日,JDK 10.0.1发布,主要是少部分api更新及bug修复

951
来自专栏腾讯Bugly的专栏

Android 减包 - 减少APK大小

本文来自“天天P图攻城狮”公众号(ttpic_dev) 本文是对Google官方文档 Reduce APK Size 的翻译,查看英文原文(需要翻墙) 译者简介...

3706
来自专栏睿哥杂货铺

玩转编程语言:基于Node.js构建自定义代码生成器

在真实的软件开发过程中,无论使用何种编程开发语言,都不可避免的会遇到代码重复的问题。如何处理重复的问题,可以选择情怀(手动再敲一遍),也可以选择 Copy-to...

2355
来自专栏友弟技术工作室

http digest

HTTP digest 摘要访问认证是一种协议规定的Web服务器用来同网页浏览器进行认证信息协商的方法。它在密码发出前,先对其应用哈希函数,这相对于HTTP基本...

4828
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(2)-easyui构建前端页面框架[附源码]

前言 为了符合后面更新后的重构系统,本文于2016-10-31日修正一些截图,文字 我们有了一系列的解决方案,我们将动手搭建新系统吧。 后台系统没有多大的...

4766
来自专栏程序员与猫

浅谈 EF CORE 迁移和实例化的几种方式

出于学习和测试的简单需要,使用 Console 来作为 EF CORE 的承载程序是最合适不过的。今天笔者就将平时的几种使用方式总结成文,以供参考,同时也是给本...

2005

扫码关注云+社区