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网络而已
GRE :需要内核模块 ip_gre.ko ,GRE是最初由CISCO开发出来的隧道协议,能够做一些IP-in-IP隧道做不到的事情。比如,你可以使用GRE隧道传输多播数据包和IPv6数据包。
sit : 其作用是连接 ipv4 与 ipv6 的网络
sit模块所在位置: /lib/modules/内核版本号/kernel/net/ipv6/sit.ko.xz
ipip模块所在位置: /lib/modules/内核版本号/kernel/net/ipv4/ipip.ko.xz
gre模块所在位置: /lib/modules/内核版本号/kernel/net/ipv4/gre.ko.xz
查看模块信息命令: modinfo 模块名称
如: modinfo sit
modinfo ip_gre
modinfo ipip
ip tunnel 配置:
这里使用ipip、sit ,只需要把modprobe后面的模块换掉,把ip tunnel 命令中mode后面的字符替换掉即可
ipv4网络中的配置:
a主机配置如下:
modprobe ipip
modprobe ip_gre
ip tunnel add tun0 mode gre remote 192.168.122.90 local 192.168.122.80 ttl 64
ip link set tun0 up
ip addr add 192.168.1.80 peer 192.168.2.90 dev tun0
ip route add 192.168.2.0/24 dev tun0
iptables -F
b主机配置如下:
modprobe ipip
modprobe ip_gre
ip tunnel add tun0 mode gre remote 192.168.122.80 local 192.168.122.90 ttl 64
ip link set tun0 up
ip addr add 192.168.2.90 peer 192.168.1.80 dev tun0
ip route add 192.168.1.0/24 dev tun0
iptables -F
iptables -F 也可以换成:
iptables -I INPUT -p gre -j ACCEPT 或CentOS7下执行
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -i eth0 -p gre -j ACCEPT
假如这边还有台主机C,C主机只有一块网卡,其IP为192.168.1.100,和a主机同在eth1网段,可以将a主机配置为一个简单的种由器,其可以访问b主机的IP 192.168.2.90 。只需要在a主机中做如下配置即可。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
注意:该场景下,需要将C主机的网关指向a主机 。
2、ipv6网络中的配置
两台主机的信息如下:
a. PC1 eth0:2001::1/64; eth1:192.168.1.1/24;
b. PC2 eth0:2001::2/64; eth1:192.168.2.1/24;
配置如下:
a主机配置
modprobe ip6_tunnel
ip -6 tunnel add tun0 mode ipip6 remote 2001::2 local 2001::1 ttl 64
ip link set tun0 up
ip addr add 192.168.1.1 peer 192.168.2.1 dev tun0
ip route add 192.168.2.0/24 dev tun0
iptables -F
b主机配置
modprobe ip6_tunnel
ip -6 tunnel add tun0 mode ipip6 remote 2001::1 local 2001::2 ttl 64
ip link set tun0 up
ip addr add 192.168.2.1 peer 192.168.1.1 dev tun0
ip route add 192.168.1.0/24 dev tun0
iptables -F
参考地址: http://www.361way.com/linux-tunnel/5199.html