VPN原理入门(非常详细)从零基础入门到精通,看完这一篇就够了

# ip tuntap 创建名为 tun0 的 tun 设备
sudo ip tuntap add dev tun0 mod tun
# 为 tun0 配置 ip
sudo ifconfig tun0 192.168.0.10 netmask 255.255.255.0
# 查看 tun0 网卡
ifconfig tun0

如下:

3.通过命令创建TUN设备

在 VPN 中我们可以借助 TUN/TAP 来捕获用户发出的报文。

0x03 虚拟通信链路

按照 TUN/TAP 的工作特性,我们可以编写程序直接读写虚拟网卡(也就是物理网卡实际收发报文的过程),来实现捕获用户数据以及传递用户数据。(TUN 和 TAP 有不同的应用场景,下文我们将以更简单的 TUN 作为例子)

随后,位于不同主机上的程序通过 socket 进行通信,将从虚拟网卡的接收的数据通过 socket 发送给对端,这就是一个 VPN 的雏形了,如下:

4.虚拟通信链路工作流程

simpletun 是这种方案的最小实现(源码仅 300+ 行,感兴趣的小伙伴可以自行学习),在源码中实现了创建虚拟网络设备以及 socket 通信,借助 simpletun 可以帮助我们快速进行验证。

需要注意一点,simpletun 启动后需要我们手动配置虚拟网卡的 ip 地址,当 ip 地址未配置时,两端相互发送数据(部分操作系统会自动发送)会造成程序异常退出,所以在代码中添加一个 sleep(30) 便于我们配置 ip 地址:

5.在simpletun中添加sleep

在两台 Ubuntu 测试环境下配置并进行验证:

# A主机
# 编译 simpletun
gcc simpletun.c -Wall -o vpn
# 作为 vpn server 启动,并开启 debug,默认监听 55555
sudo ./vpn -i tun0 -s -d
# 配置 tun 网卡地址
sudo ifconfig tun0 192.168.0.10 netmask 255.255.255.0

# B主机
# 编译 simpletun
gcc simpletun.c -Wall -o vpn
# 作为 vpn client 启动,连接 server,并开启 debug
sudo ./vpn -i tun0 -c 10.11.33.50 -d
# 配置 tun 网卡地址
sudo ifconfig tun0 192.168.0.11 netmask 255.255.255.0

此时两台主机位于 192.168.0.0/24 虚拟网络网段下,可以相互通信,如下:

6.虚拟通信链路两端通信

0x04 访问内网网段

在上文的验证中,我们可以实现两端的虚拟网络搭建和通信,但实际 VPN 的使用场景是需要通过 VPN 访问整个内网网段,在这种使用场景下,VPN server 至少配置有两张物理网卡,其中一张接入内网网段,另一张则连接到互联网。

按照 0x03 虚拟通信链路 的链路,VPN client 发送报文到内网主机,VPN server 接收到该报文后,将其写入到虚拟网卡中,随后报文进入 TCP/IP 协议栈,但是由于 IP 地址不是 VPN server 自己,该报文会被丢弃,无法正常进行通信;这里我们需要借助「报文转发」,将内网报文从虚拟网卡转发到内网网卡上。其新的工作流程如下:

7.VPN访问内网网段

VPN server 一般会作为内网网关,内网主机无需任何额外配置就可以在虚拟网段下正常工作。

我们按照该流程配置测试环境,复用 0x03 虚拟通信链路 中的环境,在 VPN server 上我们使用 docker 模拟内网网段和主机,其环境搭建如下:

8.VPN测试环境搭建

然后按照 0x03 虚拟通信链路 中的方式,启动 simpletun 并使用 ifconfig 配置 ip 地址,创建虚拟通信链路;使用如下命令开启报文转发:

# 临时开启报文转发
echo "1" > /proc/sys/net/ipv4/ip_forward

实际上在该测试环境下,docker 会自动开启报文转发

再通过 iptables 配置转发策略,如下:

# 将入口网卡、来源ip为 192.168.0.0/24 转发至 docker0
sudo iptables -A FORWARD -i tun0 -s 192.168.0.0/24 -o docker0 -j ACCEPT
# 将入口网卡、目的ip为 192.168.0.0/24 转发至 tun0
sudo iptables -A FORWARD -i docker0 -d 192.168.0.0/24 -o tun0 -j ACCEPT

实际上在该测试环境下,第二条可以不用配置,因为 docker 会自动配置转发策略,会覆盖这条策略

除此之外,为了在 VPN client 可以访问到内网主机,需要手动添加路由:

# VPN client 添加内网网段路由,设置为虚拟网络设备 tun0
sudo route add -net 172.17.0.0/24 tun0

此时 VPN 配置完成,内网主机和 VPN client 相互连通:

9.内网主机访问以及验证

0x05 拓展

上文中我们使用最小实现验证了 VPN 的工作原理,但是实际场景却比这个复杂很多,这里我们简单抛出一些问题作为拓展学习。

1.VPN作为网关?
VPN server 一般作为网关进行配置,内网主机不用进行额外配置,也可以把报文发送给 VPN server。

2.UDP通信链路?
simpletun 中 VPN server 和 client 之间使用 TCP 进行通信,但是在实际场景一般使用 UDP 进行通信。

当使用 TCP 作为通信隧道时,并且上层应用也使用 TCP,也就是 tcp in tcp,当出现丢包时,上层应用的 TCP 和 VPN 通信隧道的 TCP 都会进行重传,从而通信中出现大量的重传报文,降低通信效率;如果在这种情况下,以 UDP 作为通信隧道,tcp in udp,丢包后将只由上层应用的 TCP 进行重传。

3.etc

0x06 总结

最后感谢 rook1e@知道创宇404实验室 小伙伴同我一起学习和研究,解决了诸多问题。

本文从 VPN 原理出发,介绍了关键作用的 TUN/TAP 虚拟网络设备,并结合 simpletun 创建了两端的虚拟通信链路,最后配合报文转发,实现并验证了 VPN 的通信工作原理。

VPN 的实现较为简单,但涉及到各种细枝末节的网络知识;这里的最小验证,可以为我们实现更为复杂的 VPN 或基于 VPN 技术的其他项目提供参考。


**题外话**

=========

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

  • 2023届全国高校毕业生预计达到1158万人,就业形势严峻;
  • 国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

“没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。

网络安全行业特点

1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
[外链图片转存中…(img-lVkiv20A-1712864544921)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值