Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gkbrk/smolmesh2
Packet routing over arbitrary peerings
https://github.com/gkbrk/smolmesh2
mesh mesh-networks p2p p2p-network packet-routing vpn
Last synced: 3 months ago
JSON representation
Packet routing over arbitrary peerings
- Host: GitHub
- URL: https://github.com/gkbrk/smolmesh2
- Owner: gkbrk
- Created: 2024-01-18T00:15:58.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-09-13T12:40:41.000Z (4 months ago)
- Last Synced: 2024-09-14T07:55:20.403Z (4 months ago)
- Topics: mesh, mesh-networks, p2p, p2p-network, packet-routing, vpn
- Language: Rust
- Homepage:
- Size: 57.6 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Smolmesh2
Smolmesh2 is a mesh networking tool written in Rust that allows nodes to communicate over various transports while maintaining a decentralized and resilient network structure. It supports Linux and Windows operating systems and includes several key features to facilitate seamless communication and network stability.
## Features
- **IPv4 and IPv6 Support:** Handles both IPv4 and IPv6 addresses.
- **Multiple Transports:** Supports legacy TCP connections, both for connecting and listening.
- **TUN/TAP Interface:** Integrates with TUN/TAP interfaces on both Linux and Windows to manage network traffic.
- **Packet Routing and Broadcasting:** Efficiently routes packets to their destinations and broadcasts node availability.## Commands
- **meshnode:** Runs the mesh node with the specified configuration.
- **name-to-ipv6:** Converts a node name to its corresponding IPv6 address.
- **make-random-ipv4:** Generates a random IPv4 address.
- **make-random-ipv6:** Generates a random IPv6 address.## Usage
To start a mesh node, run:
```
cargo run -- meshnode config.json
```
This will initialize the node using the configuration specified in `config.json`.## Configuration
The configuration file (`config.json`) should include details such as node name, IP addresses, and transport methods. Below is an example configuration:
```json
{
"node_name": "example_node",
"ipv4_addresses": ["192.168.1.1"],
"transports": [
{
"type": "legacy_tcp_connect",
"host": "example.com",
"port": 12345,
"key": "your_key_here"
},
{
"type": "legacy_tcp_listen",
"port": 54321,
"keys": ["key1", "key2"]
}
],
"linux_tuntap": true,
"windows_tuntap": false
}
```## Contributing
Contributions are welcome! Please open an issue or submit a pull request on GitHub. For major changes, please discuss them in an issue first to ensure they align with the project's goals.
Enjoy using SmolMesh2 to build decentralized and resilient networks!