ip tunnel命令

简介

IP隧道技术:是路由器把一种网络层协议封装到另一个协议中以跨过网络传送到另一个路由器的处理过程。IP 隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。移动IPv4主要有三种隧道技术,它们分别是:IP in IP、最小封装以及通用路由封装。

Linux系统内核实现的IP隧道技术主要有三种(PPP、PPTP和L2TP等协议或软件不是基于内核模块的):ipip、gre、sit 。这三种隧道技术都需要内核模块 tunnel4.ko 的支持。

  • ipip 需要内核模块 ipip.ko ,该方式最为简单!但是你不能通过IP-in-IP隧道转发广播或者IPv6数据包。你只是连接了两个一般情况下无法直接通讯的IPv4网络而已。至于兼容性,这部分代码已经有很长一段历史了,它的兼容性可以上溯到1.3版的内核。据网上查到信息,Linux的IP-in-IP隧道不能与其他操作系统或路由器互相通讯。它很简单,也很有效。

  • GRE 需要内核模块 ip_gre.ko ,GRE是最初由CISCO开发出来的隧道协议,能够做一些IP-in-IP隧道做不到的事情。比如,你可以使用GRE隧道传输多播数据包和IPv6数据包。

  • sit 他的作用是连接 ipv4 与 ipv6 的网络。个人感觉不如gre使用广泛 。

用法

[root@xmxyk ~]#ip tunnel help
Usage: ip tunnel { add | change | del | show | prl | 6rd } [ NAME ]
          [ mode { ipip | gre | sit | isatap | vti } ] [ remote ADDR ] [ local ADDR ]
          [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]
          [ prl-default ADDR ] [ prl-nodefault ADDR ] [ prl-delete ADDR ]
          [ 6rd-prefix ADDR ] [ 6rd-relay_prefix ADDR ] [ 6rd-reset ]
          [ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]

Where: NAME := STRING
       ADDR := { IP_ADDRESS | any }
       TOS  := { STRING | 00..ff | inherit | inherit/STRING | inherit/00..ff }
       TTL  := { 1..255 | inherit }
       KEY  := { DOTTED_QUAD | NUMBER }

实例

如上图所示,有2台服务器eth0都是交换机互连,但eth1属于不同的网段,现在需要将2个网络打通。

在serverA上面做如下配置:

在serverB上面做如下配置:

这样配置之后,一条gre的隧道就打通了。同时,这2台的eth1的网络就可以互通了。从serverB上面Ping serverA,可以看到有4个包,一个request就有2个包,这是由于经过了gre,需要再次封装。

image

现在需要serverA 去访问serverC的资源,所以现在需要在serverB上面开启包转发功能,这样就可以通信了。

但是C上面就没有办法跟A通信了。

ipv6 to ipv4

首先在https://tunnelbroker.net/上面注册一个账号,然后create tunnel即可。

配置完成之后,可以在nginx开启监听ipv6的80口,就可以实现ipv6的通信了。

http://www.opstool.com/article/183

http://www.ttlsa.com/linux/create-a-gre-tunnel-linux/

http://www.361way.com/linux-tunnel/5199.html

https://wiki.linuxfoundation.org/networking/tunneling

https://onebitbug.me/2014/06/03/building-a-gateway-tunnel/

Last updated

Was this helpful?