IPSec - Day 1

查看原文

IPsec 是用来给 IP packets 加密的协议。VPN 可以用很多种加密协议,例如 OpenVPN, PPTP, SSTP, IPsec。 其中 IPsec 的好处是:它有 RFC 6071 定义了标准,并且在 Linux Kernel 中被实现了。TLS 是互联网加密的基石,而 IPsec 则被应用在 5G/LTE 手机网络中。

IPsec 分成两部分:userspace + kernel. 用户态处理 IKA (internet key exchange) - 每次打开 VPN 连接都需要和 VPN Server 通讯获得加密的 key。内核部分处理真正的加密。

kernel 部分的实现有两个数据库: security policy database (SPD) + security association database (SAD). 前者定义规则如何处理 ip range 内的包,例如 (丢包,通过),后者用来存不同 IP 的密钥。

IPsec 被 Linux 内核实现,但是 TLS 却没有。作者认为可能的原因是内核不想实现 key 交换,TLS 每次连接都要做 key change,而 IPsec 只要初始的时候在用户态做一次,剩下的交给内核来处理。// 没有定数,也许未来 Linux 内核也实现了 TLS 也说不定。

Libreswan / Strongswan 是两款可以用来处理 IPSec 的软件。

IPsec 的两种用法 * transport mode: IP header 明文,payload 加密。 * tunnel mode: IP header/payload 都加密,然后包进一个 UDP 包