最近在熟悉 vpp 的各项功能,摆在眼前的第一个就是 nat,网上相关的资料还比较少。下面就整理一下目前所学到的,在 vpp 中进行 nat 实验的基本流程,还不完善,可能有理解上的错误,欢迎指正。
        首先给出该 nat 实验的网络拓扑连接,下面的步骤稍微有点多,但目的是为了搭建这样的拓扑图。

基本流程:
1)在 host 中创建一对 veth 设备 vpp1outside 和 vpp1outsidehost

$ ip link add name vpp1outside type veth peer name vpp1outsidehost

2)在 host 中给 vpp1outsidehost 设置 IP

$ ip addr add 10.10.1.1/24 dev vpp1outsidehost
$ ifconfig vpp1outsidehost up

3)在 host 中创建另外一对 veth 设备 vpp1inside 和 vpp1insidehost

$ ip link add name vpp1inside type veth peer name vpp1insidehost

4)在 host 中给 vpp1insidehost 配置 IP

$ ip addr add 10.10.2.1/24 dev vpp1insidehost

5) 在 host 中创建 netns

$ ip netns add inside

6) 将 vpp1insidehost 加入 netns

$ ip link set dev vpp1insidehost up netns inside

7) 在 netns 中给 vpp1insidehost 设置 IP

$ ip netns exec inside ip addr add 10.10.2.1/24 dev vpp1insidehost

8) 在 netns 中设置路由

$ ip netns exec inside ip route add 10.10.1.0/24 via 10.10.2.2

9) 在 vpp 中创建连接到 vpp1outside 的接口

vpp# create host-interface name vpp1outside

10) 在 vpp 中给 vpp1outside 设置 IP

vpp# set int ip address host-vpp1outside 10.10.1.2/24
vpp# set int state host-vpp1outside up

11) 在 vpp 中创建连接到 vpp1inside 的接口

vpp# create host-interface name vpp1inside

12) 在 vpp 中给 vpp1inside 设置 IP

vpp# set int ip address host-vpp1inside 10.10.2.2/24
vpp# set int state host-vpp1inside up

13) 在 vpp 中配置 nat 接口

vpp# nat44 add interface address host-vpp1outside
vpp# set interface nat44 in host-vpp1inside out host-vpp1outside

14) 在 host 中对 vpp1outsidehost 抓包

$ tcpdump -s 0 -i vpp1outsidehost -vv

15) 在 netns 中 ping host IP

$ ip netns exec inside ping -c 1 10.10.1.1

运行效果:
1)在 netns 中 ping 10.10.1.1

$ ip netns exec inside ping -c 1 10.10.1.1
PING 10.10.1.1 (10.10.1.1) 56(84) bytes of data.
64 bytes from 10.10.1.1: icmp_seq=1 ttl=63 time=26.1 ms--- 10.10.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 26.088/26.088/26.088/0.000 ms

2)在 host 中对 vpp1outsidehost 抓包

$ tcpdump -s 0 -i vpp1outsidehost -vv
dropped privs to tcpdump
tcpdump: listening on vpp1outsidehost, link-type EN10MB (Ethernet), capture size 262144 bytes
15:19:48.964020 IP (tos 0x0, ttl 63, id 12594, offset 0, flags [DF], proto ICMP (1), length 84)
10.10.1.2 > bogon: ICMP echo request, id 53336, seq 1, length 64
15:19:48.964194 IP (tos 0x0, ttl 64, id 59361, offset 0, flags [none], proto ICMP (1), length 84)
bogon > 10.10.1.2: ICMP echo reply, id 53336, seq 1, length 64

可以看到,在 netns 中 ping 10.10.1.1 时,目标网口 vpp1outsidehost 收到的数据包的源 IP 是 vpp 中 host-vpp1outside 网口的 IP(10.10.1.2),而不是 netns 中 vpp1insidehost 的 IP (10.10.2.1)

参考资料:
1、VPP/Progressive VPP Tutorial - fd.io
2、VPP/NAT - fd.io

在vpp中做nat实验相关推荐

  1. 操作篇 了解学习NAT实验(关于静态NAT、动态NAT、EasyIP、端口映射的配置方法))

    文章目录 前言 NAT工作原理 NAT分类 一:实验环境 1.1:实验原理 1.2实验目的 1.3华为NAT实验拓扑图 二:实验过程 配置SW1 配置AR1: 配置AR2: 前言 随着Internet ...

  2. GNS3做交换实验使用感受

    今天在做交换实验的时候,发现3640 IOS 不支持show vtp password 以及在全局配置模式下对vlan 进行的配置管理.以前我比较喜欢在vlan database 模式下对vlan进行 ...

  3. 【StatLearn】统计学习中knn算法实验(2)

    接着统计学习中knn算法实验(1)的内容 Problem: Explore the data before classification using summary statistics orvisu ...

  4. Nginx动态、静态分离,Nginx配置中做适配

    Nginx[静态,动态] 页面是html,mp3,mp4,txt,doc,pdf 动态脚本语言:shell,PHP,java 一:       LNMP (Linux+Nginx+MariaDB==m ...

  5. p2p网络中的NAT穿透技术----常见NAT穿越解决方案

    p2p网络中的NAT穿透技术----常见NAT穿越解决方案 常见NA丁穿越解决方案 NAT技术在缓解IPv4地址紧缺问题.构建防火墙.保证网络安全等方面都发挥了重要 作用.然而,NAT设备的广一泛存在 ...

  6. 注意力CBMA到底在网络中做了什么事

    注意力CBAM到底在网络中做了什么事 CBAM网络架构 通道注意力 空间注意力: 分析 通道注意力: 1.将特征图进行最大池化和平均池化 ​ SENet也使用了通道注意力, 但SENet只采用了平均池 ...

  7. 用计算机做科学实验心得体会,做实验的心得体会3篇

    生物学是一门以做实验为基础的自然科学,现代生物科学的发展尤其依赖科学实验.下面是学习啦带来的做实验心得体会,欢迎欣赏. 做实验的心得体会一: 实验教学是电工课教学的重要组成部分,电工知识的讲授离不开实 ...

  8. 实战:k8s中网络策略实验(成功测试-博客输出)-20211005

    目录 文章目录 目录 写在前面 基础知识 实验环境 原课件内容 1.案例1:拒绝其他命名空间Pod访问 2.案例2:同一个命名空间下应用之间限制访问 3.案例3:只允许指定命名空间中的应用访问 总结 ...

  9. P2P通信中的NAT/FW穿越

    摘要:P2P(Peer-to-Peer)通信的发展极其迅速,形成了很大的影响.和传统通信一样,P2P通信同样受到NAT/FW穿越问题的制约,因此解决好其相关的NAT/FW穿越问题非常重要.和传统通信相 ...

  10. “做中学学中做”教学模式在计算机基础教学中的应用探索

    "做中学学中做"方法在教学活动中尊重学生的个性差异,强调学生认知中的经验与交往,使学生成为学习的主体,让学生亲身经历探究自然的过程,在观察.提问.设想.动手实验.表达.交流的探究活 ...

最新文章

  1. 单片机怎么学?新手怎么快速学会单片机?
  2. ***JAVA多线程和并发基础面试问答
  3. HDU 2066-一个人的旅行(最短路Dijkstra)
  4. 面试准备3——相关知识
  5. Golang gRPC实践 连载六 内置Trace
  6. A*B Problem
  7. 执行git命令时提示秘钥权限太开放‘Permissions 0644 for ‘/Users/liuml/.ssh/id_rsa_tz‘ are too open.’
  8. leetcode300. 最长递增子序列
  9. kali linux conky配置文件,7个美丽的Conky配置为您的Linux桌面 | MOS86
  10. 健康身心态的10条法宝
  11. radware alteon 负载均衡器设置
  12. 最新解决laravel框架路由无法显示的问题
  13. 云免等候服务器响应,云服务器响应
  14. (14) 常用管理类软件需求征集 -- 组织机构管理
  15. macbook proc如何升级到10.14.3
  16. 如何用c语言程序预测身高,测身高的C语言程序.doc
  17. 精准准确的统一社会信用代码正则(js)
  18. 【基于微信的物品回收小程序的设计与实现】
  19. 联想拯救者Y9000X 22款的啸叫问题和设置页面黄白切换问题
  20. SaToken技术分享文档

热门文章

  1. 【Excel技巧必知必会】
  2. 我的超休闲游戏作品集
  3. 不要放弃!“软考论文”一点也不难
  4. VS 2017 透明背景设置
  5. html设置背景颜色以及透明度代码,HTML怎么设置背景颜色透明度?
  6. [深入研究4G/5G/6G专题-35]: URLLC-6-《中国联通5G URLLC技术白皮书3.0版本》解读-2-无线侧关键技术
  7. 电子沙盘 数字沙盘 开发教程
  8. 【Vue】前端跨域解决方法
  9. 腾讯、阿里、搜狐、人人、去哪儿、迅雷等互联网企业产品笔试题目(附个人答案)
  10. android 人脸识别边框_虹软人脸识别 - Android Camera实时人脸追踪画框适配