Compare commits

..

6 Commits

Author SHA1 Message Date
Dennis Schwerdel 4d992d29c8 Document statsd support 2020-06-30 17:38:48 +02:00
Dennis Schwerdel 0cead0fd08 Allow to use minus instead of underscore 2020-06-30 17:38:33 +02:00
Dennis Schwerdel 94c80acae1 Merge branch 'master' of github.com:dswd/vpncloud 2020-06-30 17:14:52 +02:00
dswd 13a766112d
Merge pull request #71 from dswd/dependabot/cargo/cc-1.0.56
Bump cc from 1.0.55 to 1.0.56
2020-06-30 17:14:23 +02:00
dependabot[bot] 0fbf0bf085
Bump cc from 1.0.55 to 1.0.56
Bumps [cc](https://github.com/alexcrichton/cc-rs) from 1.0.55 to 1.0.56.
- [Release notes](https://github.com/alexcrichton/cc-rs/releases)
- [Commits](https://github.com/alexcrichton/cc-rs/compare/1.0.55...1.0.56)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-30 05:44:24 +00:00
Dennis Schwerdel 2fd100fd58 Planned breaking changes 2020-06-28 00:02:30 +02:00
4 changed files with 64 additions and 14 deletions

12
Cargo.lock generated
View File

@ -55,7 +55,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "cc"
version = "1.0.55"
version = "1.0.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@ -206,7 +206,7 @@ version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.55 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
"void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -218,7 +218,7 @@ version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.55 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
"void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -353,7 +353,7 @@ name = "ring"
version = "0.16.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.55 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.71 (registry+https://github.com/rust-lang/crates.io-index)",
"once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -674,7 +674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
name = "vpncloud"
version = "1.4.0"
dependencies = [
"cc 1.0.55 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
"daemonize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
"igd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -807,7 +807,7 @@ dependencies = [
"checksum boxfnonce 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5988cb1d626264ac94100be357308f29ff7cbdd3b36bda27f450a4ee3f713426"
"checksum bumpalo 3.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820"
"checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1"
"checksum cc 1.0.55 (registry+https://github.com/rust-lang/crates.io-index)" = "b1be3409f94d7bdceeb5f5fac551039d9b3f00e25da7a74fc4d33400a0d96368"
"checksum cc 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)" = "77c1f1d60091c1b73e2b1f4560ab419204b178e625fa945ded7b660becd2bd46"
"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
"checksum clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129"
"checksum daemonize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70c24513e34f53b640819f0ac9f705b673fcf4006d7aab8778bee72ebfc89815"

View File

@ -3,6 +3,8 @@
Due to semantic versioning, any breaking change after 1.0 requires a new major version number.
This is a list of breaking changes to do in such a case:
- Change default crypto to AES128
- Add strong crypto, change network protocol
- Negotiate crypto method per peer
- Make encryption the default, --unencrypted for no encryption
- Remove network-id parameter
- Remove port config option

View File

@ -13,9 +13,9 @@ use super::{
use siphasher::sip::SipHasher24;
use std::{
cmp::max,
hash::{Hash, Hasher},
net::{IpAddr, Ipv6Addr, SocketAddr},
cmp::max
net::{IpAddr, Ipv6Addr, SocketAddr}
};
@ -294,29 +294,43 @@ impl Config {
#[derive(Serialize, Deserialize, Debug, PartialEq, Default)]
pub struct ConfigFile {
#[serde(alias = "device-type")]
pub device_type: Option<Type>,
#[serde(alias = "device-name")]
pub device_name: Option<String>,
#[serde(alias = "device-path")]
pub device_path: Option<String>,
pub ifup: Option<String>,
pub ifdown: Option<String>,
pub crypto: Option<CryptoMethod>,
#[serde(alias = "shared-key")]
pub shared_key: Option<String>,
pub magic: Option<String>,
pub port: Option<u16>,
pub listen: Option<String>,
pub peers: Option<Vec<String>>,
#[serde(alias = "peer-timeout")]
pub peer_timeout: Option<Duration>,
pub keepalive: Option<Duration>,
#[serde(alias = "beacon-store")]
pub beacon_store: Option<String>,
#[serde(alias = "beacon-load")]
pub beacon_load: Option<String>,
#[serde(alias = "beacon-interval")]
pub beacon_interval: Option<Duration>,
pub mode: Option<Mode>,
#[serde(alias = "dst-timeout")]
pub dst_timeout: Option<Duration>,
pub subnets: Option<Vec<String>>,
#[serde(alias = "port-forwarding")]
pub port_forwarding: Option<bool>,
#[serde(alias = "pid-file")]
pub pid_file: Option<String>,
#[serde(alias = "stats-file")]
pub stats_file: Option<String>,
#[serde(alias = "statsd-server")]
pub statsd_server: Option<String>,
#[serde(alias = "statsd-prefix")]
pub statsd_prefix: Option<String>,
pub user: Option<String>,
pub group: Option<String>

View File

@ -48,7 +48,7 @@ vpncloud - Peer-to-peer VPN
*addr:port*. If the node is not started, the connection will be retried
periodically. This parameter can be repeated to connect to multiple peers.
*-s <subnet>*, *--subnet <subnet>*:
*-s <subnet>*, *--subnet <subnet>*::
The local subnets to use. This parameter should be in the form
*address/prefixlen* where address is an IPv4 address, an IPv6 address, or a
MAC address. The prefix length is the number of significant front bits that
@ -142,6 +142,13 @@ vpncloud - Peer-to-peer VPN
If set, periodically write statistics on peers and current traffic to the
given file. The file will be periodically overwritten with new data.
*--statsd-server <server>*::
If set, periodically send statistics on current traffic and some important
events to the given statsd server (host:port).
*--statsd-prefix <prefix>*::
Sets the prefix to use for all statsd entries. [default: **vpncloud**]
*--daemon*::
Spawn a background process instead of running the process in the foreground.
If this flag is set, the process will first carry out all the
@ -291,10 +298,12 @@ detailed descriptions of the options.
*dst_timeout*:: Switch table entry timeout in seconds. Same as *--dst-timeout*
*subnets*:: A list of local subnets to use. See *--subnet*
*port_forwarding*:: Whether to activate port forwardig. See *--no-port-forwarding*
*user*:: The name of a user to run the background process under. See *--user*
*group*:: The name of a group to run the background process under. See *--group*
*pid_file*:: The path of the pid file to create. See *--pid-file*
*stats_file*:: The path of the statistics file. See *--stats-file*
*user*:: The name of a user to run the background process under. Same as *--user*
*group*:: The name of a group to run the background process under. Same as *--group*
*pid_file*:: The path of the pid file to create. Same as *--pid-file*
*stats_file*:: The path of the statistics file. Same as *--stats-file*
*statsd_server*:: Server to report statistics to. Same as *--statsd-server*
*statsd_prefix*:: Prefix to use when reporting to statsd. Same as *--statsd-prefix*
=== Example
@ -349,6 +358,31 @@ suffix.
The commands are called in separate threads, so even longer running commands
will not block the node.
== STATSD SUPPORT
When a statsd server is configured (either via **--statsd-server** or the
config option **statsd_server**), VpnCloud sends out the following statistics
every minute.
Gauge values:
*peer_count*:: Current number of peers
*table_entries*:: Number of routing table / switch table entries
The following statistics consist of two keys: *.bytes* and *.packets* that hold
the values in bytes and packets. All values refer to the traffic during the
last minute:
*traffic.protocol.inbound*:: Complete incoming traffic with all peers
*traffic.protocol.outbound*:: Complete outgoing traffic with all peers
*traffic.payload.inbound*:: Incoming payload traffic with all peers
*traffic.payload.outbound*:: Outgoing payload traffic with all peers
*invalid_protocol_traffic*:: Invalid incoming protocol traffic
*dropped_payload*:: Outgoing traffic that could not be routed
All keys are prefixed by a common prefix. The prefix defaults to *vpncloud* but
can be changed via **--statsd-prefix** or the config option **statsd_prefix**.
== NETWORK PROTOCOL
The protocol of VpnCloud is kept as simple as possible to allow other