如何在腾讯云上为Ubuntu Linux配置双网卡或多网卡

0 前言
此为危险操作,配置不当会无法进入系统,尤其对于远程SSH登陆用户,一定要先做好备份或镜像!每一步操作之前先备份好原文件!
Linux中的双网卡有多种不同的运行模式。此配置设计的场景是多网卡多IP正常对外提供一种或多种服务的服务器。简单说,双网卡并行运行,互不干扰,各自监听自己的服务并与外界交互,从哪个网卡进的流量其反馈也从哪个网卡流出。系统本身发起的外出流量从默认网关流出。

补充知识
无论腾讯云还是华为云,都有两套ip地址机制。实例内用`ip addr`看到的ip叫私有ip或内网ip。光有内网ip是无法直接访问外网的,只能与内网里的其它服务交互。

要想访问外网必须通过web控制面板申请弹性公网ip,或者叫外网ip,因为其拥有与internet交互的能力。

内网ip与外网ip是解耦的,通过nat建立映射关联。

小结一下,云平台给实例分配一个网卡,从实例内看网卡有一个内网ip,从云平台看该网卡有一个外网ip。实例内的流量经由内网ip,nat到外网ip,然后路由到internet。外网ip由云平台级控制,我们只要在实例内配置内网ip。

以下配置借助Netplan,在Ubuntu Bionic以上版本中验证通过。

1 添加网卡
这一步很简单,按照如下步骤即可:
控制台 ➡ 弹性云服务器 ➡ 你的实例 ➡ 网卡标签 ➡ 添加网卡,
安全组按照自己需求设定一个,如果需要把这个网卡添加到一个独立的子网中,可以在虚拟私有云VPC中操作。私有ip建议手工设定。

2 解除云平台的部分网络配置能力,由实例接管
echo 'network: {config: disabled}' > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

3 添加路由表
以sudo权限编辑/etc/iproute2/rt_tables,文件末尾加入两行如下:


#
# reserved values
#
255	local
254	main
253	default
0	unspec
#
# local
#
#1	inr.ruhep
20	t1

其中20表示权重,t1表示路由表。在这里添加路由表是因为接下来的配置要用到策略路由。

4 Ubuntu中网卡配置
以sudo权限在/etc/netplan下新建一个配置文件,比如50-cloud-init.yaml,其中50表示读取该文件的优先级,取决于你的系统中有没有其他配置文件以及你拟定的加载优先级。文件名中间随便,但一定要以yaml结尾,否则netplan无法识别。配置文件如下:


network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            dhcp4: true
            match:
                macaddress: ab:cd:00:ea:ab:ea
            set-name: eth0
            # addresses: [172.16.1.2/24]
            # nameservers:
            #     addresses: [1.1.1.1, 100.125.135.29]
            # gateway4: 172.16.1.1
        eth1:
            dhcp4: no
            match:
                macaddress: 20:90:ab:cc:e5:a1
            set-name: eth1
            addresses: [172.16.10.9/24]
            nameservers:
                addresses: [1.1.1.1, 183.60.83.19]
            routes:
                - to: 0.0.0.0/0
                  via: 172.16.10.1
                  metric: 20
                  table: 20
            routing-policy:
                - from: 172.16.10.9/32
                  table: 20

解读,两张网卡处在同一子网,eth0为默认流出网卡。
配置文件仅供参考,千万不要照抄。macaddress在控制台的网卡标签中可以找到。
有且只有一个网卡能用到gateway4指令,表示外出流量默认流出网卡。
table指令后跟的是权重,不是路由表的名称。

5 保存配置文件后记得sudo权限给出如下命令:
$ sudo netplan apply
当然,你也可以简单粗暴地重启系统.

多子网多网关的配置请参考,如何在华为云上为Ubuntu Linux双网卡配置流量分割

为您推荐