Linux教程

Linux 隧道接口 介绍

本文主要是介绍Linux 隧道接口 介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  简介    

 IP隧道是两个网络之间的互联网协议(IP)网络通信通道。它被用来通过包的封装来传输另一个网络协议。

    Linux支持许多类型的通道,简要介绍Linux内核中常用的隧道接口。没有代码分析,只是简单介绍接口及其在Linux上的使用。任何有网络背景的人都可能对这篇博客文章感兴趣。tunnel接口列表可以通过下发iproute2命令ip link help获取。具体的隧道配置帮助也可以通过ip link Help 命令获取。

    隧道的简单形式如下 

类型   outerinner原载荷 

 

  Tunnel 类型与说明 

Tunnel/Link TypeOuter HeaderEncapsulate HeaderInner Header
ipipIPv4NoneIPv4
sitIPv4NoneIPv4/IPv6
ip6tnlIPv6NoneIPv4/IPv6
vitIPv4IPsecIPv4
vit6IPv6IPsecIPv6
greIPv4GREIPv4/IPv6
gretapIPv4GREEther + IPv4/IPv6
ip6greIPv6GREIPv4/IPv6
ip6gretapIPv6GREEther + IPv4/IPv6
fouIPv4/IPv6UDPIPv4/IPv6/GRE
gueIPv4/IPv6UDP + GUEIPv4/IPv6/GRE
geneveIPv4/IPv6UDP + GeneveEther + IPv4/IPv6
erspanIPv4GRE + ERSPANIPv4/IPv6
ip6erspanIPv6GRE + ERSPANIPv4/IPv6

IPIP Tunne

IPIP隧道,顾名思义,是在RFC 2003中定义的IP over IP隧道。

确认是否存在ipip驱动

root@AllstarOS:/admin/ipv6# lsmod |grep ipip
ip_tunnel              12273  4 sit,ip_gre,ip_vti,ipip
ipip                    4748  0 
tunnel4                 2197  3 sit,xfrm4_tunnel,ipip

ipip 隧道配置

On Server A:
# ip link add name ipip0 type ipip local <SERVER_A_v4_ADDR> remote <SERVER_B_v4_ADDR>
# ip link set ipip0 up
# ip addr add <SERVER_A_INTERNAL_v4_ADDR>/24 dev ipip0
Add a remote internal subnet route if the endpoints don't belong to the same subnet
# ip route add <SERVER_B_INTERNAL_v4_SUBNET>/24 dev ipip0

On Server B:
# ip link add name ipip0 type ipip local <SERVER_B_v4_ADDR> remote <SERVER_A_v4_ADDR>
# ip link set ipip0 up
# ip addr add <SERVER_B_INTERNAL_V4_ADDR>/24 dev ipip0
# ip route add <SERVER_A_INTERNAL_v4_SUBNET>/24 dev ipip0

确认防火墙配置

   

SIT Tunnel

驱动确认 

root@AllstarOS:/admin/ipv6# lsmod |grep  sit
ip_tunnel              12273  4 sit,ip_gre,ip_vti,ipip
sit                    14835  0 
tunnel4                 2197  3 sit,xfrm4_tunnel,ipip

 

sit 配置

A端 

ip tunnel add sittun mode sit local a.a.a.a remote b.b.b.b ttl 64 dev ens32
# 添加本地隧道端ipv6地址
ip addr add dev sittun 240e:aaaa:aaaa:aaaa::a/127
#添加缺省路由,就是出口网关
ip -6 route add default via 出口ipv6网关
# 添加路由回去的路由,下一跳指向client隧道地址
ip -6 route add 240e:096c:0200:0a11::/64 via 240e:096c:0200:0a10::b
# 开启网卡
ip link set dev sittun up

B端

ip tunnel add sittun mode sit local b.b.b.b remote a.a.a.a ttl 64 dev ens160
ip addr add dev sittun 240e:aaaa:aaaa:aaaa::b/127
ip -6 route add default via 240e:aaaa:aaaa:aaaa::a
ip link set dev sittun up

注意事项

开启ipv6转发功能,可以在/etc/sysctl.conf里面添加配置文件。
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.ens32.accept_ra=2


ip6tables -I  FORWARD -i sittun -j ACCEPT
ip6tables -I  FORWARD -o sittun -j ACCEPT

确认:可以通过 在 A端ping B端的ipv6地址确认

 

这篇关于Linux 隧道接口 介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!