Auto routed full mesh overlay networks.
Project description
Aronet
Auto routed and full mesh overlay network with flexibility based on ipsec, srv6 and babel. Inspired by https://github.com/NickCao/ranet
Requirements
Linux:
- kernel >= 5.1
- enable vrf module
- firewall port: 6696(babel), 12025(default for node connectivity)
- some cli tools: iproute2, sysctl, nftables
- enable following sysctl parameters:
net.netfilter.nf_hooks_lwtunnel: let packets from srv6 tunnel be processed by netfilternet.ipv6.conf.all.forwardingnet.ipv4.ip_forwardnet.core.devconf_inherit_init_net: optional for network namespace mode, let netns inherit kernel parameters from its parent namespacenet.ipv4.tcp_l3mdev_accept: optional for vrf mode, let packets be forwarded from aronet vrf accept tcp trafficnet.ipv4.udp_l3mdev_accept: optional for vrf mode, let packets be forwarded from aronet vrf accept udp traffic
Usage
To run aronet, you need two files basically:
example config.json
config.json
config.json contains basic configuration for running aronet, example:
{
"private_key": "./test/config/moon/private.pem",
"organization": "example",
"common_name": "host-01",
"daemon": {
"prefixs": [
"192.168.128.1/24"
],
"use_netns": false,
"network": "fd66::1/64" # must be a v6 network with prefix less or equal to 64
},
# endpoints are some ip:port pairs for establishing tunnels with other nodes in a registry
"endpoints": [
{
"address": "1.1.1.1",
"port": 12025,
},
{
"address_family": "ip6",
"address": null,
"port": 12025,
"serial_number": 1
}
]
}
After aronet started, it will create a vrf device(or a network namespace if use netns mode) called aronet with address in daemon.network, then other nodes will route the traffic of daemon.prefixs to your node. The endpoints tell other nodes how to connect to your node.
Note that aronet will reserve the {daemon.network}:ffff::/80 range for internal usage. The majority of this range will be used for srv6 actions. And the ipv4 traffic will be routed via ipv6 light weight tunnel(ipv4 nexthop via ipv6).
example registry.json
registry.json
registry.json contains information of nodes in a mesh overlay network. And your nodes will connect to the nodes in registry.json. example:
[
{
"public_key": "-- raw pem of public key --",
"organization": "example",
"nodes": [
{
"common_name": "host-01",
"endpoints": [
{
"address": "2.2.2.2",
"port": 12345,
},
{
"address": "::1",
"port": 12345
}
],
"remarks": {
"prefixs": [
"192.168.128.1/24"
],
"network": "fd66::1/64"
}
}
]
},
{
"public_key": "-- raw pem of public key --",
"organization": "example2",
"nodes": [
{
"common_name": "host-01",
"endpoints": [
{
"address": "1.1.1.2",
"port": 12345
},
{
"address": "::1",
"port": 12345
}
],
"remarks": {
"prefixs": [
"192.168.129.1/24"
],
"network": "fd67::1/64"
}
}
]
}
]
The information of nodes is derived from your config.json. As a full example, see configurations under tests.
To launch aronet, firstly launch the daemon:
aronet daemon run -c /path/to/config.json
And then load the registry:
aronet load -r /path/to/registry.json
Explanation
VRF mode
VRF mode
network namespace mode
network namespace mode
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aronet-0.1b1.tar.gz.
File metadata
- Download URL: aronet-0.1b1.tar.gz
- Upload date:
- Size: 175.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
819a2541adc2925df49385677d595135fa3fc3a97964a1434f432ae5ee1737f8
|
|
| MD5 |
d9b1210d0f7b66777738420416be5dff
|
|
| BLAKE2b-256 |
251260031fec7a650455dd57eba69b6ffb3e10aa26b6640eedb900db40868f8a
|
Provenance
The following attestation bundles were made for aronet-0.1b1.tar.gz:
Publisher:
release.yaml on RMTT/aronet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aronet-0.1b1.tar.gz -
Subject digest:
819a2541adc2925df49385677d595135fa3fc3a97964a1434f432ae5ee1737f8 - Sigstore transparency entry: 180142381
- Sigstore integration time:
-
Permalink:
RMTT/aronet@91cfe717091c46fb9e2d17ed4c9786f42ad7a0f4 -
Branch / Tag:
refs/tags/v0.1-beta1 - Owner: https://github.com/RMTT
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@91cfe717091c46fb9e2d17ed4c9786f42ad7a0f4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aronet-0.1b1-py3-none-any.whl.
File metadata
- Download URL: aronet-0.1b1-py3-none-any.whl
- Upload date:
- Size: 9.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c217479ad256740aa38efeeff2113d1ea81b00bf1b5f56a7baa89cddacbae924
|
|
| MD5 |
cf4742921b3fe4b8bb0e1a5114d84fa2
|
|
| BLAKE2b-256 |
e6d38c0bc02b1ef73cf6dcaade35249eca5289df3a0e646cf0b6f6bbe12e874c
|
Provenance
The following attestation bundles were made for aronet-0.1b1-py3-none-any.whl:
Publisher:
release.yaml on RMTT/aronet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aronet-0.1b1-py3-none-any.whl -
Subject digest:
c217479ad256740aa38efeeff2113d1ea81b00bf1b5f56a7baa89cddacbae924 - Sigstore transparency entry: 180142388
- Sigstore integration time:
-
Permalink:
RMTT/aronet@91cfe717091c46fb9e2d17ed4c9786f42ad7a0f4 -
Branch / Tag:
refs/tags/v0.1-beta1 - Owner: https://github.com/RMTT
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@91cfe717091c46fb9e2d17ed4c9786f42ad7a0f4 -
Trigger Event:
push
-
Statement type: