1.6 初识Linux隧道:ipip
前文介绍的tun设备也叫作点对点设备,之所以叫这个名字,是因为tun经常被用来做隧道通信(tunnel)。我们可以通过命令ip tunnel help查看IP隧道的相关操作。Linux原生支持下列5种L3隧道:·ipip:即IPv4 in IPv4,在IPv4报文的基础上封装一个IPv4报文;·GRE:即通用路由封装(Generic Routing Encapsulation),定义了在任意一种网络层协议上封装其他任意一种网络层协议的机制,适用于IPv4和IPv6;·sit:和ipip类似,不同的是sit用IPv4报文封装IPv6报文,即IPv6 over IPv4;·ISATAP:即站内自动隧道寻址协议(Intra-Site Automatic Tunnel Addressing Protocol),与sit类似,也用于IPv6的隧道封装;·VTI:即虚拟隧道接口(Virtual Tunnel Interface),是思科提出的一种IPSec隧道技术。下面我们以ipip为例,介绍Linux隧道通信的基本原理。
注:Linux L3隧道底层实现原理都基于tun设备,因此我们可以将本节看作tun设备的高级应用篇。
1.6.1 测试ipip隧道
要使用ipip隧道,首先需要内核模块ipip.ko的支持。通过lsmod|grep ipip查看内核是否加载,若没有则用modprobe ipip加载,正常加载应该显示:
加载ipip内核模块后,就可以创建隧道了。方法是先创建一个tun设备,然后将该tun设备绑定为一个ipip隧道。ipip隧道网络拓扑如图1-18所示。
创建两个network namespace:
创建两对veth pair,令其一端挂在某个namespace下:
分别给两对veth-pair端点配上IP并启用:
验证一下:v1 ping v2,结果为不通。检查ip_forward的值:
我们已经知道Linux本身就是一台路由器,Linux提供开关/proc/sys/net/ipv4/ip_forward来操作路由功能,默认这个开关是关的,打开只需:
标签:隧道,kubernetes,Linux,ipip,网络,IPv4,tun,linux,封装 From: https://www.cnblogs.com/haoyun123/p/17502969.html