Sen descrición

Ambroz Bizjak dbf0d4aa9c README.md: Remove outdated installation chapter %!s(int64=8) %!d(string=hai) anos
arpprobe 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
base 9314b91783 Refactoring using MemRef. %!s(int64=11) %!d(string=hai) anos
blog_generator a21e23fe8a port to compile with MSVC %!s(int64=13) %!d(string=hai) anos
bproto a21e23fe8a port to compile with MSVC %!s(int64=13) %!d(string=hai) anos
bproto_generator 3291a4713e bproto_generator: fix aliasing issues %!s(int64=13) %!d(string=hai) anos
client 93137c8b28 Use GNUInstallDirs for controlling install destinations %!s(int64=9) %!d(string=hai) anos
cmake af505a92a2 system: add a BReactor implementation using the GLib event loop %!s(int64=14) %!d(string=hai) anos
dhcpclient 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
dostest 47431d77c0 add some programs for playing with DoS attacks on TCP %!s(int64=13) %!d(string=hai) anos
examples 347fa1a7a5 ncd: Store the NCDStingIndex pointer in NCDValMem. %!s(int64=10) %!d(string=hai) anos
flooder 93137c8b28 Use GNUInstallDirs for controlling install destinations %!s(int64=9) %!d(string=hai) anos
flow faa7a69c48 compile PIC versions of internal libraries, to be used by NCD plugins %!s(int64=13) %!d(string=hai) anos
flowextra 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
generated 2d242ebc89 ncd: Permit functions with have zero arguments. %!s(int64=11) %!d(string=hai) anos
lemon 20d7a01ad9 Add NCD, the Network Configuration Daemon %!s(int64=15) %!d(string=hai) anos
lime 198d6cd4b8 Initial import %!s(int64=15) %!d(string=hai) anos
lwip ed51311344 tun2socks: Call the other lwip timer functions that should be %!s(int64=8) %!d(string=hai) anos
misc ffd16e27d0 Fix bug UDP checksum calculation. %!s(int64=9) %!d(string=hai) anos
ncd 432f2ba511 NCD: Fix evdev event code names with newer headers. %!s(int64=9) %!d(string=hai) anos
ncd-request 93137c8b28 Use GNUInstallDirs for controlling install destinations %!s(int64=9) %!d(string=hai) anos
nspr_support 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
predicate 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
protocol ed6449d06a tun2socks: IPv6 support. Includes updated lwIP version and udpgw program. %!s(int64=13) %!d(string=hai) anos
random 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
scripts 4d020a06ed scripts/copy_nss: copy programs too %!s(int64=15) %!d(string=hai) anos
security 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
server 93137c8b28 Use GNUInstallDirs for controlling install destinations %!s(int64=9) %!d(string=hai) anos
server_connection 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
socksclient 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
stringmap 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
structure 194edaec18 structure: Vector: Reduce interface. %!s(int64=11) %!d(string=hai) anos
system 43ba4edc35 BDatagram: Remove error messages about failed send %!s(int64=8) %!d(string=hai) anos
tests 93bc612a21 get rid of some warnings %!s(int64=13) %!d(string=hai) anos
threadwork e4c152027c Fix possible compile error after switch to pthread_sigmask. %!s(int64=9) %!d(string=hai) anos
tun2socks ed51311344 tun2socks: Call the other lwip timer functions that should be %!s(int64=8) %!d(string=hai) anos
tuntap 3940ed01b4 Fix TUN/TAP initialization with newer TAP-Windows. %!s(int64=9) %!d(string=hai) anos
udevmonitor 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
udpgw 93137c8b28 Use GNUInstallDirs for controlling install destinations %!s(int64=9) %!d(string=hai) anos
udpgw_client 5153894f43 Use badvpn_add_library for all internal libraries. %!s(int64=11) %!d(string=hai) anos
BUILD-WINDOWS-old.txt d72d798d66 Finishing Nix build method for Windows. %!s(int64=9) %!d(string=hai) anos
BUILD-WINDOWS.md 9e02de1606 Replace windows build instructions with VS/CMake %!s(int64=8) %!d(string=hai) anos
CMakeLists.txt 9e3d26a81f Remove badvpn-tunctl %!s(int64=8) %!d(string=hai) anos
COPYING 0d99d6a26a switch to using the New BSD License %!s(int64=14) %!d(string=hai) anos
ChangeLog 752c6b492b version 1.999.130 %!s(int64=11) %!d(string=hai) anos
README.md dbf0d4aa9c README.md: Remove outdated installation chapter %!s(int64=8) %!d(string=hai) anos
badvpn-win32.nix d72d798d66 Finishing Nix build method for Windows. %!s(int64=9) %!d(string=hai) anos
badvpn.7 0d99d6a26a switch to using the New BSD License %!s(int64=14) %!d(string=hai) anos
badvpn.nix 1be45b445d Nix expressions: Separate the package function from the composition. %!s(int64=11) %!d(string=hai) anos
blog_channels.txt 462ed77f14 ncd: Implement object reference infrastructure and objref module. %!s(int64=11) %!d(string=hai) anos
build-win32.nix d72d798d66 Finishing Nix build method for Windows. %!s(int64=9) %!d(string=hai) anos
build.nix 1be45b445d Nix expressions: Separate the package function from the composition. %!s(int64=11) %!d(string=hai) anos
compile-tun2socks.sh 6ab97ef3bc Fixup compile-tun2socks.sh, fix name %!s(int64=8) %!d(string=hai) anos
compile-udpgw.sh 81b2c18562 Fix udpgw compile script as well %!s(int64=8) %!d(string=hai) anos
fix_flex.php a21e23fe8a port to compile with MSVC %!s(int64=13) %!d(string=hai) anos
generate_files bb9ca1fe73 ncd: rename NCDValue{Generator,Parser} to NCDVal{Generator,Parser} %!s(int64=13) %!d(string=hai) anos

README.md

BadVPN

Introduction

In this project I host some of my open-source networking software. All of the software is written in C and utilizes a custom-developed framework for event-driven programming. The extensive code sharing is the reason all the software is packaged together. However, it is possible to compile only the required components to avoid extra dependencies.

NCD programming language

NCD (Network Configuration Daemon) is a daemon and programming/scripting language for configuration of network interfaces and other aspects of the operating system. It implements various functionalities as built-in modules, which may be used from an NCD program wherever and for whatever purpose the user needs them. This modularity makes NCD extremely flexible and extensible. It does a very good job with hotplugging in various forms, like USB network interfaces and link detection for wired devices. New features can be added by implementing statements as C-language modules using a straightforward interface.

Tun2socks network-layer proxifier

The tun2socks program "socksifes" TCP connections at the network layer. It implements a TUN device which accepts all incoming TCP connections (regardless of destination IP), and forwards the connections through a SOCKS server. This allows you to forward all connections through SOCKS, without any need for application support. It can be used, for example, to forward connections through a remote SSH server.

Peer-to-peer VPN

The VPN part of this project implements a Layer 2 (Ethernet) network between the peers (VPN nodes). The peers connect to a central server which acts as a communication proxy allowing the peers to establish direct connections between each other (data connections). These connections are used for transferring network data (Ethernet frames), and can be secured with a multitude of mechanisms. Notable features are:

  • UDP and TCP transport
  • Converges very quickly after a new peer joins
  • IGMP snooping to deliver multicasts efficiently (e.g. for IPTV)
  • Double SSL: if SSL is enabled, not only do peers connect to the server with SSL, but they use an additional layer of SSL when exchanging messages through the server
  • Features related to the NAT problem:
    • Can work with multiple layers of NAT (needs configuration)
    • Local peers inside a NAT can communicate directly
    • Relaying as a fallback (needs configuration)

Documentation

  • [NCD] - Introduction to the NCD language.
  • [badvpn] - General description of BadVPN and its features.
  • [Examples] - Quick guide to setting up a working VPN.
  • [badvpn_server], [badvpn_client] - Documentation of individual programs.

Requirements

NCD only works on Linux. Tun2socks works on Linux and Windows. The P2P VPN works on Linux, Windows and FreeBSD (not tested often).

License

The BSD 3-clause license as shown below applies to most of the code.

Copyright (c) 2009, Ambroz Bizjak <ambrop7@gmail.com>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. Neither the name of the author nor the
   names of its contributors may be used to endorse or promote products
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

List of third-party code included in the source:

  • lwIP - A Lightweight TCP/IP stack. License: lwip/COPYING