jrouter/README.md

65 lines
2.1 KiB
Markdown
Raw Normal View History

2024-03-10 10:58:53 +11:00
# jrouter
2024-03-31 09:33:21 +11:00
Home-grown alternative implementation of Apple Internet Router 3.0
## Goals
* Full compatibility with Apple Internet Router 3.0
* Function on modern operating systems
* EtherTalk support
2024-04-27 21:45:45 +10:00
* Be observable (there's a HTTP server with a `/status` page)
2024-03-31 09:33:21 +11:00
TashTalk could be a stretch goal, if I can acquire one!
2024-05-05 18:21:31 +10:00
## Things that used to be caveats
* Previously it would listen for all EtherTalk traffic, regardless of destination.
Now it doesn't do that, which should help it co-exist with other routers on
the same host.
* You can configure an alternate Ethernet address if you are reusing the same
network interface for multiple different EtherTalk software.
* In addition to the configured EtherTalk network and zone, it now learns routes
and zones from other EtherTalk routers, and should share them across AURP.
* There's a status server. Browse to http://\[your router\]:9459/status to see
information about the state of jrouter.
2024-04-17 09:21:14 +10:00
## Caveats
Things I plan to fix Real Soon Now:
2024-04-27 21:45:45 +10:00
* Some packet types need splitting to fit within limits. Some of these aren't
2024-05-05 18:21:31 +10:00
implemented yet (mainly encapsulated). The unimplemented ones seem unlikely to
hit those limits unless you are running a lot of routers or zones locally.
2024-04-27 21:45:45 +10:00
* I plan to add a Prometheus metrics endpoint and at least add log levels /
verbosity config.
* The AURP implementation is mostly there, but not fully complete. The main
thing missing is sequence number checking.
2024-04-17 09:21:14 +10:00
Things I plan to fix At Some Point:
* For expediency I made it act as a _seed router_. At some point I might add
"soft seed" functionality.
2024-03-31 09:33:21 +11:00
## How to use
2024-04-27 21:45:45 +10:00
WARNING: It Sorta Works™
2024-04-15 11:38:30 +10:00
First, set up a `jrouter.yaml` (use the one in this repo as an example).
TODO: explain the configuration file
Building and running:
```shell
2024-04-15 11:42:12 +10:00
sudo apt install libpcap-dev
2024-04-15 11:38:30 +10:00
go install gitea.drjosh.dev/josh/jrouter@latest
sudo setcap 'CAP_NET_BIND_SERVICE=ep CAP_NET_RAW=ep' ~/go/bin/jrouter
~/go/bin/jrouter
```
* `NET_BIND_SERVICE` is needed to bind UDP port 387 (for talking between AIRs)
* `NET_RAW` is needed for EtherTalk
TODO: instructions for non-Linux machines