Might I just ask: to what extent does this overlap with OBD2 access, for which adapters are readily available?
OBD2 supports 5 communication protocols which also vary electrically on physical level. Only ISO 15765 uses CAN. CAN has variants based on identifier length, and latest edition even allows flexible data rate. There are also higher level protocols built on top of CAN. For example J1939 is used in trucks/buses/heavymachineryvehicles, or CANopen which is popular in automation.
OBD2 adapters usually support all car protocols. If your OBD2 adapter supports CAN and it is supported by linux (for example there is 3rd party socketcan driver for popular ELM327), and your car uses CAN interface on OBD2 connector, then you can make your own socketcan application, or use can-utils, wireshark and other tools for packet sniffing, receiving and sending.
You can do the same without OBD2 adapter if you have CAN adapter supported by socketcan, your car uses CAN interface on OBD2 connector, and you do proper wiring from your adapter to ODB2 connector.
Still actual read for people interested in car hacking:
https://makezine.com/2016/04/08/car-hacking-tools-trade/But CAN is not used only in vehicles. On electrical level it is based on very robust RS485, and because of very, very clever addressing scheme it allows multi masters on CAN network without any collisions and overhead. BOSCH really has some very clever engineers. Because of it's robustness, range, scalability and noise immunity it is used in vehicles, microcontrollers, programmable logic controllers, robots, home automation and many other places.