{"id":19268582,"url":"https://github.com/moolen/vpr","last_synced_at":"2026-06-20T05:31:37.236Z","repository":{"id":146316804,"uuid":"115874240","full_name":"moolen/vpr","owner":"moolen","description":"vpn router","archived":false,"fork":false,"pushed_at":"2017-12-31T16:36:44.000Z","size":4,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-23T19:46:25.912Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moolen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-12-31T16:35:42.000Z","updated_at":"2017-12-31T16:36:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"e67503d9-43c0-4079-b860-1db101cf03a2","html_url":"https://github.com/moolen/vpr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/moolen/vpr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fvpr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fvpr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fvpr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fvpr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moolen","download_url":"https://codeload.github.com/moolen/vpr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fvpr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34558893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-09T20:16:44.979Z","updated_at":"2026-06-20T05:31:37.221Z","avatar_url":"https://github.com/moolen.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VPR\nMinimalistic Point-to-Point VPN\n\n## USAGE\n\n```\nUsage of ./vpr:\n  -dev=\"vpr0\": tun device name\n  -key=\"\": key used for authentication with length of 16/24/32 bytes\n  -local=\"\": local address of the tun interface: e.g. 10.0.1.83/24\n  -loglevel=\"info\": set the loglevel\n  -port=2821: UDP port\n  -remote=\"\": Remote server (external) IP like 87.13.2.44\n  -route=\"\": adds a local route to a remote network routed through the TUN device\n```\n\n## SETUP\nGoal: We want to establish a secure tunnel between two (public) endpoints: *left* and *right*. Consider the following network plan \n\n```\n+-------------------------------------------------------------------------------------------------------------------+\n|                                                                                                                   |\n|                                                                                                                   |\n|                                         192.168.122.0/24                                                          |\n|                    +------+                                    +--------+                                         |\n|   192.168.122.3/24 |      |  +-------------------------------+ |        |  192.168.122.254/24                     |\n|        10.0.0.1/24 | left +--+    ENCRYPTED IP-IN-UDP        +-+  right |  10.0.1.1/24                            |\n|                    |      |  +-------------------------------+ |        |                                         |\n|                    +------+                                    +--------+                                         |\n|                        |                                           |                                              |\n|        +----------------------+                                 +------------------------+                        |\n|        |   left internal net  |    10.0.0.0/24                  |   right internal net   |    10.0.1.0/24         |\n|        +----------------------+                                 +------------------------+                        |\n|                |                                                         |                                        |\n|             +---------------+                                    +------------------+                             |\n|             |               |                                    |                  |                             |\n|             |   left node X |   10.0.0.10/24                     |   right node X   |     10.0.1.10/24            |\n|             |               |                                    |                  |                             |\n|             |               |                                    |                  |                             |\n|             +---------------+                                    +------------------+                             |\n|                                                                                                                   |\n+-------------------------------------------------------------------------------------------------------------------+\n```\n\nWe can start this application on the left node like this:\n`./vpr -local 10.0.0.1/24 -key 1234123412341234 -remote 192.168.122.3 -route 10.0.1.0/24 -loglevel debug`\n\n\nSimilarly on the right node:\n`./vpr -local 10.0.1.1/24 -key 1234123412341234 -remote 192.168.122.254 -route 10.0.0.0/24 -loglevel debug`\n\n\nAnd then we can start pinging *from* a right node:\n`$ ping 10.0.0.10`\n\nOr a left node:\n`$ ping 10.0.1.10`\n\n## Docker\nYou can build\u0026run a container with the following commands:\n```\nsudo docker build -t test/vpr .\nsudo docker run -it -e REMOTE=87.14.33.12 --cap-add=NET_ADMIN --device=/dev/net/tun test/vpr\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoolen%2Fvpr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoolen%2Fvpr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoolen%2Fvpr/lists"}