I've read this blog post, which said that "Unlike some other protocols, the source for GRE packets cannot be faked or spoofed." But why?
What is preventing me from setting an arbitrary source IP in any of the IP headers? If I have the following setup:
------------- 1.2.3.4 5.6.7.8 -------------
| Network A |———————————————————————————————| Network B |
| 10.1/16 | | 10.2/16 |
------------- -------------
If I understood correctly, an attacker could send a crafted GRE packet with:
Outer IP: Src 1.2.3.4, Dst 5.6.7.8
Inner IP: Src 10.1.0.2, Dst 10.2.5.5
The border router of Network B should have no way of detecting that this packet is malicious and doesn't originate from Network A and will happily forward it into its network.
Did I miss something?
Further question: If I want to authenticate my peer, I could use IPSec without encryption instead of GRE, right?