Git Product home page Git Product logo

vpngw's Introduction

What is vpngw?

vpngw is a project to build a VPN gateway and intranet setup for (potentially untrusted) users accessing the internet in a secure and private way.

High VPN throughput (>= 100MBit/s) and easy VPN usability were the main goals.

The project is currently mostly documentation and configuration / script examples. So there is nothing you can just install, but it at least will take you less time than me.

Applications

  • at home: for family, friends, visitors
  • easy VPN selection by choosing the right LAN / wireless LAN
  • later, when more stable: small hotels, restaurants, ...

Components

  • a VPN gateway router
    • uses Debian Linux on standard PC/Laptop hardware
    • relies on a external modem or router for internet access, does not deal with establishing a internet connection by itself
    • establishes one or multiple VPN tunnels to VPN providers
    • when using multiple VPNs, offers simple CPU and VPN throughput load distribution
  • LAN switch and wireless LAN access point
    • TP-Link WR-841N(D) with OpenWrt (same HW as often used by Freifunk project)
    • multiple wireless LAN networks (SSIDs) on 1 device, each VPN has specific SSID
    • multiple LAN ports, each VPN has a specific LAN port
    • separation of VPNs is done using VLANs
  • alternatively, Ubiquiti Access Points (UAP) + optional separate switch
    • UAPs have VLAN support and can be centrally managed
    • if you need wired ports for the users, use a manageable switch with VLANs

Links

vpngw's People

Contributors

thomaswaldmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

vpngw's Issues

debian stretch upgrade

Currently, vpngw is based on Debian 8 "Jessie", but long term it would be good to upgrade it to Debian 9 "Stretch".

I tried it once, but due to some obstacles I kept jessie in the end for now:

  • interface names are like enp0s25 by default in stretch
  • that is an annoyance because it depends on the hardware setup
  • there is a kernel option (grub) to get back "old style" eth0/eth1 interface names, but at the same time it is deprecated, so future looks not good for them
  • I tried using the new stuff and adding alias names like "wan", "lan", ... - but ran into troubles with vlan not working with that.

So the main open issue is how to set up networking with stretch so that the setup does not depend on hardware-dependant interface names. We don't want to change interface names in a lot of config files when moving to other hardware.

LAN perf tests with fritzbox

FritzBoxes like the 6591 have a internal iperf server that can be enabled for testing.

On the vpngw, use these commandlines:

iperf -c fritzbox-ip -p 4711 -u -t 60 -i 10 -b 1000M  # expected:  UDP ~1000Mbit/s
iperf -c fritzbox-ip -p 4711    -t 60 -i 10 -b 1000M  # expected:  TCP ~930Mbit/s

Client: thinkpad x270, i7-6600u, usb3 lan interface rtl8153, debian 10

shutdown on AC power loss

the gateway should shutdown automatically after some delay after AC power loss.

some minutes after a AC power loss is likely best (running a long time on battery might be pointless as the rest of the network infrastructure is not working without AC anyway).

enable ipv6

in vpngw, ipv6 was disabled for security reasons:

  • some vpn providers do not provide ipv6
  • if there is no ipv6 vpn support, there is some danger that ipv6 packets do not go over the vpn, potentially triggering issues that vpngw was designed to avoid
  • iirc, there currently is no ipv6 configuration at all on vpngw (routing, iptables/ferm)

to enable v6:

  • get clear about how to do it securely, adapt configuration
  • how to still support v4-only vpn providers?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.