专栏首页渣渣辉的专栏腾讯云CVM配置多网卡方法
原创

腾讯云CVM配置多网卡方法

一、相关限制

  1. cvm规格对弹性网卡的限制 根据 CPU 和内存配置不同,云服务器可以绑定的弹性网卡数和单网卡绑定内网 IP 数有相关限制; 具体参考官网说明
  2. cvm规格对弹性ip的限制 根据 CPU 配置的差异,单台云服务器支持绑定的公网 IP 数量上限有相关限制; 具体参考官网说明
  3. vpc下允许配置的网卡上限限制 截止本文生成(2020年4月12日),限制同一个 VPC 下的云服务器最多绑定50个弹性网卡; 具体参考官网说明

二、创建cvm

创建cvm可以参考官网文档,本文主要演示如果在腾讯云cvm上配置一个主网卡与两个辅助网卡。作者已经购买好cvm和弹性公网ip,这里提前给出规划的ip与网卡对应关系:

网卡属性

网卡名

内网ip

外网ip

主网卡

test_cd_tel

172.27.0.11

132.232.61.253

辅助网卡

test_cd_cnc

172.27.1.11

132.232.247.133

辅助网卡

test_cd_cmcc

172.27.2.11

111.231.194.145

三、创建弹性网卡

  1. 打开弹性网卡控制台
  2. 选择要配置的cvm所在的地区和vpc,然后选择新建。
  3. 在弹窗中输入网卡名称,选择cvm所在的私有网络和子网,如下图:
新建弹性网卡

四、绑定弹性网卡

注意:要先将网卡绑定到云服务器,再将公网ip绑定到网卡上,顺序相反会报错。

1.绑定云服务器

回到刚才的弹性网卡页面,在右上角搜索“test_cd”,可以看到作者在此创建了两个辅助弹性网卡和主网卡,点击如下图中的网卡右侧的绑定云服务器,在弹出的页面中绑定cvm。

弹性网卡页面

注意下图中红框标注的配额,确认自己的服务器是否支持绑定

绑定服务器页面

2.绑定公网ip

绑定完云服务器后,到云服务器页面,找到自己的实例,进入实例页面,查看弹性网卡子页,点击绑定,绑定已经购买好的弹性公网ip

cvm弹性网卡页

五、配置弹性网卡

1.查看网卡对应关系

登录服务器,查看网卡mac地址

root@server ~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 52:54:00:17:8e:55 brd ff:ff:ff:ff:ff:ff
    inet 172.27.0.11/20 brd 172.27.15.255 scope global eth0
        valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe17:8e55/64 scope link
        valid_lft forever preferred_lft forever
26: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 20:90:6f:ca:6c:57 brd ff:ff:ff:ff:ff:ff
27: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 20:90:6f:56:21:03 brd ff:ff:ff:ff:ff:ff

确认网卡对应关系

注意eth1、eth2并不是与控制台的网卡顺序对应,这里利用cvm元数据mac地址来确认对应关系,mac地址见上面“ip a”命令获取到的“link/ether”字段

root@server ~# curl http://metadata.tencentyun.com/latest/meta-data/network/interfaces/macs/52:54:00:17:8e:55/local-ipv4s/172.27.0.11/gateway
172.27.0.1
root@server ~# curl http://metadata.tencentyun.com/latest/meta-data/network/interfaces/macs/20:90:6f:ca:6c:57/primary-local-ipv4
172.27.1.11
root@server ~# curl http://metadata.tencentyun.com/latest/meta-data/network/interfaces/macs/20:90:6f:56:21:03/primary-local-ipv4
172.27.2.11

根据获取的地址,知道对应关系是

弹性网卡名

内网ip

linux内网卡名

test_cd_cnc

172.27.1.11

eth1

test_cd_cmcc

172.27.2.11

eth2

2.配置网卡

修改网卡配置文件

  • 以eth0配置文件为模板复制eth1、eth2
root@server ~# cd /etc/sysconfig/network-scripts/
root@server network-scripts# cp ifcfg-eth0 ifcfg-eth1
root@server network-scripts# cp ifcfg-eth0 ifcfg-eth2
  • eth0需要修改内容:
    • 启动方式改为静态
    • 添加ip地址和网关(网关在上面查看元数据处第一条命令已经获取)
  • eth1、eth2需要修改内容:
    • 启动方式改为静态
    • 添加ip地址,修改mac地址,不需要添加网关地址

配置完的格式参考下面

root@server network-scripts# cat ifcfg-eth0
BOOTPROTO=static
DEVICE=eth0
IPADDR=172.27.0.11
HWADDR=52:54:00:17:8e:55
NM_CONTROLLED=no
ONBOOT=yes
PERSISTENT_DHCLIENT=yes
TYPE=Ethernet
USERCTL=no
GATEWAY=172.27.0.1
root@server network-scripts# cat ifcfg-eth1
BOOTPROTO=static
DEVICE=eth1
IPADDR=172.27.1.11
HWADDR=20:90:6f:ca:6c:57
NM_CONTROLLED=no
ONBOOT=yes
PERSISTENT_DHCLIENT=yes
TYPE=Ethernet
USERCTL=no

启动网卡

root@server network-scripts# service network restart
Restarting network (via systemctl):
                                               [  OK  ]

启动完成后,需要在cvm控制台对每个网卡配置安全组,才对对外服务

六、配置策略路由

1.手动配置方法

手动配置方法,参考官网说明第5点

此处最好将相关命令写入到/etc/rc.local,否则重启后需要重新配置

2.自动化脚本

下载自动化脚本

root@server ~# git clone https://github.com/cnsbear/policy_route_cooking.git
root@server ~# cd policy_route_cooking

-c 清除旧的策略路由,然后生成新的策略路由

root@server policy_route_cooking# sh policy_route_cooking.sh -c
root@server policy_route_cooking# sh policy_route_cooking.sh

写入启动文件,重启时自动配置

root@server ~# echo "sh /root/policy\_route\_cooking/policy\_route\_cooking.sh -c" >> /etc/rc.local
root@server ~# echo "sh /root/policy\_route\_cooking/policy\_route\_cooking.sh" >> /etc/rc.local

七、UDP服务对策略路由的特殊处理

1.原理

在cvm中启动一个服务,当将服务在3个ip上都绑定时,tcp服务与udp服务都能正常工作;但是将服务绑定在0.0.0.0(INADDR_ANY),会发现udp服务下,策略路由没有生效。

这是因为对于udp

当0.0.0.0作为接收端,调用bind()函数绑定ip时,接收来自任意ip、任意网卡的发给指定端口的数据;
当0.0.0.0作为发送端,调用bind()函数绑定ip时,使用网卡号最低的网卡(通常是eth0)发送数据;

因此当使用udp服务时,若代码没有做特殊处理,最好将服务监听的每个对外网卡ip上,而不是0.0.0.0

2.测试验证

使用python代码做测试

server端

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:server.py

import socket
import sys

ip = sys.argv[1]
address = (ip, 3000)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#s = socket.socket()
s.bind(address)

while True:
    data, addr = s.recvfrom(2048)
    print "received:", data, "from", addr
    s.sendto('this is a udp server',addr)
s.close()

client端

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:client.py

import socket
import sys

ip = sys.argv[1]
address = (ip, 3000)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
    msg = raw_input()
    if not msg:
        break
    s.sendto(msg, address)
    data, addr = s.recvfrom(2048)
    print "received:", data, "from", addr

s.close()

在server监听在0.0.0.0

root@server ~# python server.py 0.0.0.0

在客户端118.126.91.54上测试

首先测试eth0

python client.py 132.232.61.253
0.0.0.0-test
received: this is a udp server from ('132.232.61.253', 3000)

再测试eth1

root@office:~# python client.py  132.232.247.133
0.0.0.0-test

可以看到,eth1只能发送,不能接收;只有test_cd_tel能正常访问

在server上监听在eth1

root@server ~# python server.py 172.27.1.11

客户端测试访问eth1

root@client:~# python client.py  132.232.247.133
eth1-test
received: this is a udp server from ('132.232.247.133', 3000)

可以看到,监听在eth1,可以正常访问

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【腾讯云的1001种玩法】在腾讯云上创建您的SQL Server 故障转移集群(2)

    在上一篇文章中我们介绍了如何在QCloud标准化的搭建一套域环境,并介绍了如何在生产过程中如何避免一些坑,今天,我们来介绍此次demo中真正需要注意的一些细节及...

    李斯达
  • Windows 技术篇-网卡物理(MAC)地址查看方法

    MAC 地址指的就是网卡的物理地址。 我们的网卡分有线网卡和无限网卡,这两个网卡物理地址不一样,你用哪个卡连接的网络,就看对应的物理地址就好了。 查看方法:...

    小蓝枣
  • 第一章 网络参数配置

    我们知道,一台计算机如果要上网,必定要连接网线或wifi,所以计算机内是有与网线、WiFi对应的连接设备的,这就是网卡。而且除了连接网线或WiFi外,网卡上还需...

    晓天
  • 理解物理网卡、网卡接口、内核、IP等属性的关系

    人对应物理网卡,人的姓名对应网卡接口名称,人的档案信息(保存在公安机构)对应网卡接口的配置信息,公安机构对应内核。

    行云博客
  • 关于无线网络 (一)

    每张网卡都有自己全球唯一的地址(MAC地址,12字节),正常情况下网卡只接收发送给自己的数据包(数据包前12字节就是数据包的目标MAC地址),及广播地址(MAC...

    KurtNiu
  • 腾讯云云主机实现多IP绑定

    腾讯云主机实际上一直允许绑定弹性IP,最开始是可以实现经典IP更换为弹性IP可以有效的屏蔽掉攻击,释放IP进行更换。

    Zach
  • 2019-7-17-如何利用c#找到物理网卡的Mac地址

    我们经常会在代码中查找设备的Mac地址,以确认设备的唯一性。但是如果你的设备安装了一些虚拟机,这个时候就会比较麻烦了

    黄腾霄
  • TCP 应答时间参数对网络性能的影响

    TCP 应答延迟的概念 TCP 应答延迟是 TCP 传输层的一个优化策略,为了降低网络数据包压力,减少小数据包而进行的一个处理,称之为 Nagle 演算法。从本...

    魏新宇
  • 手把手带你搭建钓鱼Wi-Fi热点[1]

    Hello,小伙伴们晚上好。今天我们来搭建一个钓鱼Wi-Fi,这里需要一台双网卡的电脑(其中一个网卡必须是无线网卡)。系统采用的是ubuntu18,安装步骤就省...

    用户7021283
  • 【腾讯云的1001种玩法】运维的网络管理利器:弹性网卡体验

    云计算当前给我们的业务运营提供了极大方便,越来越多的机构或公司利用公有云部署自己的业务应用,国内的阿里云、腾迅云、青云和 Ucloud 等厂商也取得了很大的发展...

    天问

扫码关注云+社区

领取腾讯云代金券