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

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
公网NAT网关,每月750个小时 15CU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 在同一台阿里云 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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
高可用应用架构
欢迎来到“高可用应用架构”课程,本课程是“弹性计算Clouder系列认证“中的阶段四课程。本课程重点向您阐述了云服务器ECS的高可用部署方案,包含了弹性公网IP和负载均衡的概念及操作,通过本课程的学习您将了解在平时工作中,如何利用负载均衡和多台云服务器组建高可用应用架构,并通过弹性公网IP的方式对外提供稳定的互联网接入,使得您的网站更加稳定的同时可以接受更多人访问,掌握在阿里云上构建企业级大流量网站场景的方法。 学习完本课程后,您将能够: 理解高可用架构的含义并掌握基本实现方法 理解弹性公网IP的概念、功能以及应用场景 理解负载均衡的概念、功能以及应用场景 掌握网站高并发时如何处理的基本思路 完成多台Web服务器的负载均衡,从而实现高可用、高并发流量架构
相关文章
|
2月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
76 2
|
3月前
|
网络协议 Ubuntu 网络安全
|
3月前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
107 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
3月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
772 3
|
3月前
|
开发框架 缓存 Ubuntu
dotnet开发框架+ubuntu防火墙命令+win11设置自动登录+阿里云短信发送限制
dotnet开发框架+ubuntu防火墙命令+win11设置自动登录+阿里云短信发送限制
50 3
|
3月前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
54 1
|
Ubuntu Java Android开发
在Ubuntu上为Android系统的Application Frameworks层增加硬件访问服务
在数字科技日新月异的今天,软件和硬件的完美结合,造就了智能移动设备的流行。今天大家对iOS和Android系统的趋之若鹜,一定程度上是由于这两个系统上有着丰富多彩的各种应用软件。
849 0
|
15天前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
74 13
|
12天前
|
监控 关系型数据库 MySQL
Ubuntu24.04安装Librenms
此指南介绍了在Linux系统上安装和配置LibreNMS网络监控系统的步骤。主要内容包括:安装所需软件包、创建用户、克隆LibreNMS仓库、设置文件权限、安装PHP依赖、配置时区、设置MariaDB数据库、调整PHP-FPM与Nginx配置、配置SNMP及防火墙、启用命令补全、设置Cron任务和日志配置,最后通过网页完成安装。整个过程确保LibreNMS能稳定运行并提供有效的网络监控功能。
|
22天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
379 12