在配置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.129
ip link set ipip01 up
ip addr add 10.10.1.1/24 dev ipip01
Host B:
ip link add ipip01 type ipip local 192.168.1.129 remote 192.168.1.113
ip link set ipip01 up
ip addr add 10.10.1.2/24 dev ipip01
登录主机A,PING对端的10.10.1.2,验证隧道的连通性:
Host-A $ ping 10.10.1.2
使用tcpdump抓取的数据包如下,可见封装了两层IP头部信息:
查看外层IP头部信息,可见其协议号字段为4,即IPIP协议:
IPIP隧道与FOU封装
配置FOU封装或者GUE封装,需要首先加载FOU内核模块:
sudo modprobe fou
对于主机A,设置FOU封装模块接收端口号为6666:
ip fou add port 6666 ipproto 4
创建IPIP隧道,指定采用四层FOU封装,源端口号由系统自动选择,目的端口号为5555:
ip link add ipip01 type ipip local 192.168.1.113 remote 192.168.1.129 ttl 225 encap fou encap-sport auto encap-dport 5555 encap-csum encap-remcsum
ip link set ipip01 up
ip addr add 10.20.1.1/24 dev ipip01
对于主机B,设置FOU封装模块接收端口号为5555,此端口号必须与Host A配置的IPIP隧道的FOU封装目的端口号对应:
ip fou add port 5555 ipproto 4
创建IPIP隧道,指定采用四层FOU封装,源端口号由系统自动选择,目的端口号为6666,即主机A的FOU接收端口号:
ip link add ipip01 type ipip local 192.168.1.129 remote 192.168.1.113 ttl 225 encap fou encap-sport auto encap-dport 6666 encap-csum encap-remcsum
ip link set ipip01 up
ip addr add 10.20.1.2/24 dev ipip01
登录主机A,PING对端的10.10.1.2,验证隧道的连通性:
Host-A $ ping 10.10.1.2
使用tcpdump抓取的数据包如下,可见封装的外层IP头部信息和外层UDP头部,两端的UDP端口号:
查看UDP数据部分可见内层封装的IP头部信息,第一个字节为0x45,为IPv4,长度为20字节,源IP为0a 14 01 01(10.20.1.1),目的IP为0a 14 01 01(10.20.1.2):
IPIP隧道与GUE封装
对于主机A,设置GUE封装模块接收端口号为6666:
ip fou add port 6666 gue
创建IPIP隧道,指定采用四层GUE封装,源端口号由系统自动选择,目的端口号为5555:
ip link add ipip01 type ipip local 192.168.1.113 remote 192.168.1.129 ttl 225 encap gue encap-sport auto encap-dport 5555 encap-csum encap-remcsum
ip link set ipip01 up
ip addr add 10.20.1.1/24 dev ipip01
对于主机B,设置GUE封装模块接收端口号为5555,此端口号必须与Host A配置的IPIP隧道的GUE封装目的端口号对应:
ip fou add port 5555 gue
创建IPIP隧道,指定采用四层GUE封装,源端口号由系统自动选择,目的端口号为6666,即主机A的GUE接收端口号:
ip link add ipip01 type ipip local 192.168.1.129 remote 192.168.1.113 ttl 225 encap gue encap-sport auto encap-dport 6666 encap-csum encap-remcsum
ip link set ipip01 up
ip addr add 10.20.1.2/24 dev ipip01
登录主机A,PING对端的10.10.1.2,验证隧道的连通性:
Host-A $ ping 10.10.1.2
使用tcpdump抓取的数据包如下,可见封装的外层IP头部信息和外层UDP头部,两端的UDP端口号:
查看UDP数据部分可见,与FOU封装不同,GUE增加了4个字节的gue头部信息(00 04 00 00), 之后才是内层封装的IP头部信息,第一个字节为0x45,为IPv4,长度为20字节,源IP为0a 14 01 01(10.20.1.1),目的IP为0a 14 01 01(10.20.1.2):
END