一般的路由設置方式為目的路由,即對目的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的源地址路由設置的三個方法,謝謝閱讀。