在vpp中做nat实验
最近在熟悉 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实验相关推荐
- 操作篇 了解学习NAT实验(关于静态NAT、动态NAT、EasyIP、端口映射的配置方法))
文章目录 前言 NAT工作原理 NAT分类 一:实验环境 1.1:实验原理 1.2实验目的 1.3华为NAT实验拓扑图 二:实验过程 配置SW1 配置AR1: 配置AR2: 前言 随着Internet ...
- GNS3做交换实验使用感受
今天在做交换实验的时候,发现3640 IOS 不支持show vtp password 以及在全局配置模式下对vlan 进行的配置管理.以前我比较喜欢在vlan database 模式下对vlan进行 ...
- 【StatLearn】统计学习中knn算法实验(2)
接着统计学习中knn算法实验(1)的内容 Problem: Explore the data before classification using summary statistics orvisu ...
- Nginx动态、静态分离,Nginx配置中做适配
Nginx[静态,动态] 页面是html,mp3,mp4,txt,doc,pdf 动态脚本语言:shell,PHP,java 一: LNMP (Linux+Nginx+MariaDB==m ...
- p2p网络中的NAT穿透技术----常见NAT穿越解决方案
p2p网络中的NAT穿透技术----常见NAT穿越解决方案 常见NA丁穿越解决方案 NAT技术在缓解IPv4地址紧缺问题.构建防火墙.保证网络安全等方面都发挥了重要 作用.然而,NAT设备的广一泛存在 ...
- 注意力CBMA到底在网络中做了什么事
注意力CBAM到底在网络中做了什么事 CBAM网络架构 通道注意力 空间注意力: 分析 通道注意力: 1.将特征图进行最大池化和平均池化 SENet也使用了通道注意力, 但SENet只采用了平均池 ...
- 用计算机做科学实验心得体会,做实验的心得体会3篇
生物学是一门以做实验为基础的自然科学,现代生物科学的发展尤其依赖科学实验.下面是学习啦带来的做实验心得体会,欢迎欣赏. 做实验的心得体会一: 实验教学是电工课教学的重要组成部分,电工知识的讲授离不开实 ...
- 实战:k8s中网络策略实验(成功测试-博客输出)-20211005
目录 文章目录 目录 写在前面 基础知识 实验环境 原课件内容 1.案例1:拒绝其他命名空间Pod访问 2.案例2:同一个命名空间下应用之间限制访问 3.案例3:只允许指定命名空间中的应用访问 总结 ...
- P2P通信中的NAT/FW穿越
摘要:P2P(Peer-to-Peer)通信的发展极其迅速,形成了很大的影响.和传统通信一样,P2P通信同样受到NAT/FW穿越问题的制约,因此解决好其相关的NAT/FW穿越问题非常重要.和传统通信相 ...
- “做中学学中做”教学模式在计算机基础教学中的应用探索
"做中学学中做"方法在教学活动中尊重学生的个性差异,强调学生认知中的经验与交往,使学生成为学习的主体,让学生亲身经历探究自然的过程,在观察.提问.设想.动手实验.表达.交流的探究活 ...
最新文章
- 单片机怎么学?新手怎么快速学会单片机?
- ***JAVA多线程和并发基础面试问答
- HDU 2066-一个人的旅行(最短路Dijkstra)
- 面试准备3——相关知识
- Golang gRPC实践 连载六 内置Trace
- A*B Problem
- 执行git命令时提示秘钥权限太开放‘Permissions 0644 for ‘/Users/liuml/.ssh/id_rsa_tz‘ are too open.’
- leetcode300. 最长递增子序列
- kali linux conky配置文件,7个美丽的Conky配置为您的Linux桌面 | MOS86
- 健康身心态的10条法宝
- radware alteon 负载均衡器设置
- 最新解决laravel框架路由无法显示的问题
- 云免等候服务器响应,云服务器响应
- (14) 常用管理类软件需求征集 -- 组织机构管理
- macbook proc如何升级到10.14.3
- 如何用c语言程序预测身高,测身高的C语言程序.doc
- 精准准确的统一社会信用代码正则(js)
- 【基于微信的物品回收小程序的设计与实现】
- 联想拯救者Y9000X 22款的啸叫问题和设置页面黄白切换问题
- SaToken技术分享文档
热门文章
- 【Excel技巧必知必会】
- 我的超休闲游戏作品集
- 不要放弃!“软考论文”一点也不难
- VS 2017 透明背景设置
- html设置背景颜色以及透明度代码,HTML怎么设置背景颜色透明度?
- [深入研究4G/5G/6G专题-35]: URLLC-6-《中国联通5G URLLC技术白皮书3.0版本》解读-2-无线侧关键技术
- 电子沙盘 数字沙盘 开发教程
- 【Vue】前端跨域解决方法
- 腾讯、阿里、搜狐、人人、去哪儿、迅雷等互联网企业产品笔试题目(附个人答案)
- android 人脸识别边框_虹软人脸识别 - Android Camera实时人脸追踪画框适配