linux 控制网卡流量,如何管理和控制多网卡 Linux 虚拟机的流量走向
如何管理和控制多網卡 Linux 虛擬機的流量走向
02/28/2018
本文內容
現象描述
多網卡虛擬機默認會使用主網卡跟外界進行通信,其他的輔網卡默認是不會被用來跟外界通信,可以使用本文介紹的方法修改虛擬機(CentosMultiNic-VM)的配置文件,從而實現其他的子網的虛擬機(TestVM)可以借助多網卡虛擬機的輔助網卡 eth2 訪問公網,默認是通過主網卡 eth1 訪問公網。
拓撲如下:
前期準備
準備兩臺虛擬機 CentosMultiNic-VM / TestVM ,其中 CentosMultiNic-VM 為多網卡虛擬機。
創建虛擬網絡 172.22.5.0/26,并且劃分子網如下圖所示:
CentosMultiNic-VM 的三個網卡以及分別位于對應的子網:
eth1--subnet1
eth2 --subnet2
eth3 – subnet3
配置部分
配置 UDR 到 subnet3,從而實現子網 subnet3 的下虛擬機 TestVM 可以將流量引向 CentosMultiNic-VM。
通過 Azure 門戶針對網卡開啟 IP 轉發設置,如下圖所示:
eth1
eth2
eth3
在虛擬機 CentosMultiNic-VM 修改配置:
默認虛擬機的路由是通過 eth1 出去訪問公網,如下圖所示:
刪除系統自帶的默認路由,并且添加默認路由指定下一條為 eth2,當刪除系統自帶的默認路由以后,可能會導致系統無法通過 SSH登錄,建議可以在虛擬網絡VNET中新建一臺 jump server 做跳板機進行配置。
通過使用 iptables 的 nat 表做 snat 轉換
開啟 linux 內核的 ip_forwarding 選項:
sed -ri 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sysctl -p
測試
此時在 TestVM 中進行 ping 測試,同時在 CentosMultiNic-VM 上抓包,如下圖所示:
在 CentosMultiNic-VM 抓包發現,ICMP 報文會經過 eth2,如下圖所示:
另外,此時再次從公網訪問虛擬機主網卡的公網 IP 就發現無法 SSH 了,如下圖所示:
這是因為在虛擬機內部修改了系統的默認路由導致的,可以通過配置策略路由來解決該問題:
在系統路由表的配置文件添加自定義路由表:
添加規則:從 172.22.5.68 離開的數據包去查找路由表 table1:
添加策略路由后發現可以正常訪問了,如下圖所示:
綜上所述:可以在 linux 系統內添加多網卡和調整默認路由,使其他的虛擬機可以通過多網卡虛擬機的輔助網卡訪問公網, 來控制虛擬機的流量走向
以及通過使用策略路由,仍然可以實現SSH登錄主網卡。
由于上述配置在虛擬機重啟以后就會消失,如果想要永久生效的話,可以寫入到/etc/rc.local 里。
總結
以上是生活随笔為你收集整理的linux 控制网卡流量,如何管理和控制多网卡 Linux 虚拟机的流量走向的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 查看进程id对应的路径,Li
- 下一篇: linux磁盘同步函数,Linux系统调