其实抛开Open vSwitch,Linux自己也是可以做ipip和gre隧道的。

场景: 有两个网段

  • 两台Linux机器分别充当GW

  • host1(内网网段10.42.1.0/24,外网ip:240.101.83.2,内网IP:10.42.1.1)

  • host2(内网网段10.42.2.0/24,外网ip:251.4.92.217,内网Ip:10.42.2.1)

一、IPIP

在两边的机器同时加载ipip模块

[root@host]# modprobe ipip 

在host1上操作:

[root@host1]# ip tunnel add mytun mode ipip remote 251.4.92.217 local 240.101.83.2 ttl 255
[root@host1]# ifconfig mytun 10.42.1.2
[root@host1]# route add -net 10.42.2.0/24 dev mytun

在host2上操作:

[root@host2]# ip tunnel add mytun mode ipip remote 240.101.83.2 local 251.4.92.217 ttl 255
[root@host2]# ifconfig tun10 10.42.2.2
[root@host2]# route add -net 10.42.1.0/24 dev mytun 

这样分别在host1和host2上ping对方ip,互相能通就ok了。

如果机器是Linux 2.2x以上的内核,就更简单了: host1上运行:

[root@host1]# ifconfig tun10 10.42.1.1 pointopoint 251.4.92.217
[root@host1]# route add -net 10.42.2.0/24 dev tun10 

host2上运行:

[root@host2]# ifconfig tun10 10.42.2.1 pointopoint 240.101.83.2
[root@host2]# route add -net 10.42.1.0/24 dev tun10 

就可以了。

注意打开两台机器的ip转发:

[root@host]# echo "1" > /proc/sys/net/ipv4/ip_forward 

如果要清除配置,在两台机器上运行如下命令即可:

[root@host]# ifconfig mytun down
[root@host]# ip tunnel del mytun

The kernel will very politely clean up your routing table for you when the interface goes away.

GRE stands for Generic Routing Encapsulation. Like IPIP tunneling, GRE is an unencrypted encapsulation protocol. The main advantage of using GRE instead of IPIP are that it supports multicast packets and that it will also inter operate with Cisco routers.

二、GRE 在两边的机器同时加载ip_gre模块

[root@host]# modprobe ip_gre

在host1上操作:

[root@host1]# ip tunnel add gre0 mode gre remote 251.4.92.217 local 240.101.83.2 ttl 255
[root@host1]# ip addr add 10.42.1.2 dev gre0
[root@host1]# ip link set gre0 up 
[root@host1]# ip route add 10.42.2.0/24 dev gre0 

在host2上操作:

[root@host]# ip tunnel add gre0 mode gre remote 240.101.83.2 local 251.4.92.217 ttl 255
[root@host]# ip addr add 10.42.2.2 dev gre0
[root@host]# ip link set gre0 up
[root@host]# ip route add 10.42.1.0/24 dev gre0 

如果要清除配置,在两台机器上运行如下命令即可:

[root@host]# ip link set gre0 down
[root@host]# ip tunnel del gre0
comments powered by Disqus