VPP配置指南:NAT“三板斧”

883321a7d503bc99ab74fb8dcd4c7a09.gif

正文共:1024 字 15 图,预估阅读时间:1 分钟

前面我们介绍过VSR的NAT配置地址重叠时,用户如何通过NAT访问对端IP网络?地址重叠的时候怎么使用NAT解决访问问题,看这里,可以说是很简单的操作了。那VPP的NAT该如何配置呢?我们今天就用一个简易环境来简单介绍一下。

设备组网如下图所示:

bb0e2a3bbc4de4b109474ce88a67d008.png

我们首先配置好设备互联,VPP72的接口配置如下:

vppctl set int state eth1 up
vppctl set int ip address eth1 11.1.1.1/24
vppctl set int state eth2 up
vppctl set int ip address eth2 12.1.1.1/24

a5389b552c49cf6230a0872d57239b00.png

VPP73的接口配置如下:

vppctl set int state eth1 up
vppctl set int ip address eth1 22.1.1.1/24
vppctl set int state eth2 up
vppctl set int ip address eth2 12.1.1.2/24

4950b87efd02f8608b2915146d83265f.png

调通网络之后,我们先测试最常用的SNAT,一般指在出接口上对请求流量的源IP地址和源端口进行转换,转换为指定的IP地址和端口。最常见的场景就是上网,我们的家用路由器一般都是使用这种配置方式。

H3C设备的实现很简单,在接口下配置一条nat outbound就可以了。例如:

#
interface GigabitEthernet4/0port link-mode routeip address 44.1.2.1 255.255.255.0nat outbound

在VPP上则需要两条命令:

vppctl nat44 add interface address eth2
vppctl set interface nat44 out eth2 output-feature

26bab25a14627f6c865a90410c9228d4.png

差别就是H3C在接口上配置时可以直接转换为接口的IP地址,而VPP则要指定一个转换的地址或者接口地址。类似的,H3C指定地址池的配置方式为:

#
nat address-group 10086 name tietouaddress 44.1.2.4 44.1.2.44
#
acl advanced 3402rule 0 permit ip source 11.1.1.0 0.0.0.255rule 5 permit ip source 11.1.2.0 0.0.0.255
#
interface GigabitEthernet4/0port link-mode routeip address 44.1.2.1 255.255.255.0nat outbound 3402 address-group 10086

简单的时候真简单,复杂起来也是真复杂。

此时PCA就可以访问到VPP73了。

01c9b8a7afe5019a4e904819a2404718.png

可以在VPP72上查看NAT的相关信息。

9134df843049f7debcde0e9aad9284ec.png

可以看到,NAT使用的地址池为接口eth2的接口地址,地址为12.1.1.1,而且可以看到使用的端口信息,当前是使用了3个ICMP端口。从NAT的详细会话中可以看到,原始请求报文的源IP地址是11.1.1.2,源端口为1676,协议为ICMP;转换后的源IP地址是12.1.1.1,源端口为63327。这里再加上目的地址和目的端口就是五元组了,当然,VPP里面还加了一个FIB表(fib 0)的选项,组成了六元组。

我们现在已经可以从PCA访问到VPP73了,那怎么从PCA访问到PCB呢?

我们不妨在VPP73上再配置一个静态NAT映射,将PCB的私网地址22.1.1.2转换为VPP72能够访问的12.1.1.22。同时这也是一个DNAT,将PCA的请求报文,在入接口上将请求的目的IP地址转换为实际的IP地址,不转换端口。

vppctl nat44 add static mapping local 22.1.1.2 external 12.1.1.22
vppctl set interface nat44 in eth1 out eth2 output-feature

3a2fc082de429140f7d45838fd1b03cf.png

可以看到,请求的目的地址是12.1.1.22,目的端口为59651,转换后的目的地址为实际的22.1.1.2,目的端口没有变化,仍为59651。

对应的,我们也看一下VPP72的会话。

ff17ef5c07030c68d4fda8b7943f1ebd.png

可惜只能看到一半的详情,有点尴尬。

而且此时这个静态映射的访问方向是单向的,即只能从VPP72侧向VPP73侧发起访问,PCB无法访问VPP72。

97f8e06aebe805cbb11da6a0fd064fd0.png

对应的,H3C配置静态映射的配置为:

#
nat static outbound 22.1.1.2 44.1.1.44
#
interface GigabitEthernet4/0port link-mode routeip address 44.1.2.1 255.255.255.0nat static enable

但是H3C能实现两个方向的一对一静态地址转换,即内网地址既可以通过外网地址访问外网,外网的其他地址也可以通过配置的外网地址访问内网地址。这是VPP所不能支持的。

还有最后一个,那就是端口映射,也属于DNAT,即在入接口上将请求报文的目的IP地址和目的端口转换为配置的IP地址和端口。

H3C可以在接口下通过以下两种方式进行配置:

#
interface GigabitEthernet4/0port link-mode routeip address 44.1.2.1 255.255.255.0nat server protocol tcp global 44.1.2.22 10086 inside 22.1.1.2 443nat server protocol tcp global current-interface 10086 inside 22.1.1.2 443

一种为指定要使用的IP地址,另一种为直接使用接口的IP地址。

而使用VPP配置时,只能使用地址池中已有的IP地址,不能使用不在地址池中的地址。

e406ba8c1050be378d1a3ea6ee301ec6.png

比如我们把12.1.1.23加入到地址池中,再配置就可以了。

vppctl nat44 add address 12.1.1.23
vppctl nat44 add static mapping tcp local 22.1.1.2 22 external 12.1.1.23 10086

022295829b1a2fc03716d3aa36a9518d.png

当然,如果要使用接口的IP地址,也要先把接口的IP地址加入到地址池中,才能配置使用接口进行配置。

513364f66f31070eb400245d8fbffc35.png

当然,配置时,会同时生成一条带有接口IP地址的映射条目。然后我们测试一下端口的开放性。

f94f6a4a6f9c8621ae777cdc87abb39b.png

测试一下访问。

14b3d588540ca5a0956b4c16f63edf75.png

访问正常!

最后看一下两次NAT之后的设备性能吧,现在只能测试从PCA到PCB的带宽了。

c6770ac89be7f849ef617ed67945be88.png

测得带宽为5.29 Gbps,怎么样,还能接受吗?

b537d31882f86a784d5e435677767b14.gif

长按二维码
关注我们吧

aa569a24594aaf69c25867cff3f75d7a.jpeg

5711d8ec5fbf40d0e75e1e76566ba96c.png

URL过滤功能了解一下?

从零开始安装一个VPP要多久?半小时,不能再多了!

VPP纳管网卡后还有哪些要做的工作?

MPLS TE隧道带宽的决定因素有哪些?

使用RSVP-TE配置跨域的MPLS TE隧道

超线程和VT-d开启与否对性能的影响大不大?

不会吧!KVM竟然不支持磁盘的精简置备!?

一种基于IPsec的VXLAN“专线”解决方案

IPsec VPN文章及知识点汇总【墙裂建议收藏】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/232557.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s之pod

1、pod:k8s中最小的资源管理组件,最小化运行容器化应用的资源管理对象 (1)pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合 (2)一个pod中运行一个容器是最常用的方式 &#xff…

2020年认证杯SPSSPRO杯数学建模A题(第二阶段)听音辨位全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 A题 听音辨位 原题再现: 把若干 (⩾ 1) 支同样型号的麦克风固定安装在一个刚性的枝形架子上 (架子下面带万向轮,在平地上可以被水平推动或旋转,但不会歪斜),这样的设备称为一个麦克风树。不同的麦…

郑州大学算法设计与分析实验2

判断题 1 #include<bits/stdc.h> using namespace std;const int N 50; int f[N], n;int main() { // freopen("1.in", "r", stdin);ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;f[1] 1; f[2] 1;for(int i 3; i &l…

HttpRunner的测试用例分层机制

测试用例分层介绍&#xff1a; 在接口自动化测试维护过程中&#xff0c;由于测试用例的增加和需求变更导致测试用例的调整&#xff0c;使自动化测试用例的维护非常麻烦&#xff0c;直接关系到自动化测试能否持续有效地在项目中开展。 概括来说&#xff0c;测试用例分层机制的核…

数据库选择题 (期末复习)

数据库第一章 概论简答题 数据库第二章 关系数据库简答题 数据库第三章 SQL简答题 数据库第四第五章 安全性和完整性简答题 数据库第七章 数据库设计简答题 数据库第九章 查询处理和优化简答题 数据库第十第十一章 恢复和并发简答题 2015期末 1、在数据库中&#xff0c;下列说…

PHP运行环境之宝塔软件安装及Web站点部署流程

PHP运行环境之宝塔软件安装及Web站点部署流程 1.1安装宝塔软件 官网&#xff1a;https://www.bt.cn/new/index.html 自行注册账号&#xff0c;稍后有用 下载安装页面&#xff1a;宝塔面板下载&#xff0c;免费全能的服务器运维软件 1.1.1Linux 安装 如图所示&#xff0c;宝…

Redis - 挖矿病毒 db0 库 backup 反复出现解决方案

问题描述 腾讯云的服务器&#xff0c;使用 Docker 部署了 Redis 之后&#xff0c;发现 DB0 中总是出现 4 条 key&#xff0c;分别是 backup01backup02backup03backup04 而自己每次存入 db0 中的数据过一会就会被无缘无故删除掉。 原因分析 挖矿病毒 解决方案 在启动的时候…

外包干了1个月,技术退步一大半。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

软件工程:数据流图相关知识和多实例分析

目录 一、数据流图相关知识 1. 基本介绍 2. 常用符号 3. 附加符号 二、数据流图实例分析 1. 活期存取款业务处理系统 2. 工资计算系统 3. 商业自动化系统 4. 学校人事管理系统 5. 教材征订系统 6. 高考录取统分子系统 7. 订货系统 8. 培训中心管理系统 9. 考务处…

win10提示“KBDSF.DLL文件缺失”,游戏或软件无法启动运行,快速修复方法

很多用户在日常使用电脑的时候&#xff0c;或多或少都遇到过&#xff0c;在启动游戏或软件的时候&#xff0c;Windows桌面会弹出错误提示框“KBDSF.DLL文件缺失&#xff0c;造成软件无法启动或运行&#xff0c;请尝试重新安装解决”。 首先&#xff0c;先来了解DLL文件是什么&a…

前台收款单选择的保险公司 提示 往来户不属于该财务组织

前台收款单选择的保险公司 提示 往来户不属于该财务组织 问题避免 新增保险公司的时候&#xff0c;找一个已经存在的保险公司&#xff0c;利用多页签复制的方式来新增 保险公司 不然不能够自动生成 财务客户

Docker学习与应用(六)-Docker网络

1、Docker网络 Docker有多种网络模式可以选择&#xff0c;可以根据应用场景和需求选择合适的网络模式。 桥接模式&#xff08;Bridge Mode&#xff09;&#xff1a;默认情况下&#xff0c;Docker使用桥接模式创建一个虚拟网络&#xff0c;所有容器会连接到这个虚拟网络中。每个…

Qt qDebug基本的使用方法详解

目录 qDebug基本用法输出字符串输出变量值1输出变量值2支持流式输出输出十六进制去除双引号和空格调试输出级别 自定义类型输出自定义日志信息的输出格式示例占位符设置环境变量 关闭QDebug输出Qt工程VS工程 在VS工程中如何查看qDebug输出 DebugView下载 qDebug基本用法 qDebug…

在 sealos 上使用 redisinsight 完美管理 redis

先起一个 redis 集群&#xff0c;在 sealos 上可以点点鼠标就搞定&#xff1a; 简单两步&#xff0c;redis 集群搞定。 再启动 RedisInsight, 是一个 redis 的可视化管理工具。 就可以看到部署后的地址了。进去之后填写 redis 的链接信息即可&#xff1a; 链接信息在数据库的…

查询json数组

步骤一&#xff1a;创建表格 首先&#xff0c;我们需要创建一个表格来存储包含JSON对象数组的数据。可以使用以下代码创建一个名为 my_table 的表格&#xff1a; CREATE TABLE my_table (id INT PRIMARY KEY AUTO_INCREMENT,json_data JSON ); 上述代码创建了一个包含两个列的…

前端文件上传组件最全封装+删除+下载+预览

前言&#xff1a;使用的是若依的框架element uivue2封装的。如果有不对的地方欢迎指出。后台管理使用&#xff0c;文件需要上传。回显列表&#xff0c;详情也需要回显预览 // 开始封装组件&#xff1a;封装在 src/components/FileUpload/index.vue中 <template><div c…

微服务实战系列之API加密

前言 随着一阵阵凛冽寒风的呼啸&#xff0c;新的年轮不知不觉滚滚而来。故事随着2023的远去&#xff0c;尘封于案底&#xff1b;希望迎着新年&#xff0c;绽放于枝头。在2024新岁启航&#xff0c;扬帆破浪之时&#xff0c;让烦恼抛洒于九霄&#xff0c;让生机蓬勃于朝朝暮暮。 …

企业一线员工定岗定编全解析

引言&#xff1a;在生产制造企业中&#xff0c;由于一线员工工作内容单一&#xff0c;与产量线性关系明显&#xff0c;因此针对一线员工的定编方法最简单有效的就是通过数据计算的方式。人力资源专家——华恒智信根据多年以来对生产制造企业定岗定编的关注与研究得出的经验&…

ResNet论文阅读和简单实现

论文&#xff1a;https://arxiv.org/pdf/1512.03385.pdf Deep Residual Learning for Image Recognition 本模块主要是阅读论文&#xff0c;会做简单的翻译&#xff08;至少满足我自己能看明白&#xff09;。 Introduction 由上图可见&#xff0c;在20层和56层的网络上训练的…

ElasticSearch的DSL查询语法解析

Elasticsearch提供了基于ISON的DSL (Domain Specific Lanquage)来定义查询。 目录 一、常见查询类型 二、DSLQuery基本语法 三、全文检索查询 3.1 match查询&#xff1a;会对用户输入内容分词&#xff0c;常用于搜索框搜索 &#xff0c;语法&#xff1a; 3.2 multi match…