mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-30 22:26:42 +00:00
Compare commits
4 Commits
v0.2.0-bet
...
v0.2.0-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b2c26847b | ||
|
|
595ea0d4f8 | ||
|
|
f714868fdd | ||
|
|
81821a1f39 |
@@ -69,8 +69,6 @@ nfpms:
|
|||||||
scripts:
|
scripts:
|
||||||
postinstall: "release_files/post_install.sh"
|
postinstall: "release_files/post_install.sh"
|
||||||
preremove: "release_files/pre_remove.sh"
|
preremove: "release_files/pre_remove.sh"
|
||||||
replacements:
|
|
||||||
arm6: armf
|
|
||||||
|
|
||||||
- maintainer: Wiretrustee <dev@wiretrustee.com>
|
- maintainer: Wiretrustee <dev@wiretrustee.com>
|
||||||
description: Wiretrustee client.
|
description: Wiretrustee client.
|
||||||
@@ -223,7 +221,7 @@ uploads:
|
|||||||
ids:
|
ids:
|
||||||
- deb
|
- deb
|
||||||
mode: archive
|
mode: archive
|
||||||
target: https://pkgs.wiretrustee.com/debian/pool/{{ .ArtifactName }};deb.distribution=stable;deb.component=main;deb.architecture={{ .Arch }}{{ if .Arm }}{{ .Arm }}{{ end }}
|
target: https://pkgs.wiretrustee.com/debian/pool/{{ .ArtifactName }};deb.distribution=stable;deb.component=main;deb.architecture={{ .Arch }}
|
||||||
username: dev@wiretrustee.com
|
username: dev@wiretrustee.com
|
||||||
method: PUT
|
method: PUT
|
||||||
- name: yum
|
- name: yum
|
||||||
|
|||||||
@@ -191,8 +191,12 @@ func runClient() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Info("stopped Wiretrustee client")
|
go func() {
|
||||||
cleanupCh <- struct{}{}
|
cleanupCh <- struct{}{}
|
||||||
|
}()
|
||||||
|
|
||||||
|
log.Info("stopped Wiretrustee client")
|
||||||
|
|
||||||
|
return ctx.Err()
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,6 +128,8 @@ func (conn *Connection) Open(timeout time.Duration) error {
|
|||||||
a, err := ice.NewAgent(&ice.AgentConfig{
|
a, err := ice.NewAgent(&ice.AgentConfig{
|
||||||
// MulticastDNSMode: ice.MulticastDNSModeQueryAndGather,
|
// MulticastDNSMode: ice.MulticastDNSModeQueryAndGather,
|
||||||
NetworkTypes: []ice.NetworkType{ice.NetworkTypeUDP4},
|
NetworkTypes: []ice.NetworkType{ice.NetworkTypeUDP4},
|
||||||
|
PortMin: 57830,
|
||||||
|
PortMax: 57830,
|
||||||
Urls: conn.Config.StunTurnURLS,
|
Urls: conn.Config.StunTurnURLS,
|
||||||
CandidateTypes: []ice.CandidateType{ice.CandidateTypeHost, ice.CandidateTypeServerReflexive, ice.CandidateTypeRelay},
|
CandidateTypes: []ice.CandidateType{ice.CandidateTypeHost, ice.CandidateTypeServerReflexive, ice.CandidateTypeRelay},
|
||||||
InterfaceFilter: func(s string) bool {
|
InterfaceFilter: func(s string) bool {
|
||||||
@@ -160,7 +162,7 @@ func (conn *Connection) Open(timeout time.Duration) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
conn.Status = StatusConnecting
|
conn.Status = StatusConnecting
|
||||||
log.Infof("trying to connect to peer %s", conn.Config.RemoteWgKey.String())
|
log.Debugf("trying to connect to peer %s", conn.Config.RemoteWgKey.String())
|
||||||
|
|
||||||
// wait until credentials have been sent from the remote peer (will arrive via a signal server)
|
// wait until credentials have been sent from the remote peer (will arrive via a signal server)
|
||||||
select {
|
select {
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ func (e *Engine) initializePeer(peer Peer) {
|
|||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warnln(err)
|
log.Warnln(err)
|
||||||
log.Warnln("retrying connection because of error: ", err.Error())
|
log.Debugf("retrying connection because of error: %s", err.Error())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
### Table of contents
|
### Table of contents
|
||||||
|
|
||||||
* [About Wiretrustee](#about-wiretrustee)
|
* [About Wiretrustee](#about-wiretrustee)
|
||||||
* [Why not just Wireguard?](#why-not-just-wireguard)
|
* [Why Wireguard with Wiretrustee?](#why-wireguard-with-wiretrustee)
|
||||||
* [Wiretrustee vs. Traditional VPN](#wiretrustee-vs-traditional-vpn)
|
* [Wiretrustee vs. Traditional VPN](#wiretrustee-vs-traditional-vpn)
|
||||||
* [High-level technology overview](#high-level-technology-overview)
|
* [High-level technology overview](#high-level-technology-overview)
|
||||||
* [Getting started](#getting-started)
|
* [Getting started](#getting-started)
|
||||||
@@ -16,36 +16,36 @@ There is no centralized VPN server with Wiretrustee - your computers, devices, m
|
|||||||
|
|
||||||
It literally takes less than 5 minutes to provision a secure peer-to-peer VPN with Wiretrustee. Check our [Quickstart Guide Video](https://www.youtube.com/watch?v=cWTsGUJAUaU) to see the setup in action.
|
It literally takes less than 5 minutes to provision a secure peer-to-peer VPN with Wiretrustee. Check our [Quickstart Guide Video](https://www.youtube.com/watch?v=cWTsGUJAUaU) to see the setup in action.
|
||||||
|
|
||||||
### Why not just Wireguard?
|
### Why Wireguard with Wiretrustee?
|
||||||
|
|
||||||
WireGuard is a modern and extremely fast VPN tunnel utilizing state-of-the-art [cryptography](https://www.wireguard.com/protocol/)
|
WireGuard is a modern and extremely fast VPN tunnel utilizing state-of-the-art [cryptography](https://www.wireguard.com/protocol/)
|
||||||
and Wiretrustee uses Wireguard to establish a secure tunnel between machines.
|
and Wiretrustee uses Wireguard to establish a secure tunnel between machines.
|
||||||
|
|
||||||
Built with simplicity in mind, Wireguard ensures that traffic between two machines is encrypted and flowing, however, it requires a few things to be done beforehand.
|
Built with simplicity in mind, Wireguard ensures that traffic between two machines is encrypted and flowing, however, it requires a few things to be done beforehand.
|
||||||
|
|
||||||
First, in order to connect, the machines have to be configured.
|
First, in order to connect, the machines have to be configured.
|
||||||
On each machine, you need to generate private and public keys and prepare a WireGuard configuration file.
|
On each machine, you need to generate private and public keys and prepare a WireGuard configuration file.
|
||||||
The configuration also includes a private IP address that should be unique per machine.
|
The configuration also includes a private IP address that should be unique per machine.
|
||||||
|
|
||||||
Secondly, to accept the incoming traffic, the machines have to trust each other.
|
Secondly, to accept the incoming traffic, the machines have to trust each other.
|
||||||
The generated public keys have to be pre-shared on the machines.
|
The generated public keys have to be pre-shared on the machines.
|
||||||
This works similarly to SSH with its authorised_keys file.
|
This works similarly to SSH with its authorised_keys file.
|
||||||
|
|
||||||
Lastly, the connectivity between the machines has to be ensured.
|
Lastly, the connectivity between the machines has to be ensured.
|
||||||
To make machines reach one another, you are required to set a WireGuard endpoint property which indicates the IP address and port of the remote machine to connect to.
|
To make machines reach one another, you are required to set a WireGuard endpoint property which indicates the IP address and port of the remote machine to connect to.
|
||||||
On many occasions, machines are hidden behind firewalls and NAT devices,
|
On many occasions, machines are hidden behind firewalls and NAT devices,
|
||||||
meaning that you may need to configure a port forwarding or open holes in your firewall to ensure the machines are reachable.
|
meaning that you may need to configure a port forwarding or open holes in your firewall to ensure the machines are reachable.
|
||||||
|
|
||||||
The undertakings mentioned above might not be complicated if you have just a few machines, but the complexity grows as the number of machines increases.
|
The undertakings mentioned above might not be complicated if you have just a few machines, but the complexity grows as the number of machines increases.
|
||||||
|
|
||||||
Wiretrustee simplifies the setup by automatically generating private and public keys, assigning unique private IP addresses, and takes care of sharing public keys between the machines.
|
Wiretrustee simplifies the setup by automatically generating private and public keys, assigning unique private IP addresses, and takes care of sharing public keys between the machines.
|
||||||
It is worth mentioning that the private key never leaves the machine.
|
It is worth mentioning that the private key never leaves the machine.
|
||||||
So only the machine that owns the key can decrypt traffic addressed to it.
|
So only the machine that owns the key can decrypt traffic addressed to it.
|
||||||
The same applies also to the relayed traffic mentioned below.
|
The same applies also to the relayed traffic mentioned below.
|
||||||
|
|
||||||
Furthermore, Wiretrustee ensures connectivity by leveraging advanced [NAT traversal techniques](https://en.wikipedia.org/wiki/NAT_traversal)
|
Furthermore, Wiretrustee ensures connectivity by leveraging advanced [NAT traversal techniques](https://en.wikipedia.org/wiki/NAT_traversal)
|
||||||
and removing the necessity of port forwarding, opening holes in the firewall, and having a public static IP address.
|
and removing the necessity of port forwarding, opening holes in the firewall, and having a public static IP address.
|
||||||
In cases when a direct peer-to-peer connection isn't possible all traffic is relayed securely between peers.
|
In cases when a direct peer-to-peer connection isn't possible, all traffic is relayed securely between peers.
|
||||||
Wiretrustee also monitors the connection health and restarts broken connections.
|
Wiretrustee also monitors the connection health and restarts broken connections.
|
||||||
|
|
||||||
There are a few more things that we are working on to make secure private networks simple. A few examples are ACLs, MFA and activity monitoring.
|
There are a few more things that we are working on to make secure private networks simple. A few examples are ACLs, MFA and activity monitoring.
|
||||||
@@ -64,17 +64,17 @@ Centralized VPNs imply all the traffic going through the central server causing
|
|||||||
Such systems require an experienced team to set up and maintain.
|
Such systems require an experienced team to set up and maintain.
|
||||||
Configuring firewalls, setting up NATs, SSO integration, and managing access control lists can be a nightmare.
|
Configuring firewalls, setting up NATs, SSO integration, and managing access control lists can be a nightmare.
|
||||||
|
|
||||||
Traditional centralized VPNs are often compared to a [castle-and-moat](https://en.wikipedia.org/wiki/Moat) model
|
Traditional centralized VPNs are often compared to a [castle-and-moat](https://en.wikipedia.org/wiki/Moat) model
|
||||||
in which once accessed, user is trusted and can access critical infrastructure and resources without any restrictions.
|
in which once accessed, user is trusted and can access critical infrastructure and resources without any restrictions.
|
||||||
|
|
||||||
Wiretrustee decentralizes networks using direct point-to-point connections, as opposed to traditional models.
|
Wiretrustee decentralizes networks using direct point-to-point connections, as opposed to traditional models.
|
||||||
Consequently, network performance is increased since traffic flows directly between the machines bypassing VPN servers or gateways.
|
Consequently, network performance is increased since traffic flows directly between the machines bypassing VPN servers or gateways.
|
||||||
To achieve this, Wiretrustee client applications employ signalling servers to find other machines and negotiate connections.
|
To achieve this, Wiretrustee client applications employ signalling servers to find other machines and negotiate connections.
|
||||||
These are similar to the signaling servers used in [WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling#the_signaling_server)
|
These are similar to the signaling servers used in [WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling#the_signaling_server)
|
||||||
|
|
||||||
Thanks to [NAT traversal techniques](https://en.wikipedia.org/wiki/NAT_traversal),
|
Thanks to [NAT traversal techniques](https://en.wikipedia.org/wiki/NAT_traversal),
|
||||||
outlined in the [Why not just Wireguard?](#why-not-just-wireguard) section above,
|
outlined in the [Why not just Wireguard?](#why-wireguard-with-wiretrustee) section above,
|
||||||
Wiretrustee installation doesn't require complex network and firewall configuration.
|
Wiretrustee installation doesn't require complex network and firewall configuration.
|
||||||
It just works, minimising the maintenance effort.
|
It just works, minimising the maintenance effort.
|
||||||
|
|
||||||
Finally, each machine or device in the Wiretrustee network verifies incoming connections accepting only the trusted ones.
|
Finally, each machine or device in the Wiretrustee network verifies incoming connections accepting only the trusted ones.
|
||||||
@@ -101,5 +101,4 @@ There are 2 ways of getting started with Wiretrustee:
|
|||||||
We recommend starting with the cloud managed version hosted at [app.wiretrustee.com](https://app.wiretrustee.com) - the quickest way to get familiar with the system.
|
We recommend starting with the cloud managed version hosted at [app.wiretrustee.com](https://app.wiretrustee.com) - the quickest way to get familiar with the system.
|
||||||
See [Quickstart Guide](../docs/quickstart.md) for instructions.
|
See [Quickstart Guide](../docs/quickstart.md) for instructions.
|
||||||
|
|
||||||
If you don't want to use the managed version, check out our [Self-hosting Guide](../docs/self-hosting.md).
|
If you don't want to use the managed version, check out our [Self-hosting Guide](../docs/self-hosting.md).
|
||||||
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 42 KiB |
Reference in New Issue
Block a user