ipip隧道及其實現

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

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章