Re: Issue with GRE tunnel, created with "local any" on kernel 3.14

Dmitry Popov
2014-07-18T18:32:09Z

On Fri, 18 Jul 2014 17:01:23 +0400
Sergey Popov <pinkbyte@gentoo.org> wrote:

> Hi. I have updated kernel on one of my servers to 3.14 and hit strange
> issue:

> serv1(172.30.0.100) <-> serv2(172.30.0.251)

> Gre tunnel(serv1):
> ip tunnel add tun_test mode gre remote 172.30.0.251 local any ttl 225
> ifconfig tun_test 192.168.0.1/30
>
> Gre tunnel(serv2):
> ip tunnel add tun_test mode gre remote 172.30.0.100 local any ttl 225
> ifconfig tun_test 192.168.0.2/30

> 16:49:39.340971 IP 0.0.0.0 > 172.30.0.100: GREv0, length 88: IP
> 192.168.0.2 > 192.168.0.1: ICMP echo request, id 5259, seq 7, length 64

Hi!

It seems we have this issue since 7d442fab0 (ipv4: Cache dst in tunnels).
It is in ip_tunnel_xmit: fl4 is initialized with saddr = 0 in
init_tunnel_flow(&fl4, protocol, dst, ...), net/ipv4/ip_tunnel.c:610,
and isn't changed until iptunnel_xmit(skb->sk, ...), line 677, because
connected = true and rt is almost always cached.

I have no patch to fix this issue, but as a workaround, you can use
ip tunnel change tun_test tos inherit.