Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过脚本配置腾讯云弹性网卡

通过脚本配置腾讯云弹性网卡

原创
作者头像
研究僧
发布于 2023-04-27 11:37:36
发布于 2023-04-27 11:37:36
3.4K00
代码可运行
举报
运行总次数:0
代码可运行

最近遇到一个问题腾讯云服务器在配置弹性网卡时需要手动配置路由,如果路由配置错误远程连接的服务器会立马断开,需要重启后再次连接远程SSH,另外因Linux操作系统发行版本不一样,版本新旧程度不一也会有部分没有配置网卡的情况,当前对新手配置的体验不是很好,经过几番折腾也写了一个脚本来适配各种情况,截止到目前已经适配这几种Linux发行版本CentOS7.5-8.4、 TencentOS、OpencloudOS和Ubuntu等操作系统发行版本。脚本搞定后还可以通过tat-agent来批量下发服务器,并执行操作,让用户特别新手无需登录服务器,输入配置弹性绑卡的关键步骤就可以自动配置好,以下来介绍一下配置过程。

首先说一下腾讯云弹性网卡的应用场景,它主要应用在内外网分离与灾备等场景,应用还是比较广泛,以下为我购买腾讯云云服务器的环境:

  • 腾讯云云服务器
  • Linux CentOS_7.5
  • 申请了一块辅助网卡
  • 主网卡两个内网IP ,辅助网卡三个内网IP

详细见以下截图。

以下为自动配置脚本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
# encoding=utf8
# 2023.4.17
# debug
#set -x

# Set up a default search path.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
export PATH


# get ip
get_ip(){
	IPADDR="127.0.0.1"
	DEFAULT=$1
	if [ x"$DEFAULT" == "x" ];then
		DEFAULT=eth0
	fi

	ifconfig $DEFAULT 2>&1 > /dev/null
	if [ $? -eq 0 ];then
		IPADDR=`ifconfig $DEFAULT 2> /dev/null | grep inet | grep -v inet6 | awk '{print $2}'` 
	fi
	echo $IPADDR
}


# format system_name
get_system_os(){
	SYSTEM_OS="No supported system"

	if [ -e /etc/issue ];then
		cat /etc/issue  | grep -E "Ubuntu (22|20|18|16|14)" 2>&1 > /dev/null 
		if [ $? -eq 0 ];then
			SYSTEM_OS="ubuntu"
			echo $SYSTEM_OS
			exit 0 
		fi
		
	fi


	if [ -e /etc/redhat-release ];then

		cat /etc/redhat-release  | grep -E "CentOS Stream release (9|8)" 2>&1 > /dev/null 
		if [ $? -eq 0 ];then
			SYSTEM_OS="centos_stream_release_9_8"
			echo $SYSTEM_OS
			exit 0 
		fi
		
		cat /etc/redhat-release   | grep -E "CentOS Linux release 8.(0|2|3|4)" 2>&1 > /dev/null
		if [ $? -eq 0 ];then
			SYSTEM_OS="CentOS_Linux_release_8_0_4"
			echo $SYSTEM_OS
			exit 0
		fi
		cat /etc/redhat-release  | grep -E "CentOS Linux release 7.(5|6|7|8|9)" 2>&1 > /dev/null	
		if [ $? -eq 0 ];then
			SYSTEM_OS="CentOS_Linux_release_5_9"
			echo $SYSTEM_OS
			exit 0
		fi

		cat /etc/redhat-release  | grep -E "TencentOS Server release (3.1|2.4|2.6|2.2|1.2)" 2>&1 > /dev/null	
		if [ $? -eq 0 ];then
			SYSTEM_OS="TencentOS_release_3_1_2_2"
			echo $SYSTEM_OS
			exit 0
		fi
		
		cat /etc/redhat-release  | grep "OpenCloudOS release 8.6" 2>&1 > /dev/null	
		if [ $? -eq 0 ];then
			SYSTEM_OS="opencloudos_release"
			echo $SYSTEM_OS
			exit 0
		fi
	fi

	echo $SYSTEM_OS
	exit 1
}


# INPUT
ENI=$1
IPADDRES=$2
STORAGE=$3

if [ -z "$ENI" ] || [ -z "$IPADDRES" ];then
echo "Usages: Ethernet(eth1、eth0) ipddress(ipv4) storage 
pre-work:
chmod +x enc_set.sh
doc:https://cloud.tencent.com/document/product/576/18535
example:
./enc_set.sh eth1 192.168.1.7  # 设置辅助网卡主IP 
./enc_set.sh eth1 192.168.1.8  # 设置辅助网卡辅助IP
./enc_set.sh eth0 192.168.1.10  # 设置主网卡辅助IP
./enc_set.sh eth0 192.168.1.10  true # 写入rc.local 重启服务器时依然配置依然生效

"
	exit 1
fi

# Check Param
ifconfig $ENI 2>&1 > /dev/null 
if [ $? -ne 0 ];then
	echo "Ethernet "$ENI" not exists!"
	exit 1
fi

echo $IPADDRES | egrep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" 2>&1 > /dev/null
if [ $? -ne 0 ];then
	echo "Your ip address format $IPADDRES error"
	exit 1
fi

# Check ENV
system_os=`get_system_os`

if [ "$system_os" == "No supported system" ];then
	echo "No supported system OS"
	exit 1
fi

# Set ETH 
ip address show $ENI | grep $IPADDRES 2>&1 > /dev/null
if [ $? -ne 0 ];then
	ip addr add $IPADDRES dev $ENI 
fi

ip address show $ENI  | grep DOWN 2>&1 > /dev/null			
if [ $? -eq 0 ];then
	ifconfig $ENI up 
fi

# CentOS set route rule
supportsystem_os_array=(centos_stream_release_9_8 CentOS_Linux_release_8_0_4 CentOS_Linux_release_5_9 TencentOS_release_3_1_2_2 opencloudos_release ubuntu)

for (( i = 0 ; i < ${#supportsystem_os_array[@]} ; i++ )) do

	if [ $system_os == ${supportsystem_os_array[$i]} ];then 


		if [ $ENI != "eth0" ];then
			# ======= 设置辅助网卡主IP路由 ========

			# 判断是否为主IP 
			if [ $IPADDRES == `get_ip "$ENI"` ];then
				# 设置默认路由
				ip route add default dev eth1 via $IPADDRES table 20 2> /dev/null
				# 设置回报
				ip rule add from $IPADDRES table 20 2> /dev/null
				
				echo "runCommand:ip route add default dev eth1 via $IPADDRES table 20"
				echo "runCommand:ip rule add from $IPADDRES table 20"
				
				if [ x"$STORAGE" != "x" ];then
					[ -e /etc/rc.local ] && echo "/sbin/ip route add default dev eth1 via $IPADDRES table 20 2>&1 > /dev/null" >> /etc/rc.local 
					[ -e /etc/rc.local ] && echo "/sbin/ip rule add from $IPADDRES table 20 2>&1 > /dev/null" >> /etc/rc.local
				fi

			else
			# ======= 设置辅助网卡辅助IP路由 ========
				ip rule add from $IPADDRES table 20  

				echo "runCommand:ip rule add from $IPADDRES table 20"

				if [ x"$STORAGE" != "x" ];then
					[ -e /etc/rc.local ] && echo "/sbin/ip rule add from $IPADDRES table 20 2>&1 > /dev/null" >> /etc/rc.local
				fi 
			fi

		else
			# ======= 设置主网卡辅助IP路由 ========
			ip rule add from $IPADDRES table 10 
			ip route add default dev eth0 via $IPADDRES table 10 2> /dev/null

			echo "runCommand:ip rule add from $IPADDRES table 10"			
			echo "runCommand:ip route add default dev eth0 via $IPADDRES table 10"			

			if [ x"$STORAGE" != "x" ];then
				[ -e /etc/rc.local ] && echo "/sbin/ip rule add from $IPADDRES table 10 2>&1 > /dev/null" >> /etc/rc.local
				[ -e /etc/rc.local ] && echo "/sbin/ip route add default dev eth0 via $IPADDRES table 10 2>&1 > /dev/null" >> /etc/rc.local
			fi
		fi
	fi
done 

echo "Success..."
exit 0

脚本使用方法,两种:

方式一,登陆服务器,并将脚本复制到远程服务器,执行以下命令。

12345

# chmod +x enc_set.sh# ./enc_set.sh eth1 10.0.1.118 # 首先配置辅助网卡(eth1)的主IP # ./enc_set.sh eth1 10.0.1.20 # 再次配置辅助网卡内网IP # ./enc_set.sh eth1 10.0.1.59 # 再次配置辅助网卡内网IP# ./enc_set.sh eth0 10.0.1.103 # 最后配置主网卡内网IP

方式二,通过tat-agent,如以下截图,用户可以直接通过web端执行命令,并下发到服务器。

最后,配置弹性网卡时如果购买了公网弹性EIP,同时推荐公网弹性EIP绑定到辅助网卡的主内网IP(网卡:eth1 ,IP:10.0.1.118) ,这时需要通过加内网10.0.1.118的路由,才能让公网弹性EIP正常访问,也就是以上介绍的内容。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux 系统日常巡检脚本
Linux 系统日常巡检脚本,巡检内容包含了,磁盘,内存 cpu 进程 文件更改 用户登录等一系列的操作 直接用就行了。
星哥玩云
2022/07/16
3K0
linux双网卡双ip配置
重启服务器或者重新启动脚本  sh /etc/rc.local  ,如何配置错误会有报错,按照报错即可
用户1685462
2021/07/27
12K0
CentOS下双网卡单网关路由配置
假定主机的网卡1的IP地址为:219.223.244.233/21,网卡2的IP地址为:219.223.242.216/21单网为:219.223.240.1(这里21表示网络地址)
星哥玩云
2022/06/13
2.2K0
Ubuntu 18.04 使用弹性网卡配置多个外网IP
购买服务器后默认只有一个公网IP,经常会遇到单个外网IP无法满足业务需求,此文将介绍,一台服务器如何通过单网卡、多网卡配置多个IP。
隔壁没老王
2019/08/08
12.5K1
Ubuntu 18.04 使用弹性网卡配置多个外网IP
Linux系统双网卡绑定配置教程
Linux系统双网卡绑定配置教程 环境说明 系统版本 [root@ ~]# cat /etc/redhat-release CentOS release 6.8 (Final) [root@ ~]# uname -r 2.6.32-642.6.1.el6.x86_64 网卡说明 eth0 192.168.1.8(服务器外网卡) eth1 eth2 两块服务器网卡(内网) 关闭相关服务 关闭防火墙 [root@ ~]# /etc/init.d/iptables stop [root@ ~]# c
民工哥
2020/09/16
6.3K0
【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南
阿志小管家
2024/02/29
3330
【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南
LINUX主机的策略路由配置,多网卡一样可以指哪走哪
因《网工必备技能!Windows网卡1访问外网,网卡2访问内网!》受到粉丝的关注,就有粉丝提出,想给一台拥有多个网卡的linux主机,想配置不同的网卡走不通的路由,怎么操作呢?阿祥今天就介绍这种需求的配置方法,希望对粉丝有帮助!
ICT系统集成阿祥
2024/12/03
8270
LINUX主机的策略路由配置,多网卡一样可以指哪走哪
Linux系统批量化安装部署之Cobbler
说明: Cobbler服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统: eth0(第一块网卡,用于外网)IP地址段:192.168.21.160-192.168.21.200 eth1(第二块网卡,用于内网)IP地址段:10.0.0.160-10.0.0.200 子网掩码:255.255.255.0 网关:192.168.21.2 DNS:8.8.8.8  8.8.4.4 所有服务器均支持PXE网络启动 实现目的:通过配置Cobbler服务器
洗尽了浮华
2018/01/22
1.8K0
Linux系统批量化安装部署之Cobbler
Linux下的双网卡绑定bond0 em1 em2
大家好,又见面了,我是你们的朋友全栈君。一、什么是bonding Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余 二、bonding应用方向 1、网络负载均衡 对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多 个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是 bonding 2、网络冗余 对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把多块网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡自动启用,并提供正常的服务,即:默认情况下只有一块网卡工作,其它网卡做备份 三、bonding实验环境及配置 1、实验环境 系统为:CentOS,使用2块网卡(em1、em2 ==> bond0)来实现bonding技术 2、bonding配置 第一步:先查看一下内核是否已经支持bonding 1)如果内核已经把bonding编译进内核,那么要做的就是加载该模块到当前内核;其次查看ifenslave该工具是否也已经编译 modprobe -l bond* 或者 modinfo bonding modprobe bonding lsmod | grep ‘bonding’ echo ‘modprobe bonding &> /dev/null’ >> /etc/rc.local(开机自动加载bonding模块到内核) which ifenslave 注意:默认内核安装完后就已经支持bonding模块了,无需要自己手动编译 2)如果bonding还没有编译进内核,那么要做的就是编译该模块到内核 (1)编译bonding tar -jxvf kernel-XXX.tar.gz cd kernel-XXX make menuconfig 选择 ” Network device support ” -> ” Bonding driver support “ make bzImage make modules && make modules_install make install (2)编译ifenslave工具 gcc -Wall -O -I kernel-XXX/include ifenslave.c -o ifenslave 第二步:主要有两种可选择(第1种:实现网络负载均衡,第2种:实现网络冗余) 例1:实现网络冗余(即:mod=1方式,使用em1与em2) (1)编辑虚拟网络接口配置文件(bond0),并指定网卡IP vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.254 BROADCAST=192.168.0.255 NETMASK=255.255.255.0 NETWORK=192.168.0.0 GATEWAY=192.168.0.1 USERCTL=no TYPE=Ethernet 注意:建议不要指定MAC地址 vi /etc/sysconfig/network-scripts/ifcfg-em1 DEVICE=em1 BOOTPROTO=none ONBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes 注意:建议不要指定MAC地址 vi /etc/sysconfig/network-scripts/ifcfg-em2 DEVICE=em2 BOOTPROTO=none ONBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes 注意:建议不要指定MAC地址 (2)编辑模块载入配置文
全栈程序员站长
2022/07/23
2.6K0
Linux下针对服务器网卡流量和磁盘的监控脚本
1)实时监控网卡流量的通用脚本: [root@ceph-node1 ~]# cat /root/net_monit.sh #!/bin/bash PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export PATH function traffic_monitor { OS_NAME=$(sed -n '1p' /etc/issue) eth=$1 if [ ! -d /sys/class/net/$
洗尽了浮华
2018/07/04
1.9K0
ubuntu 16.04 配置双网卡双IP
2、登录到服务器上进行网卡配置:vim /etc/network/interfaces.d/50-cloud-init.cfg
夏日萤火
2019/07/25
6.6K0
tlinux3.1(TencentOS Server 3.1 (TK4))配置弹性辅助网卡
1. 以管理员身份 登录云服务器,执行以下命令,查看需配置的网卡信息,如图所示,需配置的网卡名称为 eth1:
Sync
2024/11/24
4620
Linux系统怎么设置双网卡?教程如下
Linux系统配置双网卡网络接口eth0和eth1,并在服务器上配置NAT(网络地址转换),在公网ip和内部网私有ip地址间配置静态NAT重定向数据包,使服务器成为透明网关从而使得内部网计算机可以无障碍访问外部互联网。   关键词:Redhat Linux;DNS(域名解析服务器);NAT(网络地址转换);iptables规则   步骤:   Step1配置两块网卡的接口地址   设置第一块网卡eth0的IP地址和子网掩码:
会长君
2023/04/26
10.5K0
腾讯云弹性网卡产品使用介绍
最近有个网友在问腾讯云主机的公网IP总在变为什么不能固定下来。 经过了解此用户是购买腾讯云主机用于测试和临时搭建网站,所以计费方式是“按量计费”和“竞价实例” 当云主机重启时就会出现网友反馈的问题公网IP会变化,那是否有方法让公网IP不变? 这里推荐两种方式:
研究僧
2020/05/30
8K0
为了能工作到65岁不被淘汰,努力学会了公有LINUX云主机的策略路由配置!
近期有粉丝留言说:买了公有云linux云主机,想配置双网卡通公网玩玩,但不知道怎么配置,那么这期我们就介绍这个场景的操作配置,希望对更多的人有帮助!
ICT系统集成阿祥
2024/12/03
1650
为了能工作到65岁不被淘汰,努力学会了公有LINUX云主机的策略路由配置!
策略路由 – 让你的CVM服务器用两条腿走路
对于PC来说,一台电脑一般最多就两张网卡(有线+无线)。只要能上网,哪管是走的哪张网卡。然鹅,对于服务器来说,N多张网卡(N > 2)是正常不过的事情,如何在多网卡多网关下正常、合理地工作,这就就需要各种交换机以及本文的策略路由来配合了。
缘、妙不可言
2019/09/09
1.3K0
策略路由 – 让你的CVM服务器用两条腿走路
Linux服务器多公网IP多出口配置
1. 本次实验以centos 7.6为例,是通过将ip rule和iptables结合实现,所以适用于大部分Linux系统,实验过程中共使用两块网卡完成。
Sync
2024/06/11
1.1K0
Linux下路由配置梳理
在日常运维作业中,经常会碰到路由表的操作。下面就linux运维中的路由操作做一梳理: ------------------------------------------------------------------------------ 先说一些关于路由的基础知识: 1)路由概念 路由:   跨越从源主机到目标主机的一个互联网络来转发数据包的过程 路由器:能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备 路由表:在路由器中维护的路由条目,路由器根据路由表做路径选择 直连路由:当在路由器
洗尽了浮华
2018/01/23
7.5K0
Linux下路由配置梳理
ubuntu16 及以上系统的双网卡双IP配置
2.以管理员身份登录云服务器,执行如下命令,查看需配置(未显示 IP)的网卡信息,如图所示,需配置的网卡名称为eth1:
用户8486308
2021/04/27
3K0
ubuntu16 及以上系统的双网卡双IP配置
linux网卡配置
/etc/sysconfig/network-scripts/ifcfg-ens33
阿七日记
2022/01/17
23K0
相关推荐
Linux 系统日常巡检脚本
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验