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