I’m trying to interconnect two router, one mikrotik (routeros 5 beta) and a classical Linux router, over the internet, through an Ethernet Over IP tunnel (I know, it’s unsecure ).
On routerboard side, I’ve created this kind of tunnel in interfaces/eoip sub-section:
ip link add gre1 type gretap remote PUBLIC_IP_ADDRESS_OF_ROUTERBOARD
If I assign IP addresses to respective interfaces on each router, they fail to ping (no response to ARP requests).
Having sniffed the traffic on each router, several issues have emerged:
Routeros send his GRE packets with “Version 1” header, according to RFC, GreV1 is only used for pptp tunnels, all other trafic needs “Version 0”, that seems to be a problem…
Is “key” option of iproute equivalent of tunnel-id option of routeros ?
Finally, how to interconnect these two routers between them using an EOIP tunnel ?
Seems like version 5.0 can do only IP over GRE over IPv4. Not Ethernet over GRE yet. You won’t be able to put a GRE tunnel interface into a bonding for example. This show that it is a level 3 interface. Not level 2.
GRE is a generic tunnel. So changing the protocol descriptor, it is possible to change the tunneled protocol. Protocol descriptor (ETHER Type) follow RFC 1700. It is 0x800 for IPv4, 0x86DD for IPv6.
For Ethernet bridging over GRE, Ether type 0x6558 should be used (Transparent Ethernet Bridge). This is supported by Linux 2.6.
GRE has been modified over time, so there could be some compatibility problems. (see RFC 1701, 1702, 2784, 2890).
I hope we’ll see GRE bridging for IPv4 and IPv6 transport for final router OS 5.0. Do not seem complicated to implement, as all the glue is in Router OS.