之前写的一个:[dev][ipsec] 基于路由的VPrivateN

我们默认用strongswan的时候基于策略的. 也就是policy. 基于策略的ipsec中, policy承担了两部分功能

一是访问权限的控制功能, 另一个是路由的功能. linux kernel做完路由之后会在查询policy,从而确定要将包转发给哪一个SA.

基于一中的描述, 我们现在要做基于路由的ipsec, 也就是说将路由功能从policy中去除出来, 在路由表中使用路由条目来做.

于是在这里需要解决的就是路由指向下一条的问题, 而这个下一条就是Ipsec SA.

现在引入一个概念叫做VTI(Vitual Tunnel Interface), VTI是内核中的一种设备. 使用如下命令添加:

ip link add name vti1 type vti key VTI_KEY local LOCAL_IPv4_ADDR remote REMOTE_IPv4_ADDR

我们看见, 创建vti时指定了一个key, 这个key便是与SA之间的关联. 见下面的例子如何完成这样一个关联:

# ip link add name vti1 type vti key VTI_KEY local LOCAL_IPv4_ADDR remote REMOTE_IPv4_ADDR
# ip link set vti1 up
# ip addr add LOCAL_VIRTUAL_ADDR/ dev vti1 # ip xfrm state add src LOCAL_IPv4_ADDR dst REMOTE_IPv4_ADDR spi SPI PROTO ALGR mode tunnel
# ip xfrm state add src REMOTE_IPv4_ADDR dst LOCAL_IPv4_ADDR spi SPI PROTO ALGR mode tunnel
# ip xfrm policy add dir in tmpl src REMOTE_IPv4_ADDR dst LOCAL_IPv4_ADDR PROTO mode tunnel mark VTI_KEY
# ip xfrm policy add dir out tmpl src LOCAL_IPv4_ADDR dst REMOTE_IPv4_ADDR PROTO mode tunnel mark VTI_KEY

这样呢. 这个新增的VTI就等价于SA, 我们只有正常的配置路由, 将流量路由到这个VTI上, 便等于完成了基于路由的IPsec.

参考:https://developers.redhat.com/blog/2019/05/17/an-introduction-to-linux-virtual-interfaces-tunnels/#vti

三里边我们使用iproute工具做的配置, strongsan里同样如此. 在配置的时候, 比如有一个mark的配置项,用来关联SA

 mark_in = mark_out =  

基于一中的分析. 我们在基于路由的场景下将police的功能进行了分离. 所以policy的原有的策略控制功能和定义并没有发生变化.

双端还是可以自由的协商出需要的安全策略.

VTI是有很多局限性的, 最新的kernel里新增了类型名叫做xfrm的interface, 作为VTI的下一代. 见:

https://lwn.net/Articles/757391/

基于二, 我们解决这个问题的方法有很多, 只要能达成路由到SA的包转发.

处理VTI, XFRM, 还可以用GRE.

见:https://wiki.strongswan.org/projects/strongswan/wiki/RouteBasedVPN

所有问题的关键,都在于将作为工具的interface将SA进行关联.

VTI用了 key/mark (mark_in = mark_out = 42)

XFRM用了 interface Id  (if_id_in|out in swanctl.conf)

GRE在strongswan中使用这样一个配置:  (local|remote_ts=dynamic[gre] in swanctl.conf)

另外, 如果你使用strongswan的话, 需要改一下这个, 因为基于策略时他会在路由表里加东西: charon.install_routes=0

[ipsec][strongswan] 使用VTI配置基于路由的ipsec的更多相关文章

  1. [dev][ipsec] 基于路由的VPrivateN

    VPrivateN的配置分两个模式 1. 基于策略的VPrivateN ( policy based) 2. 基于路由的VPrivateN (route based) 以strongswan为例, 在 ...

  2. [ipsec][strongswan]strongswan源码分析--(零)引子

    目录 strongswan sa 资料 编译 启动 进程信息 结构 架构图与插件 配置运行 传统配置方法 新的配置方法 其他配置方法 详细的配置文档 配置示例 用法 加密库 libgmp libcry ...

  3. [ipsec][strongswan] strongswan源码分析--(一)SA整体分析

    strongswan SA分析(一) 1 概念 下面主要介绍两个本文将要阐述的核心概念.他们是SA和SP.注意,这不是一篇不需要背景知识的文章.作者认为你适合阅读接下来内容的的前提是,你已经具备了一下 ...

  4. [ipsec][strongswan] strongswan源码分析--(五)plugin的配置文件的添加方法与管理架构解析

    前言 我们知道,strongswan是基于插件式管理的.不同的插件有不同的配置文件,在这下面, 我们以netlink的插件为例:etc/strongswan.d/charon/kernel-netli ...

  5. 阿里云容器服务--配置自定义路由服务应对DDOS攻击

    阿里云容器服务--配置自定义路由服务应对DDOS攻击 摘要: 容器服务中,除了slb之外,自定义路由服务(基于HAProxy)也可以作为DDOS攻击的一道防线,本文阐述了几种方法来应对普通规模的DDO ...

  6. H3C路由器配置——静态路由

    一.网络畅通条件及排错思路 1.网络畅通的条件 网络畅通的条件:数据包能去能回,也是我们排除网络故障的理论依据. 2.网络不畅通示列 ①.目标主机不可达 原因分析:可能是数据包没有到达目的地,在中途就 ...

  7. 两种交换机配置模式,以配置基于端口划分的VLAN为例

    关于交换机的配置模式,大体上可以分为两类:其一以CISCO交换机为代表的配置模式,其二以Huawei.H3C交换机为代表的配置模式.其实这两种配置模式并没有本质的不同,只是配置的命令名称和配置方式存在 ...

  8. Web API配置自定义路由

    默认访问Web API时,是无需指定method名.它会按照默认的路由来访问.如果你的Web API中出现有方法重载时,也许得配置自定义路由: 标记1为自定义路由,标记2为默认路由,需要把自定义路由排 ...

  9. SharePoint 2013 配置基于表单的身份认证

    前 言 这里简单介绍一下为SharePoint 2013 配置基于表单的身份认证,简单的说,就是用Net提供的工具创建数据库,然后配置SharePoint 管理中心.STS服务.Web应用程序的三处w ...

随机推荐

  1. Hive Authorization

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization https://www.cloudera.c ...

  2. matlab学习笔记8 基本绘图命令-特殊图形绘制

    一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...

  3. [LeetCode] 403. Frog Jump 青蛙跳

    A frog is crossing a river. The river is divided into x units and at each unit there may or may not ...

  4. [LeetCode] 583. Delete Operation for Two Strings 两个字符串的删除操作

    Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 t ...

  5. 重回ubutntu12.04小记(装完ubuntu做的几件事)

    原来一直是在windows下用虚拟机跑redhat 和debian 做实验和一些工程,以前也装过ubuntu和windows双系统,但是换电脑后,就一直懒得捣鼓了. 现在,由于长期需要在linux上做 ...

  6. Docker创建镜像 并推拉Harbor

    创建镜像 一.根据dockerfile创建镜像 文件详解 1.mkdir dockerfile/lib/centos7base/ 创建目录 2.创建Dockerfile vim Dockerfile ...

  7. Serializer组件

    Serializer组件 一 .序列化器-Serializer 作用: 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 反序列化,把客户端发送过来的数据,经过req ...

  8. DataGrip License server

    之前用 Resharper 使用 http://xidea.online 来激活 今天下载一个DataGrip 发现不能使用这个地址,不知道是被封杀了还是不能跟 Resharper 的共用 在网上找到 ...

  9. Base64图片编码的使用

    一.base64编码介绍 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息.采用Base64编码具有不可读性,即所编码的数据 ...

  10. [转]HTTP Error 500.21 - Internal Server Error Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler" in its module list

    1.错误 HTTP Error 500.21 - Internal Server Error Handler "ExtensionlessUrlHandler-Integrated-4.0& ...