如何管理和控制多网卡 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 虚拟机的流量走向相关推荐

  1. 问题描述:分布式防火墙能管控东西向的流量,是否对进入虚拟机的所有流量都能够管控,例如外部访问虚拟机的流量。因为我现在的防火墙默认策略是允许,我像知道如果我默认策略改成阻止,外部流量会不会阻止

    问题描述:分布式防火墙能管控东西向的流量,是否对进入虚拟机的所有流量都能够管控,例如外部访问虚拟机的流量.因为我现在的防火墙默认策略是允许,我像知道如果我默认策略改成阻止, 外部流量会不会阻止 技术回 ...

  2. linux的安装组和管理组的区别吗,Linux用户和组管理

    Linux用户和组管理 安装上下文: 进程以其发起者的身份运行: 进程对文件的访问权限,取决于发起此进程的用户的权限: 系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建 ...

  3. 关于Linux服务器的带外管理,你知道吗?

    日常运维中,我们可能接收别人移交的设备,但由于很多原因,之前的人都未记录相关服务器序列号,未设置的带外地址及带外管理的用户密码等情况,服务器又不能停机维护,有没有办法不重启的情况下,获取到相关信息呢? ...

  4. Linux系统中磁盘创建管理(一)

    Linux系统中磁盘创建管理(一) 在linux系统中安装lvm必要的服务 install lvm-common lvm2 evms Linux系统中有一张分区表,系统在开机之后根据这个表里面的记录来 ...

  5. 用户管理 之 Linux 系统中的超级权限的控制

    作者:北南南北 赞助: eTony,pandonny,懒猫, Arch 来自:LinuxSir.Org 摘要: 超级用户是系统最高权限的拥有者,是系统管理唯一的胜任者:由于权限的超级并且达到无所不能的 ...

  6. Linux系统下的系统资源和网络资源控制

    title: Linux系统下的系统资源和网络资源控制 categories:- 学习 tags:- Linux- 系统管理- 网络管理 今日珠宝 宝格丽BVLGARI系列戒指 18K玫瑰金材质镶嵌7 ...

  7. Linux 常用C函数说明-文件权限控制篇

    chdir(改变当前的工作(目录) 相关函数  getcwd,chroot 表头文件  #include<unistd.h> 定义函数  int chdir(const char * pa ...

  8. Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)

    Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来,Linux ...

  9. 交互系统的构建之(二)Linux下鼠标和键盘的模拟控制

    交互系统的构建之(二)Linux下鼠标和键盘的模拟控制 zouxy09@qq.com http://blog.csdn.net/zouxy09 交互系统的构建之(一)http://blog.csdn. ...

最新文章

  1. android如何暂停倒计时,在Android中暂停和恢复倒计时器和进度条?
  2. Android之记录并研究Volley框架中知识点
  3. matlab人脸追踪,求大神帮助我这个菜鸟解决一下人脸跟踪这个程序的一些问题啊!!...
  4. vm虚拟机下linux安装python_机器人编程01——虚拟机VM安装Ubuntu并配置python开发环境...
  5. 00-深入学习cache
  6. 合肥学院计算机对口升学2019,15高校招生4340人!2019安徽省对口升学本科招生计划出炉!...
  7. logistic模型原理与推导过程分析(1)
  8. Linux Shell脚本入门教程系列之(八)Shell printf命令详解
  9. java继承实现不用每个类都写toString方法
  10. python generator object_python - 将生成器对象转换为列表以进行调试
  11. 三星s7edge计算机软件,三星s7edge 官方6.0固件
  12. JavaScript笔记-前端AES加密
  13. win7计算机管理快捷键,win7系统快捷键有哪些|win7常用的15个快捷键
  14. 关于网狐游戏vs2003移植到vs2013
  15. CoolShell-第4题
  16. JavaScript之购物车
  17. android字符串加删除线,android textview 添加上划线 中划线 删除线
  18. LeetCode 904. 水果成篮【fruit-into-baskets】
  19. mysql国内研究现状_Php+Mysql技术的研究现状和发展趋势
  20. sql 对查询出的 结果集 添加 自增序号列/排序列

热门文章

  1. Banana PI 香蕉派项目
  2. Sicily 1694. Spiral
  3. Agile PLM 9.3.1 安装 checklist
  4. (转)CXF学习笔记一:如何创建、发布和访问基于CXF的服务
  5. 软件测试BUG参考标准
  6. Linux安装minikube命令整理
  7. Java synchronized的CPU层面实现细节
  8. Logstash安装与测试
  9. Python3位运算符
  10. Centos7安装netstat及简单使用