阿里云 Ubuntu20.04 配置单机多公网IP访问外部服务

简介: 在同一台阿里云 ECS Ubuntu 20.04服务器上配置多网卡并绑定多个公网ip,实现利用多个ip访问公网服务。

背景

需求是在同一台阿里云 ECS Ubuntu 20.04服务器上配置多网卡并绑定多个公网ip,实现利用多个ip访问公网服务。


实现方式: 申请多个阿里云弹性公网IP及多个弹性网卡,并将其绑定到ECS实例上。


流程

1. 购买弹性公网ip及弹性网卡,并绑定至ECS实例

具体流程可以参考官方文档。

配置完成后效果如下,申请了4个公网IP,并分别绑定至一个弹性网卡,四个弹性网卡在同一私网网段内。

1.png

如图,配置了四块网卡,私网ip分别为172.16.0.1, 172.16.0.2, 172.16.0.3, 172.16.0.4。

2. 配置路由策略

官方文档中提供的教程基于Netplan进行网卡配置,Netplan 是用于在使用 YAML 文件的 Linux 上配置网络接口的实用程序,从 Ubuntu 18.04 LTS 开始,Ubuntu 默认使用 Netplan 来配置网络接口。

在配置完成后,可能由于路由问题,导致无法连接公网,所以需要配置路由策略。

2.png

首先查看机器是否安装了iproute2,一般情况下都默认安装,如果没有安装,可以利用 apt install iproute2 命令安装。

然后打开路由表文件: vim /etc/iproute2/rt_tables

添加新的路由表 100 ~ 104:

## reserved values#255 local
254 main
253 default
0 unspec
100100# 主网卡101101# eth1102102# eth2103103# eth3104104# eth4## local##1  inr.ruhep

编辑 /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg 文件:

network: {config: disabled}

然后编辑netplan配置文件,阿里云ubuntu默认配置在 /etc/netplan/50-cloud-init.yaml

# This file is generated from information provided by# the datasource.  Changes to it will not persist across an instance.# To disable cloud-init's network configuration capabilities, write a file# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:# network: {config: disabled}network:
    version: 2    ethernets:
        eth0:
            match:
                macaddress: 00:xx:xx:xx:xx:bc
            set-name: eth0
            addresses:
-172.16.6.81/18 # 私有IP/子网掩码            gateway4: 172.16.63.253 # 网关, 只有一个网卡需要配置gateway4参数            nameservers:
                addresses:
-8.8.8.8
-1.1.1.1
-8.8.4.4
-223.5.5.5 # 阿里云DNS-223.5.5.6 # 阿里云DNS            routes:
- to: 0.0.0.0/0 # 路由的目标地址。                  via: 172.16.63.253 # 为通过路由的流量设置源 IP 地址。(网关)                  table: 100# eth0对应的路由表            routing-policy:
- from: 172.16.6.81 # 主网卡私网ip,设置源 IP 地址以匹配此策略规则的流量。                  table: 100# 路由表编号                  priority: 300# 指定路由策略规则的优先级,以影响处理路由规则的顺序。# 数字越大,优先级越低:规则按优先级数字递增的顺序处理。        eth1:
            match:
                macaddress: 00:xx:xx:xx:xx:fa
            set-name: eth1
            addresses:
-172.16.0.1/18
            nameservers:
                addresses:
-8.8.8.8
-1.1.1.1
-8.8.4.4
-223.5.5.5
-223.5.5.6
            routes:
- to: 0.0.0.0/0 
                  via: 172.16.63.253 # 网关                  table: 101# eth1对应的路由表            routing-policy:
- from: 172.16.0.1 # eth1私网ip                  table: 101                  priority: 300        eth2:
            match:
                macaddress: 00:xx:xx:xx:xx:51
            set-name: eth2
            addresses:
-172.16.0.2/18
            nameservers:
                addresses:
-8.8.8.8
-1.1.1.1
-8.8.4.4
-223.5.5.5
-223.5.5.6
            routes:
- to: 0.0.0.0/0
                  via: 172.16.63.253
                  table: 102            routing-policy:
- from: 172.16.0.2
                  table: 102                  priority: 300        eth3:
            match:
                macaddress: 00:xx:xx:xx:xx:1f
            set-name: eth3
            addresses:
-172.16.0.3/18
            nameservers:
                addresses:
-8.8.8.8
-1.1.1.1
-8.8.4.4
-223.5.5.5
-223.5.5.6
            routes:
- to: 0.0.0.0/0
                  via: 172.16.63.253
                  table: 103            routing-policy:
- from: 172.16.0.3
                  table: 103                  priority: 300        eth4:
            match:
                macaddress: 00:xx:xx:xx:xx:a5
            set-name: eth4
            addresses:
-172.16.0.4/18
            nameservers:
                addresses:
-8.8.8.8
-1.1.1.1
-8.8.4.4
-223.5.5.5
-223.5.5.6
            routes:
- to: 0.0.0.0/0
                  via: 172.16.63.253
                  table: 104            routing-policy:
- from: 172.16.0.4
                  table: 104                  priority: 300

配置完成后,输入 netplan apply以应用网络配置。

利用 route -n 查看路由情况:

3.png

3. 测试网络连通性

运行 curl cip.cc --interface 私网ip可查看对应的网卡ip,检查网络连通性。

4.png

参考

普通模式下实现ECS绑定多EIP - 弹性公网 IP - 阿里云

How to Configure Multiple Network Interfaces

Netplan Reference | Netplan


image.png1.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
1951 1
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
603 18
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
1008 17
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
1293 7
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
1766 6
|
Ubuntu Linux
任何Ubuntu用户都应安装的四大Linux应用程序
当然,这款程序不需要太多介绍。我们面对的是网上最庞大最完整的多媒体中心,由于丰富的插件,我们能够高度细化地定制其每一项功能。这是我们的Linux发行版不可或缺的必备软件。 我们可以通过运行以下命令来轻松安装Kodi:sudo apt install kodi。
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
11月前
|
Ubuntu 安全 iOS开发
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Ubuntu 24.04 - Nessus 自动化安装程序
1369 5
|
11月前
|
NoSQL Ubuntu MongoDB
在Ubuntu 22.04上安装MongoDB 6.0的步骤
这些步骤应该可以在Ubuntu 22.04系统上安装MongoDB 6.0。安装过程中,如果遇到任何问题,可以查阅MongoDB的官方文档或者Ubuntu的相关帮助文档,这些资源通常提供了解决特定问题的详细指导。
1056 18

热门文章

最新文章