I have 4 linux box, connected one after another as shown below

machine 1 <-- Lan 1 172.13.0.* --> machine 2 <--lan 2 172.12.0.--> machine 3 <-- lan 3 172.16.0.--> machine 4

machine 1 is ping to machine 4 because i have used ip rule or ip route command in machine 2 and 3. machine 4 also pings to machine 1

I created tunnel between machine 2 and machine 3 with following commands and it is working fine, I can ping 10.0.0.21(machine 3) from 10.0.0.20(machine 2) and vice versa

on machine 3

ip tunnel add gtt0001 mode gre remote 172.12.0.50 local 172.12.0.1 ttl 255
ip link set gtt0001 up
ip addr add 10.0.0.21/24 dev gtt0001
ip route add 172.13.0.0/24 dev gtt0001

on machine 2

ip tunnel add gtt0002 mode gre remote 172.12.0.1 local 172.12.0.50 ttl 255
ip link set gtt0002 up
ip addr add 10.0.0.20 dev gtt0002
ip route add 172.17.0.0/24 dev gtt0002

I deleted this tunnel after testing

I used similar command in machine 1 and 4 as below but I cannot ping the tunnel

on machine 4

ip tunnel add gtt0001 mode gre remote 172.16.0.30 local 172.13.0.40 ttl 255
ip link set gtt0001 up
ip addr add 10.0.0.21/24 dev gtt0001
ip route add 172.16.0.0/24 dev gtt0001

on machine 1

ip tunnel add gtt0002 mode gre remote 172.13.0.40 local 172.16.0.30 ttl 255
ip link set gtt0002 up
ip addr add 10.0.0.20/24 dev gtt0002
ip route add 172.13.0.0/24 dev gtt0002

I cannot ping 10.0.0.20(machine 1) from 10.0.0.21(machine 4) There are no NAT rules in between, traffic is forwarded using ip route

What might be the reason???? Do we have to enable gre in any of the routers???

please help me.........

Regards Sanket