I've done similar things with UARTs over long distance- I was about to write about it, but I actually have it on github:
https://github.com/jhallen/joes-sandbox/tree/master/hw/lined...
CAN is interesting in that the protocol is pretty complex, but from software point of view it's just send_packet() and register a handler for receive packets. The annoying thing is that MCUs don't have built-in CAN line drivers.
A new thing is 1000BASE-T1- Gigabit Ethernet over a single twisted pair. This is supposed to be the future in the auto world..