您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

服务器多网卡多路由策略

时间:2020-04-29 13:57:32  来源:  作者:

场景背景与需求

公司新买一台服务器, 服务器资源(cpu,内存,硬盘)比较多,并且有多个网卡。

运维工程师为了节省资源,在服务器上搭建多个服务,希望通过多个网卡实现流量分流。

但由于运维工程师对网络理解不够深入,将服务器的多个网卡都配置了同一个网段。

最后的结果是并不能正常的访问这多个服务。

服务器多网卡多路由策略

 

场景分析

  • 网卡设置了IP地址后,会产生一个与IP地址同网段的路由条目, 并与当前网卡名对应。
  • 如果多个网卡设置同网段IP地址后,会产生多个同网段的路由条目,并与不同网卡名对应。

假设两个网卡eth0,eth1分别配置10.1.1.5/24与10.1.1.6/24. 则会产生以下路由

10.1.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.1.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1

如果不同客户端通过这两个IP进来访问不同的服务。进来会从不同网卡进,但回去时就会都从eth0回去(因为路由会从上往下读取,所以默认只会读上面一条)

测试实验:

1, 准备一个虚拟机模拟服务器,开两个网卡,都为同一个网络, 配置两个同网段IP。

server# ip addr |grep eth -A 1
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:41:e4:22 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.5/24 brd 10.1.1.255 scope global br0
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:39:c0:e6 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.6/24 brd 10.1.1.255 scope global eth1

2, 用另一台机器模拟客户端,使用ping来访问以上2个IP。

client# ip neigh |grep -E "^10.1.1.5 |^10.1.1.6 "
10.1.1.5 dev eth0 lladdr 52:54:00:41:e4:22 REACHABLE
10.1.1.6 dev eth0 lladdr 52:54:00:41:e4:22 REACHABLE

说明:

  • 按照arp协议原理, 访问哪个IP它才会回应mac地址。
  • 而现在的结果是mac地址都为10.1.1.5对应的mac地址。
  • 这是因为linux系统内核参数默认做了设置, 访问同一机器的网卡IP,如果这个网卡挂了,另外一个同网段的网卡会帮助回应。可以比喻成(张三,李四两个网卡同一台机器,就是一家人,找张三,张三回,找李四,也张三回)
服务器多网卡多路由策略

 

3,在服务器上修改内核参数

server# vim /etc/sysctl.conf                # 添加以下参数
net.ipv4.conf.eth0.arp_ignore = 1       
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth1.arp_ignore = 1       
net.ipv4.conf.eth1.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

server# sysctl -p                           # 用此命令让其生效

说明: 这几个参数的目的就是把上面的一家人(张三又回应张三也回应李四)的情况变成了原本的arp情况(张三只能回张三,李四只能回李四)

4, 再次客户端测试

client# arp -d 10.1.1.5
client# arp -d 10.1.1.6

说明: arp -d可清除arp协议访问的mac地址缓存。建议清除再测试

最终结果:

客户端只能ping通10.1.1.5了, ping不通10.1.1.6了(这就对了,因为一台机器双网卡同网段会路由冲突

这个实验就验证了场景中的情况:

  • 服务器多网卡同网段,客户端从不同网卡IP访问进来,却都从第1个网卡回应
  • 如果修改内核参数,则客户端只能访问第一张网卡的服务

场景解决方案

如果以上场景已经发生,如何解决?

  • 将多网卡改成不同网段IP(这样做可能项目要修改的工作量很大,很多配置要重配)
  • 通过策略路由来解决(不需要修改IP,只需要添加路由表将多个网卡流量分开)

策略路由的做法也非常简单,在服务器上做以下操作

server# echo 100 server1 >> /etc/iproute2/rt_tables 
server# echo 200 server2 >> /etc/iproute2/rt_tables 

server# ip rule add from 10.1.1.5 table server1
server# ip rule add from 10.1.1.6 table server2

server# ip route add default via 10.1.1.5 table server1
server# ip route add default via 10.1.1.6 table server2

说明:

  • 增加了server1与server2两个路由表
  • 两个路由表里的规则为访问10.1.1.5将由10.1.1.5回应,访问10.1.1.6将由10.1.1.6回应
服务器多网卡多路由策略

 

场景总结与经验值

此解决方案主要是用到了linux上的多路由表功能。

工作中物理服务器与虚拟机有多网卡时都不要犯这种多网卡同网段的错误。

如果真的需要用到多服务隔离的话,可考虑虚拟化或容器化环境。

 

喜欢别忘了关注一下,更多学习文章日常更新。



Tags:服务器 多网卡   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
场景背景与需求某公司新买一台服务器, 服务器资源(cpu,内存,硬盘)比较多,并且有多个网卡。运维工程师为了节省资源,在服务器上搭建多个服务,希望通过多个网卡实现流量分流。但...【详细内容】
2020-04-29  Tags: 服务器 多网卡  点击:(78)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(9)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条