零入门kubernetes网络实战-24->介绍开源社区提供的tun案例
创始人
2025-05-31 14:42:20

《零入门kubernetes网络实战》视频专栏地址

https://www.ixigua.com/7193641905282875942

本篇文章视频地址(稍后上传)


上一篇文章我们提供了一个helloworld级别的基于tun设备的点对点vpn参考案例。

而这篇文章我们介绍一个开源社区提供的点对点的VPN,稍微复杂了一点。

1、参考案例官网

https://github.com/net-byte/vtun

2、vtun跟我们提供的helloworld级别的案例的核心区别在那里?

  • 在helloworld的案例中
    • 比方说,从/dev/net/tun读取数据包后,
    • 直接将数据包通过本地的UDP服务发送到了对端UDP服务了。
    • 中间没有对数据包做任何的修改
  • 而在vtun里,从/dev/net/tun读取数据包后,对数据包做了一些其他操作:
    • 加密
    • 压缩
    • 过滤
      等等

3、vtun功能介绍

这是一款简易用的VPN,
支持以下协议:

  • 支持UDP
  • 支持websocket
  • 支持tls
  • 支持grpc

我们重点分析的是UDP协议

4、vtun核心代码说明

我们只分析udp模式下的,客户端代码。

服务器端核心逻辑跟客户端是一样的。

4.1、tunToUdp函数逻辑

在这里插入图片描述

4.2、udpToTun函数逻辑

在这里插入图片描述

5、本次测试目的

是否能够实现将客户端上的所有请求流量转发到服务器端。

6、测试环境说明

本次我们只测试vtun的udp模式;

linux下客户端启动vtun时,分为两种情况:

  • 仅转发tun网络的请求
  • 转发客户端上的所有请求

在centos环境下测试:

  • 客户端IP:10.211.55.122
  • 服务器端IP:10.211.55.123

7、如何编译

7.1、如何编译vtun

7.1.1、先看一下scripts目录下的build.sh脚本

大家根据自己的实际情况进行修改!

在这里插入图片描述

7.1.2、开始编译

我是根据自己的习惯,编写了Makefile文件,供大家参考

build:./scripts/build.shscp:scp bin/* root@10.211.55.122:/rootscp bin/* root@10.211.55.123:/rootall:make build && make scp

在这里插入图片描述

7.2、vtun启动方式介绍

vtun可以在Linux、MacOS、window平台下启动。

vtun可以支持转发tun网络的请求,也可以支持宿主机上的所有请求

在这里插入图片描述

7.3、登录到客户端,并启动服务

./vtun-linux-amd64 -l :3000 -s 10.211.55.123:3001 -c 172.16.0.10/24 -k 123456 -g

在这里插入图片描述

如果你不想测试转发所有流量的话,去掉-g即可将10.211.55.123改成自己的实际服务器端IP

7.4、登录到服务器端,并启动服务

./vtun-linux-amd64 -S -l :3001 -c 172.16.0.1/24 -k 123456

在这里插入图片描述

8、测试网络连通性

8.1、先在客户端一侧,ping服务器端一侧的虚拟网络设备tun0

ping 172.16.0.1 

在这里插入图片描述

8.2、在服务器端一侧,对eth0进行抓包分析

tcpdump -nn udp  -i eth0

在这里插入图片描述

注意,是UDP协议,而非ICMP协议。

8.3、在服务器端一侧,对tun0网卡进行抓包分析

tcpdump -nn -i tun0

在这里插入图片描述

很遗憾,非常准确的原因,目前没有查出来。

但是,也有一个解决办法;

8.4、解决转发客户端所有流量失败的措施?

在这里插入图片描述

8.5、重新编译,上传客户端,服务器端,重新启动服务

这里只展示了客户端的启动过程,服务器端跟以前一样,不再重复展示了。

./vtun-linux-amd64 -l :3000 -s 10.211.55.123:3001 -c 172.16.0.10/24 -k 123456 -g

在这里插入图片描述

8.6、在客户端上,测试是否能够ping通服务器端上的tun0设备?

8.6.1、先在服务器端上验证一下tun0的相关信息

ip a s tun0ethtool -i tun0

在这里插入图片描述

8.6.2、登录到客户端上ping 服务器端的tun0虚拟网卡

ping 172.16.0.1 

在这里插入图片描述

这里验证了ICMP协议,

而TCP协议就不在具体展示了,是可以的。

8.7、在客户端上,测试一下,随便ping一个网络,是否能将客户端的流量转发到了服务器端上?

8.7.1、在客户端上,随便ping一个网络

ping 10.10.10.10

在这里插入图片描述

8.7.2、在服务端上,对eth0,tun0进行抓包分析

在这里插入图片描述

9、简单总结一下,转发客户端上所有流量的原理?

一个数据包是去走哪个网络,是根据路由表来决定的。

路由表里有多条路由,一条路由,代表一个网络。具体如何选择,大家可以详细研究一下。

至少新增了一条默认路由,也就是说当数据包不知道走哪条路由时,就会走默认路由

而通向默认路由的网卡设备就是tun0。

这样的话,至少转发了默认路由的流量。

如果是本机内部的流量是不用转发的。

如果是非本机的非默认路由流量的话,并没有测试。

在这里插入图片描述

10、总结

分享vtun主要是为大家提供了一个稍微复杂点的案例。

可以对从/dev/net/tun文件里读取到的数据包进行二次加工,

对加工后的数据,

再通过UDP链接发送出去。

最后,又重点分析了一下如何实现转发客户端的所有流量的功能。

11、学习心得分享

其实,在学习tun设备的过程中,网上关于go语言版本的tun编程还是比较少的。

大部分都是c,c++,python的

因此,类似的情况,大家可以在github里,搜索相关内容。

通过关键词搜索,比方说,tun tap vpn

在这里插入图片描述

将搜到的代码下载到本地,使用goland,idea等编辑打开,

使用全局搜索方式,查看是否有自己感兴趣的代码。
在这里插入图片描述


<<零入门kubernetes网络实战>>技术专栏之文章目录


相关内容

热门资讯

湾财周报|大事记 比亚迪驳斥“... 一周大事记(5月26日-6月1日) 头条 比亚迪驳斥! 长城“车圈恒大论”是行业警示还是危言耸听?...
通源石油跌1.96%,成交额1... 5月30日,通源石油跌1.96%,成交额1.03亿元,换手率4.40%,总市值23.54亿元。 异动...
中国邮储银行浙江分行2025校... 点这里 ↑ 老满说高考 作者 l 老满 生涯规划师l 升学顾问l 拆书家 这是 老满说高考公众号 的...
公募基金规模首次突破33万亿元... 每经记者:肖芮冬 每经编辑:叶峰 天赐良基日报第654期 一、今日基金新闻速览 1、华润元大基金贾...
湾财周报 大事记 比亚迪驳斥“... 一周大事记(5月26日-6月1日)头条比亚迪驳斥!长城“车圈恒大论”是行业警示还是危言耸听?近日,关...
EL表达式JSTL标签库 EL表达式     EL:Expression Language 表达式语言     ...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
工信部、中汽协紧急发声!汽车“... 文/刘育英新一轮汽车价格战再起。近日,工信部、中汽协纷纷发声表示反对。工业和信息化部表示,将加大对汽...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
募资39亿,全亏光了,账上不到... 关于天然气,用户的感觉是价格一直在上涨,但很奇怪,不管怎么涨,天然气企业仍然亏,还亏得一塌糊涂。这是...
资阳房产评估公司 这是(tel-15828298733)整理的信息,希望能帮助到大家 在当今社会,随着经济的发展和城...
华桥汇利(中国)投资基金管理有... 今年第一季度,美国企业利润出现大幅下降,且面临着来自关税上升的持续压力,这一局面可能会在今年进一步加...
ESG 报告合规与鉴证:全球政... 在当下全球经济格局里,ESG(环境、社会和公司治理)已然成为衡量企业可持续发展能力的关键指标。随着全...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...
与锤巨子生物的大嘴博士持股同一... 医美龙头巨子生物“成分争议”风波持续发酵。日前,美妆博主大嘴博士(香港大学化学博士郝宇)发文,质疑巨...
Linux之进程间通信 目录 进程间通信介绍 一、为什么要进行进程间通信? 二、进程间通信目的 三、进程间通信...
从“造城”到“留客”,文旅局长... 你有没有刷到最近各地文旅局局长全体“尬舞”的视频?领导们放下架子开始跳魔性舞蹈,这场舞的背后啊,可不...
Hazel引擎学习(十一) 我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看...
孩子的教育金,分享3个「有效」... 点击 “简七读财” ,发送消息“ 理财小工具 ”免费领取“40个赚钱工具资源包”晚上好,我是简七编...
iZotope RX 10(专... iZotope RX 10是一款专业的音频修复和增强软件,具有音频修复工具、音频增强工...
我的docker随笔40:cl... 本文介绍 clickhouse 数据库的容器化部署。 起因 某项目需生产环境数据库,因...
透视一周牛熊股:最牛股路桥信息... 过去一周(5月26日—5月30日)A股三大指数集体下跌。截至5月30日收盘,上证指数报3347.49...
基于matlab创建地面固定雷... 一、前言此示例演示如何创建和显示包含地面固定雷达、转弯飞机、等速飞机和移动地面车辆的多平台方案。二、...
暗夜发光,独自闪耀,盘点网页暗... 众所周知,网页的暗黑模式可以减少屏幕反射和蓝光辐射,减少眼睛的疲劳感&#...
C语言-程序环境和预处理(2) 文章目录预处理详解1.预定义符号2.#define2.1#define定义的标识符2.2#defin...
MySQL数据库知识整理 MySQL数据库知识整理 MySQL事务详解 事务四大特性ACID 原子性(Atomi...
Docker基础篇——最全讲解 文章目录一、CentOS安装docker二、启动帮助类命令三、镜像命令1.名词概念2.常用命令2.1...
五问“恒大论”,比亚迪回应车圈... “车圈恒大”引发的舆论风暴还在进一步发酵。近日,比亚迪集团品牌及公关处总经理李云飞在微博发文,引用多...
javafx实现聚光灯效果,圆... 系列文章专栏:javafx图形绘制、桌面录屏录音源码合集 目录 一、实现的效果 二、实现思路
300左右哪款蓝牙耳机适合学生... 近年来,随着蓝牙耳机的发展,不管是音质、外观、佩戴还是降噪都有了很大的提...