OpenVPN 进入 Linux 6.16 内核喽

Linux 6.16 的合并窗口,比较感兴趣的下面的两个点:
在这里插入图片描述

  • DCCP 由于没人用被移除了,不用再维护它,与 TCP 共享的代码重构也减负了;
  • OpenVPN 成熟到合入了内核,进一步提升了传输性能;

DCCP 来自 2005 年的 Linux gets DCCP,走过了 20 年依然被束之高阁,OpenVPN 作为内核的新来者却早就铺天盖地。跟几个链接:

Introducing OpenVPN Data Channel Offload
https://gitlab.com/openvpn/ovpn-dco/
OpenVPN Data Channel Offload: Unleashing Superior VPN Performance

在进入内核之前,它一直以 DCO 模块的形式存在,支持 5.4 以上的内核以及特定发行版,如上第二个链接。更主要是第三个链接,关于 OpenVPN 的产品版本都在其官网 Access Server,它告诉你 what 和 howto,至于其它的都是代码,不搞这个开发仅使用和包装的话也没必要看了。

我对 OpenVPN 过于熟悉,曾经为它工作了 5 年多,下面是我 review 代码后的一个简图,勾勒 ovpn DCO 结构:
在这里插入图片描述

而我在 2014 年也基于 Netfilter 写过一个类似的玩具:OpenVPN-in-LinuxKernel

其实,WireGuard 进入内核(Linux 5.6)的历史,可作为 OpenVPN 的对照。OpenVPN 与 WireGuard 的内核支持将直接竞争:

  • WireGuard:协议,配置,控制均简洁。
  • OpenVPN:配置灵活,支持 TCP,成熟生态。

OpenVPN 进内核不只优化了拷贝和切换(但标准程序员却总盯着这些),更多是它以这种方式融入了丰富的 Linux 内核网络生态,比如 Netfilter,iptables/nft,eBPF/XDP,甚至还有进一步 offloading 的可能,直达现代加密硬件和加速卡。

对比 DCCP,OpenVPN 的启示是,协议存活关键不是技术,而是生态。妹忒内儿更青睐被广泛使用的代码,而非 “完美” 的代码。所以,DCCP 因无人问津被移除,而 OpenVPN 因需求被维护而被纳入,体现的是一种实用原则。

有趣的是,2005 年,DCCP 被合入 Linux 2.6.14 内核,稍早的 2001 年,OpenVPN 出世,OpenVPN and the SSL VPN Revolution 写于 2004 年,与 DCCP 差不多同期被认识到了意义。

至于控制通道,核心还是 SSL/TLS 那一套,库太多了,而 OpenVPN 自带的 plugin,script 也值得一提。

2010 年开始我基于 OpenVPN 做了 5 年多,期间做遍了各种数据面,并发以及加解密优化,寻遍了 Linux 内核协议栈的每个角落,到了 2020 年前后,我用这些手艺又吃了两年老本,对 WireGuard 做了几个手术。

遗憾的是,很多人盯上 WireGuard 要用 DPDK 重构它时,我已不想卷了,现在他们觊觎的,又多了一个,经理们,玩得愉快!

浙江温州皮鞋湿,下雨进水不会胖。

OpenVPN (Open Virtual Private Network) 是一个开源软件,用于创建虚拟私有网络 (VPNs),允许远程用户安全地连接到网络资源。对于Linux环境,部署OpenVPN通常涉及几个步骤: 1. **安装依赖**:首先需要安装必要的系统工具包,如openssl,一般使用包管理器(apt-get for Debian/Ubuntu,yum for CentOS/RHEL)进行安装: ```sh sudo apt-get update && sudo apt-get install openvpn easy-rsa ca-certificates ``` 2. **获取OpenSSL CA证书**:OpenSSL Certificate Authority (CA) 被用于生成加密密钥对和证书。easy-rsa是一个简化了OpenSSL证书管理的小工具集,可以下载并安装它: ``` mkdir /etc/openvpn/easy-rsa cd /etc/openvpn/easy-rsa git clone https://github.com/OpenVPN/easy-rsa.git ``` 3. **初始化ca**:进入easy-rsa目录,运行`./scripts/easyrsa init-pki` 初始化证书颁发机构。 4. **配置客户端和服务器**:按照指示生成客户端和服务器的证书及私钥,例如为服务器设置证书: ```sh ./easyrsa build-ca nopass ./easyrsa gen-req server nopass ./easyrsa sign-req client server ``` 5. **生成OpenVPN配置文件**:使用openvpn服务生成server.conf配置文件: ```sh cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.template /etc/openvpn/server.conf ``` 修改配置文件以包含你的证书路径和其他必要参数。 6. **启动和管理OpenVPN**:最后,你可以通过`sudo systemctl start openvpn@server.service` 启动服务,并可能希望设置自动启动(`sudo systemctl enable openvpn@server.service`),或者编辑`/etc/systemd/system/multi-user.target.wants/openvpn@server.service`来配置开机自启。 **相关问题--:** 1. 如何验证OpenVPN连接是否成功? 2. OpenVPN有哪些常见的认证方式? 3. 如果需要限制OpenVPN的访问速度,如何操作?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值