
内核虚拟设备
文章平均质量分 57
redwingz
这个作者很懒,什么都没留下…
展开
-
一对多GRE隧道配置
使用如下的配置拓扑: |----------------| |----------------| | | ens33 ens33 | | | Client1 |---------------------------------------| Server |原创 2021-06-09 22:46:33 · 2885 阅读 · 1 评论 -
ISATAP隧道处理
基础的sit隧道处理请参考:SIT通用隧道, 此处仅涉及isatap相关部分。netlink用户接口函数ipip6_newlink创建新的sit隧道,函数ipip6_tunnel_create创建新的隧道。static int ipip6_newlink(struct net *src_net, struct net_device *dev, struct nlattr *tb[], struct nlattr *data[], struct netlink_ext_ack原创 2021-06-08 21:36:52 · 883 阅读 · 0 评论 -
6rd隧道处理
基础的sit隧道处理请参考:SIT通用隧道,此处仅涉及6rd相关部分。命名空间fallback设备命名空间初始化中,使用函数ipip6_tunnel_clone_6rd初始化fallback设备的6rd相关参数。static int __net_init sit_init_net(struct net *net){ ... /* FB netdevice is special: we have one, and only one per netns. * Allowing原创 2021-06-04 23:07:42 · 1027 阅读 · 0 评论 -
SIT通用隧道
SIT模块不仅支持IPv6-over-IPv4封装,还支持IPv4-over-IPv4和MPLS-over-IPv4封装报文,其中IPv4-over-IPv4与IPIP隧道功能相同。对于控制接口,注册了每个网络命名空间处理结构sit_net_ops和netlink处理接口sit_link_ops。static int __init sit_init(void){ int err; pr_info("IPv6, IPv4 and MPLS over IPv4 tunneling原创 2021-06-03 21:34:31 · 1290 阅读 · 0 评论 -
ifconfig创建sit隧道
通常可使用ip命令创建sit隧道设备,如下:# ip tunnel add sit1 mode sit remote 192.168.20.1 local 192.168.20.5## ip link5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/sit 0.0.0.0 brd 0.0.0.06: sit1@NONE: <POINT原创 2021-06-02 21:30:09 · 1314 阅读 · 0 评论 -
禁止内核创建fallback设备
使用ip link命令查看接口的时候,会发现一些系统自动创建的隧道fallback设备,如:tunl0、gre0、gretap0、sit0、ip6tnl0和ip6gre0等。/ # ip link14: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1 link/ipip 0.0.0.0 brd 0.0.0.015: gre0@NONE: <NOARP>原创 2021-06-01 21:51:44 · 815 阅读 · 0 评论 -
Linux隧道6to4
6to4地址格式如下: | 3 | 13 | 32 | 16 | 64 bits | +---+------+-----------+--------+--------------------------------+ |FP | TLA | V4ADDR | SLA ID | Interface ID | |001|0x0002|原创 2021-05-30 22:47:43 · 1681 阅读 · 2 评论 -
Linux隧道sit
Linux隧道sit(Simple Internet Transition),配置环境如下: |----------| |----------| | | ens33 ens33 | | | Client |--------------------------------| Server | | | 1原创 2021-05-30 22:46:55 · 1427 阅读 · 0 评论 -
Linux隧道isatap(sit模式)
可使用isatap模式配置isatap隧道(isatap隧道模式),也可使用sit模式实现。如下环境: |----------| |----------| | | ens33 ens33 | | | Client |--------------------------------| Server | |原创 2021-05-30 22:45:28 · 1577 阅读 · 1 评论 -
bond接口参数配置
Bond接口最简化的创建命令如下,任何参数都使用默认:ip link add bond1 type bond 或者:ip link add type bond 由内核决定接口名称,格式为:bond%d。以上命令,创建的bond1设备,默认参数可使用如下命令查看。$ ip -d link show dev bond15: bond1: <BROADCAST,MULTICAST,M...原创 2020-02-26 09:20:57 · 6651 阅读 · 0 评论 -
基于路由和VTI隧道接口的net2net的IPSec实现
以下根据strongswan代码中的testing/tests/route-based/net2net-vti/中的测试环境,来看一下基于路由和VTI接口实现的安全连接。拓扑结构如下:拓扑图中使用到的设备包括:虚拟主机carol和dave,以及虚拟网关moon。sun网关配置sun的配置文件:/etc/swanctl/swanctl.conf,内容如下。连接home中的字段vips设置为0...原创 2019-12-02 19:41:16 · 1876 阅读 · 1 评论 -
内核Master/Slave类型设备的接收流程
此类的设备诸如网桥bridge、聚合接口bond,以及OVS虚拟网桥等。首先以网桥bridge为例,其配置命令如下:$ sudo ip link add name br1 type bridge$ sudo ip link set ens38 master br1第一条命令创建虚拟网桥设备br1;第二条命令添加物理接口ens38到网桥br1上。对于第二条命令,内核中有函数br_add_if...原创 2019-08-13 21:11:20 · 1386 阅读 · 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 评论 -
GRE隧道封装协议及内核处理解析
Generic Routing Encapsulation (GRE)通用路由封装协议,基于IP网络层协议封装以太网报文,可用于在IPSec VPN网络间传输多播路由信息报文,或者在PPTP协议中,承载PPP数据报文。其在数据帧中的位置如下: |-------------------|----------------|----------------------|-----------...原创 2018-10-22 22:52:21 · 26724 阅读 · 3 评论 -
Linux内核TUN/TAP设备驱动
Linux内核的TUN/TAP虚拟设备,不同于内核的其它设备,其发送和接收数据包都在网络协议栈内部完成,发送的数据包并不会离开协议栈进入到物理网络中,同样,也不会接收到从物理网络中进入协议栈的数据包。用户空间的设备节点/dev/net/tun用于读写TUN/TAP设备,内核中TUN/TAP设备在发送数据包时,将数据包发送到与/dev/net/tun文件描述符相关联的套接口,用户空间就可从设备节...原创 2018-10-26 15:20:39 · 15175 阅读 · 3 评论 -
内核基于流的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 评论 -
PPPoE服务搭建与交互流程
环境使用Ubuntu 16.04.5 LTS系统主机,使用apt-get安装pppoe服务端:$ sudo apt-get install pppoe $ pppoe-server -hPPPoE-Server Version 3.11, Copyright (C) 2001-2009 Roaring Penguin Software Inc.PPPoE-Server com...原创 2018-12-10 11:42:40 · 4687 阅读 · 2 评论 -
内核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 评论 -
基于UDP的静态L2TPv3隧道
L2TP网络拓扑如下,两个系统Host-A与Host-B直连互通,网段为192.168.1.0/24: Host-A Host-B |-------------------| |-------------------| | | ...原创 2019-05-23 20:37:42 · 1828 阅读 · 10 评论 -
VLAN数据包接收流程
先来看一下vlan数据包的帧格式,整个vlan信息大小为4个字节,分别为2个字节的标签协议标识(Tag Protocol Identifier),和2个字节标签控制信息(Tag Control Infomation)。其中后者TCI又有三个子字段组成:3个bit的优先级(PRI)、一个bit的标准格式指示器(Canonical Format Indicator)和12个bit的vlan id:以下...原创 2018-07-11 23:18:18 · 10313 阅读 · 1 评论