GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - moby/vpnkit: A toolkit for embedding VPN capabilities in your application

BranchesTags
Open more actions menu

Latest commit

 

History

2,436 Commits
2,436 Commits

Folders and files

NameName
Last commit message
Last commit date
.circleci
.circleci
 
 
.github/workflows
.github/workflows
 
 
c
c
 
 
docs
docs
 
 
dune.lock
dune.lock
 
 
go
go
 
 
reports
reports
 
 
scripts
scripts
 
 
src
src
 
 
vendor
vendor
 
 
.dockerignore
.dockerignore
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.ocamlformat
.ocamlformat
 
 
.ocp-indent
.ocp-indent
 
 
.travis.yml
.travis.yml
 
 
CHANGES.md
CHANGES.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Dockerfile
Dockerfile
 
 
Dockerfile.test
Dockerfile.test
 
 
LICENSE
LICENSE
 
 
MAINTAINERS
MAINTAINERS
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
docker-bake.hcl
docker-bake.hcl
 
 
dune
dune
 
 
dune-project
dune-project
 
 
dune-workspace
dune-workspace
 
 
dune-workspace.ci
dune-workspace.ci
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 
vpnkit.opam
vpnkit.opam
 
 

Repository files navigation

VPN-friendly networking devices for HyperKit

Build Status (OSX)

Binary artefacts are built by CI:

  • MacOS
  • Windows

VPNKit diagram

VPNKit is a set of tools and services for helping HyperKit VMs interoperate with host VPN configurations.

Building on Unix (including Mac)

First install wget, opam, pkg-config, and dylibbundler using your package manager of choice.

Building with opam

If you are an existing opam user then you can either build against your existing opam package universe, or the custom universe contained in this repo.

To set up the OCaml build environment, type:

make ocaml

To install the OCaml dependencies, type:

make depends

To build:

make

When the build succeeds the vpnkit binary should be available in _build/install/default/bin/vpnkit.

Building with Dune

Alternatively you can use Dune package management to download and install the dependencies automatically:

dune build --workspace=dune-workspace.ci

When the build succeeds the vpnkit binary should be available in _build/install/default/bin/vpnkit.

You can also automatically build and execute the vpnkit binary:

dune exec --workspace=dune-workspace.ci vpnkit

Building on Windows

First install the OCaml environment with Cygwin. Note that although the Cygwin tools are needed for the build scripts, Cygwin itself will not be linked to the final executable.

Inside the OCaml64 (Cygwin) shell, unset the OPAMROOT environment and build by:

unset OPAMROOT
make

The first build will take a little longer as it will build all the package dependencies first.

When the build succeeds the vpnkit.exe binary should be available in the current directory.

Running with hyperkit

First ask vpnkit to listen for ethernet connections on a local Unix domain socket:

vpnkit --ethernet /tmp/ethernet --debug

Next ask com.docker.hyperkit to connect a NIC to this socket by adding a command-line option like -s 2:0,virtio-vpnkit,path=/tmp/ethernet. Note: you may need to change the slot 2:0 to a free slot in your VM configuration.

Why is this needed?

Running a VM usually involves modifying the network configuration on the host, for example by activating Ethernet bridges, new routing table entries, DNS and firewall/NAT configurations. Activating a VPN involves modifying the same routing tables, DNS and firewall/NAT configurations and therefore there can be a clash -- this often results in the network connection to the VM being disconnected.

VPNKit, part of HyperKit attempts to work nicely with VPN software by intercepting the VM traffic at the Ethernet level, parsing and understanding protocols like NTP, DNS, UDP, TCP and doing the "right thing" with respect to the host's VPN configuration.

VPNKit operates by reconstructing Ethernet traffic from the VM and translating it into the relevant socket API calls on OSX or Windows. This allows the host application to generate traffic without requiring low-level Ethernet bridging support.

Design

  • Using vpnkit as a default gateway: describes the flow of ethernet traffic to/from the VM
  • Port forwarding: describes how ports are forwarded from the host into the VM
  • Experimental transparent HTTP proxy: describes the experimental support for transparent HTTP(S) proxying

Licensing

VPNKit is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Contributions are welcome under the terms of this license. You may wish to browse the weekly reports to read about overall activity in the repository.

About

A toolkit for embedding VPN capabilities in your application

Resources

Readme
Apache-2.0 license

Contributing

Contributing
Activity
Custom properties

Stars

1.2k stars

Watchers

48 watching

Forks

213 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.