首页 电脑网络 电脑知识 正文

配置路由时指定源地址

配置路由时指定源地址 如果你的一块网卡上配置了多个IP地址,那么在数据包发出时会使用哪一个呢?在Linux上,使用iproute2工具可以设置src参数强制封装源地址:ip route add 1.2.3.4/32 via 4.3.2.1 src 3.3.3.3但是在Wind
配置路由时指定源地址   如果你的一块网卡上配置了多个IP地址,那么在数据包发出时会使用哪一个呢?在Linux上,使用iproute2工具可以设置src参数强制封装源地址: ip route add 1.2.3.4/32 via 4.3.2.1 src 3.3.3.3 但是在Windows上,一切都是内部逻辑自动选择的,其原则如下: 单网卡时,选择和默认网关在同一网段的最匹配IP地址为源; 多网卡时,首先选择默认网关所在的网卡作为发送网卡,然而在该网卡上按照单网卡原则选择一个IP地址作为源。 因此,如果你的目标地址是1.2.3.4,默认网关是4.3.2.1,本地连接上两个IP地址:4.3.2.2和3.3.3.3,很显然,4.3.2.2会作为源IP地址被选择,这样在发包的时候,4.3.2.2将作为数据包的源IP地址。           然而有时候为了实现自己的一些策略或者小技巧,并不希望系统为我如此自动地封装源IP地址,比如显而易见地是在使用OpenVPN的时候。         首先我们看下所谓的默认网关的本质意义是什么。默认网关其实是一个更加特殊的“下一跳”,它其实就是一个下一跳地址,这个地址的目的在于将数据包扔给下一跳(废话),其实它只是一个辅助作用,真正起作用的是由它解析到的MAC地址,因为MAC地址才会真正封装在以太帧当中,那个默认网关只是用来得到这个MAC地址的,因此如果能静态指定一个MAC地址,那么这个默认网关可以是任意的。于是就有了一个办法: 1.为一条路由生成一个和欲选择的源IP地址在同一个网段的假的默认网关,即假的下一跳; 2.为该假网关IP地址建立一条静态的到真网关的MAC地址的arp映射; 如此一来,源IP地址的选择过程将完全符合Windows的选择逻辑,我们也就从内核外部绕开了它的限制,从而可以选择任意的本地连接上配置的地址作为源IP地址。         为了将手工配置的过程实现成一个自动的过程,编程是必不可少的,然而我又不想去调用那复杂的API(为了实现一个很简单的功能不得不做超级多的准备工作...),只能寄希望于脚本了,然而Windows命令行功能实在太弱,很为难。问同事,百度,google,一遍遍地尝试,折腾了太久,终于写出一个批处理脚本,发现Windows XP的脚本功能还是很强大的,更不必说Power Shell了。脚本如下(没有echo off): [plain]  set destination=%1   set mask=%2   set origw=%3   set source=%4      ::获取默认网关(可以自动发现默认网关,太花哨,不提倡)   :::GetGW   ::set origw=   ::for /f "delims=: tokens=2" %%i in ('"ipconfig | find /i "default gateway"| findstr  [0-9]."') do set origw=%%i      ::获取默认网关的MAC地址   :GetMac   set mac=   for /f "skip=3 tokens=2" %%i in ('arp -a %origw%') do set mac=%%i   echo %mac%|findstr /-   ::这里有个问题,实际上ping失败(比如网关禁止ping)也无所谓,我们需要的只是它的MAC地址   ::如果连MAC地址都不让解析,那就别当默认网关了。因此正确的做法应该搞一个计数器,连续   ::两次获取MAC失败就算失败。   if ERRORLEVEL 1 (       ping %origw% -n 1       if ERRORLEVEL 1 goto end       goto GetMac   )      set gw=   set i=      ::生成假网关地址(很简单的一个算法,欲使用的源IP地址减去1)   for /f "delims=. tokens=4" %%i in ('echo %source%') do set /a host=%%i-1      set i=   set j=   set k=      for /f "delims=. tokens=1,2,3" %%i in ('echo %source%') do set gw=%%i.%%j.%%k.%host%      ::设置假网关的arp映射   arp -s %gw% %mac%      ::添加路由   route add %destination% mask %mask% %gw%      :end   将上述脚本保存为"route2.bat"就可以直接用了。         其实,选择和默认网关不属于同一网段的IP作为源IP地址对于主机而言并非一个常规的做法,如果如此一来,在数据包返回的时候,当初选择的源IP地址作为目标地址,本网段的默认网关在路由的时候会出现问题,除非它将下一跳指向该IP地址所在的主机的相同网段的地址,否则数据包可能会因为目标地址不可达而被丢弃。         另外,上述的脚本在静态建立arp映射的时候有一个问题,那就是没有和Windows的“死网关检测”功能关联,这样就可以在网关失效后被Notofy了,或者说网关并没有失效,只是换了台机器,换了MAC,此时就需要更新那个MAC映射了。  
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)

本文转载自互联网,如有侵权,联系删除

本文地址:https://www.peigen.net/post/10891.html

相关推荐

板栗怎么私信主播?

板栗直播可以看直播,想必有一些用户已经知道,如果遇见自己喜欢的主播,我们该怎么私信主播呢?为此,小编特意查询资料,把板栗如何私信主播的方法分享给大家。 1)打开板栗,点击打开要私信的直播,接着点击左上...

电脑知识 2024-11-30 0 137

e兼职APP怎么进行身份认证?

e兼职app下载最靠谱的大学生兼职,帮助大学生提升技能,借用靠谱企业的力量培育大学生的社会经验与专业技能,最快5秒内找到心仪的兼职,大众点评最好的兼职软件。不过这么好用的软件,在使用前需要进行身份验证...

电脑知识 2024-11-30 0 141

口碑农场邀请码怎么获取

口碑农场是口碑app中新增加的一个玩法。口碑农场邀请码怎么获取?想要获得口碑农场的邀请码,具体该怎么操作?下面就是口碑农场邀请码获取教程,一起来看一下。...

电脑知识 2024-11-30 0 132

伙星app怎么更换主页封面?

伙星是一款关于相机相关的应用,能够让用户来制作各种好玩的、搞笑的照片,并且还有着许许多多的特效,能够让你看到很多很好玩的内容,除了这些,用户可以在里面进行拍照和漂流瓶交友等,那么在伙星app中要怎么更...

电脑知识 2024-11-30 0 118

会声会影怎么添加背景音乐?

会声会影2018是一款强大的照片|图片|视频制作、剪辑软件,具有多种的视频编辑功能和制作动画效果。但是如果想要让自己制作的视频有意思,背景音乐一定少不了,下面,小编就为大家介绍下会声会影添加背景音乐方...

电脑知识 2024-11-30 0 135

如何制作高质量的PPT?

如何制作高质量的PPT?不管是对于一个学生、老师还是上班族Word、PPT、表格这三个办公软件都是必修的技能了。我们如何将这些做得优秀?如何脱衣而出?所以呀今天我们就先来讨论一下如何制作PPT。如果...

电脑知识 2024-11-30 0 121

感谢您的支持