
隧道XFRM
redwingz
这个作者很懒,什么都没留下…
展开
-
IKEv2子网之间秘钥重协商
以下根据strongswan代码中的testing/tests/ikev2/net2net-rekey/中的测试环境,验证一下网络到网络的IKEv2协议的秘钥重协商过程。拓扑结构如下:拓扑图中使用到的设备包括:虚拟网关moon和sun。moon网关配置moon网关的配置文件:/etc/ipsec.conf ,内容如下。为了进行秘钥重协商,安全关联的生存期lifetime指定为较短的10s,...原创 2019-12-09 21:17:30 · 2774 阅读 · 0 评论 -
IPSec对NAT网关内部多个连接的支持
以下根据strongswan代码中的testing/tests/ikev2/nat-rw-mark/中的测试环境,在安全连接的两个节点之间存在NAT网关的情况,并且在安全网关上对外部连接的端点地址在访问内部网络之前,执行SNAT操作,适用于外部的分支使用与总部不同网段地址的情况。拓扑结构如下:拓扑图中使用到的设备包括:虚拟网关moon和sun。sun网关配置sun的配置文件:/etc/ip...原创 2019-12-05 20:51:14 · 1995 阅读 · 0 评论 -
GRE协议与传输模式下IPSec隧道
以下根据strongswan代码中的testing/tests/route-based/net2net-gre/中的测试环境,来看一下GRE报文通过IPSec隧道的情况。拓扑结构如下:拓扑图中使用到的设备包括:虚拟网关moon和sun。sun网关配置sun的配置文件:/etc/swanctl/swanctl.conf,内容如下。注意其中的gre子连接配置,local_ts和remote_t...原创 2019-12-03 20:24:26 · 4247 阅读 · 0 评论 -
两个IPSec子连接共用XFRM虚拟接口
以下根据strongswan代码中的testing/tests/route-based/net2net-xfrmi-ike/中的测试环境,来看一下两个IPSec子连接共用一个XFRM虚拟接口的情况。拓扑结构如下:拓扑图中使用到的设备包括:虚拟网关moon和sun。sun网关配置sun的配置文件:/etc/swanctl/swanctl.conf,内容如下。注意其中的net-net子连接配置...原创 2019-12-02 19:42:01 · 1409 阅读 · 1 评论 -
自动创建XFRM虚拟接口的net2net形式的IPSEC
以下根据strongswan代码中的testing/tests/route-based/net2net-xfrmi/中的测试环境,来看一下基于路由和XFRM接口的安全连接。在配置中sun网关使用特殊值%unique-dir自动为in/out两个方向创建不同ID值的xfrm虚拟设备;而moon网关仍然使用在swanctl.conf文件中手动指定xfrm接口ID值,并且手动创建XFRM接口的方法。su...原创 2019-12-02 19:41:28 · 993 阅读 · 0 评论 -
自动创建XFRM虚拟接口的net2net形式的IPSEC
以下根据strongswan代码中的testing/tests/route-based/net2net-xfrmi/中的测试环境,来看一下基于路由和XFRM接口的安全连接。在配置中sun网关使用特殊值%unique-dir自动为in/out两个方向创建不同ID值的xfrm虚拟设备;而moon网关仍然使用在swanctl.conf文件中手动指定xfrm接口ID值,并且手动创建XFRM接口的方法。su...原创 2019-11-22 10:35:58 · 1058 阅读 · 0 评论 -
基于VTI隧道接口IPv4封装IPv6报文的IPSec实现
以下根据strongswan代码中的testing/tests/route-based/rw-shared-vti-ip6-in-ip4/中的测试环境,来看一下基于路由和VTI接口的IPv4封装IPv6报文的安全连接。拓扑结构如下:拓扑图中使用到的设备包括:虚拟主机carol和dave,以及虚拟网关moon。虚拟主机配置carol的配置文件:/etc/swanctl/swanctl.con...原创 2019-12-02 19:40:51 · 1370 阅读 · 0 评论 -
基于路由和VTI虚拟接口的IPSec实现
以下根据strongswan代码中的testing/tests/route-based/rw-shared-vti/中的测试环境,来看一下基于路由和VTI接口的安全连接。拓扑结构如下:拓扑图中使用到的设备包括:虚拟主机carol和dave,以及虚拟网关moon。虚拟主机配置carol的配置文件:/etc/swanctl/swanctl.conf,内容如下。连接home中的字段vips设置为...原创 2019-12-02 19:40:24 · 4000 阅读 · 4 评论 -
基于路由和XFRM虚拟接口的IPSec实现
以下根据strongswan代码中的testing/tests/route-based/rw-shared-xfrmi/中的测试环境,来看一下基于路由和XFRM接口的安全连接。拓扑结构如下:拓扑图中使用到的设备包括:虚拟主机carol和dave,以及虚拟网关moon。虚拟主机配置carol的配置文件:/etc/swanctl/swanctl.conf,内容如下。连接home中的字段vips...原创 2019-12-02 19:30:27 · 2964 阅读 · 1 评论 -
StrongSwan虚拟测试环境搭建
全新安装的Ubuntu系统,版本:$ cat /etc/issueUbuntu 18.04.3 LTS \n \l$ StrongSwan的版本为: 5.8.1。在搭建环境之前,更新一个apt系统,将sources.list文件中的如下行增加universe,以防在安装过程中找不到包。$ sudo vi /etc/apt/sources.list deb http://arch...原创 2019-09-16 20:33:29 · 2101 阅读 · 0 评论 -
OVS中使用LISP隧道
LISP是一个三层隧道机制,这意味着封装的报文不会携带二层的以太网头部,并且不应该通过隧道发送ARP请求报文。因此,在Open vSwitch中设置LISP隧道需要一些额外的步骤,直到L3隧道的支持得到改进。本指南假设LISP隧道位于两个VM虚拟机之间,这两个虚拟机连接在不同hypervisor的OVS网桥上,它们之间通过IPv4地址可达。当然,可能不止一个虚拟机连接到任意hypervisor,...原创 2019-07-03 21:16:55 · 757 阅读 · 0 评论 -
OVN IPsec指南
本文档提供了一个步骤指南,描述在Open Virtual Network (OVN)中使用IPSec加密隧道流量。OVN隧道流量由物理路由器和交换机传输。这些物理设备可能不受信任(公共网络中的设备)或可能受到危害。为隧道流量启用IPSec加密可以阻止流量数据被监控和操纵。有关OVN IPsec设计的更多详细信息,请参见ovn-architecture(7)手册页。本文档假设OVN安装在你的系统中...原创 2019-07-01 21:11:00 · 1072 阅读 · 0 评论 -
配置静态L2TPv3隧道传输non-IP报文
L2TP网络拓扑如下,两个系统Host-A与Host-B直连互通,网段为192.168.1.0/24。会话session设备不再配置独立的IP地址,而是与网口eth0桥接在同一个网桥br0下,这样进入网口eth0的数据报文(包括非IP报文)都将被转发到l2tpeth0接口上,最终通过L2TP隧道由eth1发出。 Host-A ...原创 2019-05-23 20:50:03 · 1564 阅读 · 0 评论 -
配置基于IP的静态L2TPv3隧道
L2TP网络拓扑如下,两个系统Host-A与Host-B直连互通,网段为192.168.1.0/24: Host-A Host-B |-------------------| |-------------------| | | ...原创 2019-05-23 20:45:26 · 3358 阅读 · 0 评论 -
基于UDP的静态L2TPv3隧道
L2TP网络拓扑如下,两个系统Host-A与Host-B直连互通,网段为192.168.1.0/24: Host-A Host-B |-------------------| |-------------------| | | ...原创 2019-05-23 20:37:42 · 1828 阅读 · 10 评论 -
IPSec NAT穿越静态配置和问题
网络拓扑 |-------------------| |-------------------| | | | | | 192.168.1.115 | <---------> | 192.168.1.142 | | ...原创 2019-05-22 21:35:09 · 3039 阅读 · 0 评论 -
IPSec手动创建隧道
网络拓扑 |-------------------| |-------------------| | | | | | 192.168.1.115 | <---------> | 192.168.1.142 | ...原创 2019-05-21 21:01:34 · 3698 阅读 · 2 评论 -
Fortinet防护墙IKEv1版本协议配置
本文主要讲述Site-to-Site的IPsecurity IKEv1协议的配置以及注意事项。此网络结构又称为网络到网络的IPSecurity,两个网关彼此建立IPSecurity通道,将网关背后的内部网络通过IPSecurity通道安全的连接起来。防火墙1的配置1)打开虚拟专用网络->IPSec->IKE网页,创建IPSecurity的阶段一,远程网关地址选择...原创 2019-12-03 19:54:02 · 1601 阅读 · 0 评论 -
内核UDP隧道框架
目前内核支持的基于UDP隧道的协议有L2TP、IPSec、FOU/GUE、GENEVE和VXLAN等。内核为这些隧道协议提供了一个通用的UDP隧道框架,参见文件net/ipv4/udp_tunnel.c,共性的一些操作统一到了框架中。隧道创建对于隧道L2TP、FOU/GUE、GENEVE和VXLAN,隧道创建时,都需要在内核中新建一个UDP套接口,框架中的函数udp_sock_creat...原创 2018-10-29 15:16:59 · 4305 阅读 · 0 评论 -
Linux内核TUN/TAP设备驱动
Linux内核的TUN/TAP虚拟设备,不同于内核的其它设备,其发送和接收数据包都在网络协议栈内部完成,发送的数据包并不会离开协议栈进入到物理网络中,同样,也不会接收到从物理网络中进入协议栈的数据包。用户空间的设备节点/dev/net/tun用于读写TUN/TAP设备,内核中TUN/TAP设备在发送数据包时,将数据包发送到与/dev/net/tun文件描述符相关联的套接口,用户空间就可从设备节...原创 2018-10-26 15:20:39 · 15175 阅读 · 3 评论 -
PPTP隧道应用详解
本文内容基于PPTPD应用层程序pptpd-1.4.0版本。初始化时在pptp_manager函数中,新建一个TCP的套接口监听PPTP客户端的控制连接请求,由函数createHostSocket完成,此套接口监听在PPTP的协议端口1723(PPTP_PORT)上:static int createHostSocket(int *hostSocket){ if (...原创 2018-11-08 17:14:42 · 2893 阅读 · 0 评论 -
内核实现PPTP数据通道
开源的PPTP程序pptp-1.4.0未使用内核的新版PPTP驱动程序,如文章所述。结果是,所有的GRE报文都要上送到应用层pptpd处理,处理完GRE报头之后,还需要通过ppp的tty驱动送入内核的PPP系统处理内层的ppp数据部分。内核新增加的PPTP模块把GRE的处理放到了内核驱动中,不再上送PPTPD应用。并且,内核PPTP驱动提供了一个新的协议族套接口AF_PPPOX,可以为上层应用使用...原创 2018-11-12 11:51:29 · 1451 阅读 · 0 评论 -
strongSwan的编译安装
基于全新安装的ubuntu 18.04系统。# cat /etc/issueUbuntu 18.04.1 LTS \n \l首先安装必要的编译工具:# apt-get update# apt-get install build-essential# apt-get install autoconf如果没有显示的禁用GNU MP(libgmp)加密插件,需要安装libgmp库...原创 2018-11-19 17:29:08 · 6051 阅读 · 0 评论 -
内核基于流的GRE隧道与lwtunnel隧道以及collect_md简析
GRE实现基于内核的IP tunnel隧道框架,ip隧道的框架又是在轻量级lwtunnel隧道基础上实现。本文不阐述轻量级隧道的实现详情,可参看以下链接:https://blog.youkuaiyun.com/sinat_20184565/article/details/84952713。GRE点到点隧道的配置如下:$ sudo ip tunnel add gre01 mode gre remote...原创 2018-12-19 23:08:38 · 2329 阅读 · 0 评论 -
内核IP隧道的FallBack设备与隧道
基于内核IP TUNNEL体系的隧道,在初始化时默认创建一个FallBack设备及相应的FallBack隧道。例如GRE类隧道、IPIP和VTI隧道。GRE IPv4模块加载之后,默认创建三个设备,分别为gre0、gretap0和erspan0,IPIP隧道默认创建tunl0名字的设备,VTI隧道创建的默认设备名为ip_vti0。这些设备为隧道的FallBack设备。每种类型的FB设备每个网络命...原创 2018-12-16 21:39:25 · 2486 阅读 · 0 评论 -
IPIP隧道以及传输层FOU/GUE封装配置
在配置IPIP隧道之前,需要首先加载IPIP模块:sudo modprobe ipip以下为两个主机A和B的IPIP隧道配置,主机A的IP地址为192.168.1.113,主机B的IP地址为192.168.1.129:Host A:ip link add ipip01 type ipip local 192.168.1.113 remote 192.168.1.129ip li...原创 2018-12-21 23:39:14 · 4675 阅读 · 1 评论 -
Linux内核轻量级隧道
目前内核支持的封装类型由枚举类型lwtunnel_encap_types定义,如下所示支持MPLS、IP、ILA、IP6、SEG6、BPF和SEG6_LOCAL等7种类型。函数lwtunnel_valid_encap_type负责检验用户配置(通过netlink接口)的封装类型是否合法,合法的封装类型必须大于LWTUNNEL_ENCAP_NONE,并且小于__LWTUNNEL_ENCAP_MAX;...原创 2018-12-11 11:57:47 · 3362 阅读 · 1 评论 -
SIT隧道以及FOU/GUE封装
单纯的SIT隧道配置如下:Host-A:ip link add sit01 type sit local 10.10.10.103 remote 10.10.10.145 ttl 255ip link set sit01 upip addr add 3ffe:6::1/96 dev sit01Host-B:ip link add sit01 type sit local 1...原创 2018-12-23 15:16:50 · 1613 阅读 · 0 评论 -
内核IP隧道接收处理框架
内核使用inet_add_protocol注册了三种类型的隧道接收处理函数,三种类型分别为IPv4-in-IPv4隧道类型IPPROTO_IPIP(4)、IPv6-in-IPv4隧道IPPROTO_IPV6(41)和MIPS-in-IP隧道IPPROTO_MPLS(137)。接收处理函数分别为:tunnel4_rcv、tunnel64_rcv和tunnelmpls4_rcv。具体参见tunnel4...原创 2018-12-18 15:52:19 · 1251 阅读 · 2 评论 -
TCP套接口的sk_backlog接收队列
在接收到数据包之后,如果判断此套接口当前正被用户进程所使用,数据包将被保存到套接口结构的sk_backlog成员的head所定义的skb缓存列表中,tail指向链表的末尾,len变量记录了当前链表中所有skb的总长度。struct sock { struct { atomic_t rmem_alloc; int len; ...原创 2019-03-28 08:46:17 · 4991 阅读 · 6 评论 -
PF_KEYv2接口
内核的PF_KEY类型套接口,提供了IPSec的应用层管理程序与内核的交互接口。套接口初始化sock_register函数注册PF_KEY套接口pfkey_family_ops,另外函数pfkeyv2_mgr注册一个KM(key manager)秘钥管理器pfkeyv2_mgr。static int __init ipsec_pfkey_init(void){ err = ...原创 2019-05-20 20:56:03 · 1868 阅读 · 0 评论 -
IKEv1报文交互简析
IKEv1协议分为两个阶段。阶段1(Phase 1)用来建立IKE SA安全关联;阶段2(Phase 2)用来建立IPSec SA安全关联,前者有两种模式:主模式与野蛮模式。后者有快速模式(Quick mode)完成。阶段1(Phase 1)其中主模式下共由3组报文组成,Phase1建立的IKE SA主要用来保护阶段2的协商过程,以及保护状态信息等的报文传输。主模式(Main Mode)的第一...原创 2018-07-18 10:25:11 · 4727 阅读 · 0 评论