{"id":17436092,"url":"https://github.com/fr13n8/raido","last_synced_at":"2025-04-16T03:34:48.148Z","repository":{"id":257826714,"uuid":"866590400","full_name":"fr13n8/raido","owner":"fr13n8","description":"VPN-like reverse proxy","archived":false,"fork":false,"pushed_at":"2025-04-14T20:11:03.000Z","size":5596,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T21:28:01.004Z","etag":null,"topics":["cybersecurity","golang","network","pivoting","proxy","tunneling","vpn"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fr13n8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-02T14:31:33.000Z","updated_at":"2025-04-14T20:10:59.000Z","dependencies_parsed_at":"2024-10-19T08:53:09.745Z","dependency_job_id":null,"html_url":"https://github.com/fr13n8/raido","commit_stats":null,"previous_names":["fr13n8/raido"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fr13n8%2Fraido","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fr13n8%2Fraido/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fr13n8%2Fraido/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fr13n8%2Fraido/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fr13n8","download_url":"https://codeload.github.com/fr13n8/raido/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249191302,"owners_count":21227539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cybersecurity","golang","network","pivoting","proxy","tunneling","vpn"],"created_at":"2024-10-17T10:02:10.872Z","updated_at":"2025-04-16T03:34:48.130Z","avatar_url":"https://github.com/fr13n8.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# \u003cimg align=\"center\" src=\"./doc/raido.png\" width=\"25%\"\u003e\n\n\u003c/div\u003e\n\n\u003ch3 align=\"center\"\u003e\n  Raido is a \"VPN-like\" reverse proxy with traffic tunneling via QUIC for accessing private networks.\n\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://fr13n8.github.io/blog/\"\u003e\u003cimg src=\"https://img.shields.io/badge/made%20by-fr13n8-blue.svg\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/go%20version-%3E=1.23-61CFDD.svg\" /\u003e\n  \u003cimg src=\"https://goreportcard.com/badge/github.com/fr13n8/raido\" /\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"100%\" src=\"./doc/diagram.svg\" /\u003e\n\u003c/div\u003e\n\nIn this diagram, the client side starts the service and the Raido proxy server on its side. Then the Agent is started on the server side to connect to our proxy server via the QUIC protocol. The client can then open a tunnel between the server, interact with local resources (access to local ports is provided by reserved addresses 240.0.0.0/4 that are generated for each tunnel when it is opened) and IP addresses of the same network where the server itself is located as if they were in the same network. Also, the Raido proxy server supports multi-connections and manual management of available addresses.\n\n---\n\n\u003e [!WARNING]\n\u003e **The functionality was tested only on Linux machines.**\\\n\u003e **The program may work unstable because there are no tests.**\n\n## Features\n\n- Application\n  - No Wireguard, SOCKS, Proxychains\n  - Userspace network stack with gVisor\n  - Traffic tunneling over QUIC\n  - Easy to use\n  - Possible to run in daemon mode\n  - Automatic management of **TUN** interfaces\n  - Self-signed certificates\n  - Pause and resume tunnels\n  - Loopback routing using network range (240.0.0.0/4)\n- Network\n  - TCP\n  - UDP\n  - IPv4\n  - IPv6\n\n## Requirements\n\n### Agent side\n\nBidirectional UDP access to proxy on one port.\n\n### Proxy side\n\nPrivileged access to create and configure the **TUN** interface.\n\n## Quick Start\n\n### Start the raido service\n\n```bash\nproxy ❯❯ raido --help      # help options\nproxy ❯❯ raido service run # for foreground mode\n```\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/run.gif\"\u003e\n\nOr you can install raido as daemon and start it.\n\n```bash\nproxy ❯❯ raido service --help  # servie help options\nproxy ❯❯ raido service install # install raido.service\nproxy ❯❯ raido service start   # start raido in daemon mode\nproxy ❯❯ raido service status  # check raido.service status\n```\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/service.gif\"\u003e\n\n### Start the raido proxy server\n\n```bash\nproxy ❯❯ raido proxy start # start proxy server by default on address 0.0.0.0:8787\n```\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/proxy.gif\"\u003e\n\n### Start agent on remote server\n\n```bash\nagent ❯❯ agent -pa 10.1.0.2:8787 -ch $(CERT_HASH)\n```\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/agent.gif\"\u003e\n\n### Check all connected agents\n\n```bash\nproxy ❯❯ raido agent list # print all agents and their available routes in a table\n```\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/agent_list.gif\"\u003e\n\n### Start tunneling to agent\n\n```bash\nproxy ❯❯ raido tunnel start --agent-id R6QXeSMXTL2attGG8YEsr6 # the command creates the tun interface and adds all routes\nproxy ❯❯ raido tunnel list\n```\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/tunnel.gif\"\u003e\n\nThat's it, now you can send requests directly to these addresses.\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/result.gif\"\u003e\n\n## Loopback routing: Access the local services of the remote host\n\n\u003e [!NOTE]\n\u003e **Each time a new tunnel is started, raido obtains an available IP address in the `240.0.0.0/4` range and adds it to the device's routes to forward requests for that address to the localhost services on the remote host.**\\\n\u003e **If necessary, you can remove and manually add an address from the `240.0.0.0/4` range**\n\nLets run simple http server with python cli on server host on port `8080`.\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/loopback_remote.gif\"\u003e\n\nAnd then from user host we can access this servere via loopback route.\n\n\u003cimg width=\"800\" alt=\"Example of pressing the arrow keys to navigate text\" src=\"./doc/loopback_user.gif\"\u003e\n\n## TODO\n\n- Think about a way to transmit ICMP packets without changing the gVisor code. (Maybe use agent to detect hosts using icmp-echo requests) ¯\\\\_(ツ)_/¯\n- Add new transport protocols for traffic tunneling\n- Add the ability to build chains of agents\n- Add multiplatform support\n- FIX BUGS!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffr13n8%2Fraido","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffr13n8%2Fraido","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffr13n8%2Fraido/lists"}