一般的路由设置方式为目的路由,即对目的IP做匹配,若满足一定的规则,则把数据从某个网口发出去(同时也决定了目的MAC地址)。 源地址路由,顾名思义,对源地址IP做匹配,若满足一定的规则,则把数据从某个网口发出去。
在linux上,可以做ip route2工具做源地址路由设置,而windows上是没有类似的工具包的。有一些情况下,目的路由满足不了我们的要求,而需要做源地址路由。
如我们的服务器有多个网关的情况(甚至同一个网卡下有多个网段地址,对应了多个网关),而目的端的IP地址无法确定(比如设备上传的IP不确定),做不了目的路由,数据就会从默认的路由出去,这样就会导致数据从网关2进来,回复的数据从网关1出去,这样数据肯定会有问题的。
解决此问题有多个方案:
1,在路由器上做源地址转换,把外部IP转换成内部IP
1)目前在华为路由器上支持此功能,而在思科路由器上面没有找到
2)此方案的效率不是最优的,可能由路由器带来比较重的负担
3)内部的服务看不到真实的外部IP
2,在服务器上新建虚拟机,化解多个网关的问题
1)虚拟机比较费资源,效率不是最优的
2)虚拟机的稳定性比较差
3,在服务器上做源地址路由
1)目前在linux上有现成的工具,而windows上没有
2)windows上需要写ndis驱动,需要开发
3)此方案在效率上是最优的,对应用也是不可见的。
这里采用了第3种:方案:在服务器上做源地址路由,在这里把源码给大家分享出来。
代码中的配置还不是很灵活,但已经在实际环境中使用过了(windows2003sp1,windows2008r2)。
以上就是基于windows的源地址路由设置的三个方法,谢谢阅读。