Golang入门指南


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

OpenVPN高级路由技术 虚拟交换机和内部路由缓存

时间: 2022-07-12   |   分类: openvpn     |   阅读: 5280 字 ~11分钟

前面的《OpenVPN高级路由技术》系列文章阐述了OpenVPN中潜在的内部路由技术以及具体的配置方法,另外也谈到了如何使用OpenVPN将网络进行扩展,然而具体到这些内部路由是怎么工作的,并没有谈及。为什么直到现在才说这些呢?我以为最好先不要管内部原理,先要学会用,只有当你明白这是个黑盒子的时候,你才会有目的的想进入它,希望它成为你的白盒子。

阅读全文 »

OpenVPN的包过滤机制

时间: 2022-07-12   |   分类: openvpn     |   阅读: 4720 字 ~10分钟

OpenVPN是和网络结合的非常紧密的一款VPN,事实上,每一个VPN框架都和IP网络结合的很紧密,因此在此首先劝一下那些想搞VPN的朋友们,一定要先彻底精通TCP/IP网络协议栈,特别是IP路由,防火墙原理之后再去啃OpenVPN或者其它的VPN,否则会事倍功半的,仅仅看懂源代码和灵活配置,灵活运用,灵活定制之间的差距和很远,精通VPN远远不是会写C代码会使用哈希表就能应付得了的。

阅读全文 »

OpenVPN高级路由技术 反向推送信息

时间: 2022-07-12   |   分类: openvpn     |   阅读: 3242 字 ~7分钟

在《VPN的概念以及要点》中,我指出了OpenVPN构建的网络是单向的,也就是说在不手工配置系统路由的情况下,只能由OpenVPN客户端一侧发起连接。这是因为OpenVPN服务器会把自己一侧的路由推送至OpenVPN客户端,反之,OpenVPN客户端却不能把自己一侧的路由推送给OpenVPN服务器。于是我自己修改代码手工实现了一个PUSH消息,将客户端的信息放在PUSH_REQUEST的后面进行发送,然后OpenVPN服务器端进行解析。此举改动了大量的代码,浪费了我一天无聊的时间…

有什么更直接的方式么?事实上,当你认为没有的时候,蓦然回首,那人正在灯火阑珊处等你呢。如果你执行openvpn –help的时候,你会发现一个很有趣的选项,那就是push-peer-info选项,正如help解释所说,它只能用于client。该选项的含义是将OpenVPN客户端的信息推送至OpenVPN服务器。那么赶紧试试看。

阅读全文 »

OpenVPN高级路由技术 扩展成巨大的网络

时间: 2022-07-12   |   分类: openvpn     |   阅读: 1805 字 ~4分钟

OpenVPN内部实现了一个路由器的功能,其源代码的multi_get_instance_by_virtual_addr函数执行路由查找的工作,这种路由是OpenVPN的内部路由,也就是说这种路由是OpenVPN配置并查找的,和外部的系统路由是完全独立的。

阅读全文 »

OpenVPN的高级路由技术 内部路由

时间: 2022-07-12   |   分类: openvpn     |   阅读: 5625 字 ~12分钟

server模式以及点对点模式的OpenVPN

前文好几次说过,虽然OpenVPN也可以创建隧道,该隧道封装了IP数据报或者以太帧,然而却和使用IPSec VPN的网络拓扑无法做到兼容,这是因为在网对网模式下,默认配置下,使用tun虚拟网卡模式的OpenVPN的客户端虚拟网卡上要强制做SNAT,否则便通不过OpenVPN服务器端的检查。这是因为OpenVPN服务器是根据分配给客户端的虚拟IP地址来维护客户端和自己保存的session(也就是multi_instance)的对应关系的。为了定位是哪个客户端发来了封装的数据包,OpenVPN需要解析出封装载荷中的源IP地址,从而找到和自己保存的multi_instance的对应关系。初看起来,这好像是OpenVPN服务器设计时端偷了一个懒,然而下一节会说明,事实并不是那样。

阅读全文 »

使用OpenVPN的桥接模式扩展内部局域网

时间: 2022-07-12   |   分类: openvpn     |   阅读: 1364 字 ~3分钟

背景

​ OpenVPN是一款高度可扩展的VPN软件,除了既有的将应用客户端安全接入服务器这一传统功能外,还可以让你无缝的接入一个远程的局域网,正如你身在该局域网一样,如果你不用OpenVPN,你将很难做到这一点。当然,你可以选择像IPSec这样的重量级VPN,但是你的生活从此将不再简单,你也可以使用拨号,连接到远程,但是你永远无法体验完全接入这种身临其境的感觉。

阅读全文 »

OpenVPN协议解析 通道 状态机 Reliability层

时间: 2022-07-11   |   分类: openvpn     |   阅读: 6354 字 ~13分钟

OpenVPN通道

OpenVPN通道

​ OpenVPN内置了两个通道,一个用于控制,另一个用于数据传输,在设计上,很多网络协议都实现了多通道,也有N种方式实现多通道,其中常用的有两种,一种是使用带外数据传输控制信息,另一种就是将控制信息多路复用到数据通道。OpenVPN使用的就是第二种方式。

阅读全文 »

OpenVPN协议解析 握手数据包分析

时间: 2022-07-11   |   分类: openvpn     |   阅读: 6607 字 ~14分钟

​ 学习一种协议的最好的方式就是研究它的数据包,这样可以加深对协议的理解。对于研究过某种协议数据包的家伙来讲,他一定知道协议头的哪个位置对应哪个字段,虽然这对于理解协议为什么这么设计可能没有太大的帮助,然而对于排查问题和实际实施是很有帮助的。既然很多人都对Richard Stevens的《TCP/IP详解》情有独钟,咱就剽窃他的风格,解析一下OpenVPN的握手是如何完成的。本文分析70余个数据包,当然,最终我会略去重复的内容,来看看OpenVPN的握手协商过程。

阅读全文 »
32 33 34 35 36 37 38 39 40

日志
分类
标签
RSS 订阅
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%