當前位置:
首頁 > 最新 > linux多網卡策略路由

linux多網卡策略路由

雖然我們無法改變人生,但可以改變人生觀。雖然我們無法改變環境,但我們可以改變心境。

現在很多伺服器由於業務需求,需要實現多網卡,多IP,多路由,我們知道,一般我們在系統上,只能添加一條默認路由,其他路由我們都是通過目標網段或IP來添加靜態路由實現,那麼如何實現多網卡,多IP對應多路由,實現入口IP和出口IP一致,下面了解一下。

在linux中,有一種靈活的路由策略實現方法,就是利用rt_tables。

在以往的路由管理中,我們都是通過route命令,臨時添加靜態路由,將要實現的路由,通過靜態路由的方式,添加實現,或者直接將路由表寫入network文件,以實現永久生效,簡單的路由,用這種方式實現,還能夠輕鬆應對,當網路環境複雜的時候,這種方式讓運維人員力不從心。

而rt_tables通過對路由表的命名區分,及路由規則綁定,輕鬆應對多網卡,多路由的複雜環境,

rt_tables配置文件在/etc/iproute2/rt_tables,如下:

rt_tables中,每行一條路由表及對應的優先順序(前面的數字代表優先順序,數字越小優先順序越高),使用路由表時,可以用優先順序的值,也可以用路由表的名稱,最多可以有255個路由表,默認有3張內置路由表,分別是

local(本地路由表)

本地介面地址,廣播地址,NAT地址都在這張表裡,該表由系統自動維護

main(主路由表)

通常沒有綁定路由表的路由,都在這個表中,route管理的路由一般也是添加在這張表中

default(默認路由表)

放置網關路由和默認路由

開始配置雙網卡路由,首先確認確認網卡配置中先不配置網關,否則在後面的規則配置中無法添加對應網卡路由

在rt_tables中添加兩張路由表

[root@localhost ~]# echo "2 ens37" >> /etc/iproute2/rt_tables

添加規則到路由表

[root@localhost ~]# ip rule add from 192.168.2.21 table eno16777736

在eno16777736路由表中添加一條路由規則,並綁定192.168.2.21的數據包使用該路由表。

[root@localhost ~]# ip route add default via 192.168.1.1 dev ens37 src 192.168.1.21 table ens37

[root@localhost ~]# ip rule add from 192.168.1.21 table ens37

添加好之後可以通過ip route show tables [路由表]查看路由規則

然後通過ip rule查看規則綁定

上面的配置是所有的數據包按照配置的規則執行路由,那麼下面介紹通過iptables以用戶區分執行路由。

這裡就用到了iptables的Owner Match,Owner match支持–uid-owner、–gid-owner匹配

首先我們通過useradd新建用戶,在/etc/passwd中查看用戶uid,然後通過iptables命令添加uid匹配的nat規則

iptables -t nat -A POSTROUTING -m owner --uid-owner 496 -j SNAT --to-source 192.168.2.21

之後,我們通過uid496的用戶啟動的對外的連接,都會匹配該規則,我們可以用shadowsocks代理測試。

往期經常


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 運維實談 的精彩文章:

TAG:運維實談 |