On Tue, Jun 17, 2025 at 08:09:01PM +0200, Manuel Kuklinski wrote:
> Hi!
>
> After banging my head over a problem (I can't seem to be able to
> successfully establish an IPv6 tunnel over IPv6 with gre(4)), I consulted
> chatgpt.com (I know, I know...). On there, the AI model states that
> gre(4) only supports tunneling over IPv4. After reading the man page, I
> came across the following paragraph:
>
> "The gre pseudo-device provides interfaces for tunnelling protocols
> across IPv4 and IPv6 networks using the Generic Routing Encapsulation
> (GRE) encapsulation protocol."
>
> I read this as IPv6 over IPv6 *is* possible; but at the same time, there
> is only a sysctl switch "net.inet.gre.allow", whereas other sysctl
> switches, enabling different IPv6 routing capabilities, use
> "net.inet6[...]". So?
>
> Thank you for your time and clarifying the issue...
i hope i can do better than your hallucination machine.
the net.inet.gre.allow=1 enables gre processing for both ipv4 and
ipv6.
gre(4) does support ipv6 both as the tunnel addresses and as the
tunelled traffic. i just verified it myself here:
dlg@bgp0 ~$ ifconfig gre6
gre6: flags=248051<UP,POINTOPOINT,RUNNING,MULTICAST,AUTOCONF6TEMP,AUTOCONF6>
mtu 1476
index 7 priority 0 llprio 6
encap: vnetid none txprio payload rxprio packet
groups: gre
tunnel: inet6 2001:db8:602:307:c153:217c:4841:6ec4 -->
2001:db8:602:307:2387:f6e:62ac:a02 ttl 64 nodf ecn
inet6 fe80::250:56ff:fea1:5dc3%gre6 --> prefixlen 64 scopeid 0x7
dlg@bgp1 ~$ ifconfig gre6
gre6: flags=248051<UP,POINTOPOINT,RUNNING,MULTICAST,AUTOCONF6TEMP,AUTOCONF6>
mtu 1476
index 8 priority 0 llprio 6
encap: vnetid none txprio payload rxprio packet
groups: gre
tunnel: inet6 2001:db8:602:307:2387:f6e:62ac:a02 -->
2001:db8:602:307:c153:217c:4841:6ec4 ttl 64 nodf ecn
inet6 fe80::250:56ff:fea1:aebe%gre6 --> prefixlen 64 scopeid 0x8
so if i run ping6 -c 3 fe80::250:56ff:fea1:5dc3%gre6 on bgp1 and
tcpdump on bgp0, i see this:
08:39:28.393009 2001:db8:602:307:2387:f6e:62ac:a02 >
2001:db8:602:307:c153:217c:4841:6ec4: gre fe80::250:56ff:fea1:aebe >
fe80::250:56ff:fea1:5dc3: icmp6: echo request [flowlabel 0x254]
08:39:28.393113 2001:db8:602:307:c153:217c:4841:6ec4 >
2001:db8:602:307:2387:f6e:62ac:a02: gre fe80::250:56ff:fea1:5dc3 >
fe80::250:56ff:fea1:aebe: icmp6: echo reply [flowlabel 0xe7]
08:39:29.395019 2001:db8:602:307:2387:f6e:62ac:a02 >
2001:db8:602:307:c153:217c:4841:6ec4: gre fe80::250:56ff:fea1:aebe >
fe80::250:56ff:fea1:5dc3: icmp6: echo request [flowlabel 0x254]
08:39:29.395114 2001:db8:602:307:c153:217c:4841:6ec4 >
2001:db8:602:307:2387:f6e:62ac:a02: gre fe80::250:56ff:fea1:5dc3 >
fe80::250:56ff:fea1:aebe: icmp6: echo reply [flowlabel 0xe7]
08:39:30.394720 2001:db8:602:307:2387:f6e:62ac:a02 >
2001:db8:602:307:c153:217c:4841:6ec4: gre fe80::250:56ff:fea1:aebe >
fe80::250:56ff:fea1:5dc3: icmp6: echo request [flowlabel 0x254]
08:39:30.394835 2001:db8:602:307:c153:217c:4841:6ec4 >
2001:db8:602:307:2387:f6e:62ac:a02: gre fe80::250:56ff:fea1:5dc3 >
fe80::250:56ff:fea1:aebe: icmp6: echo reply [flowlabel 0xe7]
the tunnel addresses must be local ips on each of the endpoints. tcpdump
is your friend.
cheers,
dlg