forked from zerotier/ZeroTierOne
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Relicense: GPLv3 -> ZeroTier BSL 1.1
- Loading branch information
1 parent
509da3a
commit 52a166a
Showing
129 changed files
with
1,094 additions
and
3,540 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,147 @@ | ||
ZeroTier One - Network Virtualization Everywhere | ||
Copyright (C) 2011-2019 ZeroTier, Inc. https://www.zerotier.com/ | ||
----------------------------------------------------------------------------- | ||
|
||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 3 of the License, or | ||
(at your option) any later version. | ||
Business Source License 1.1 | ||
|
||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. | ||
"Business Source License" is a trademark of MariaDB Corporation Ab. | ||
|
||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
----------------------------------------------------------------------------- | ||
|
||
See LICENSE.GPL-3 for the full GNU GPL v3 license. | ||
Parameters | ||
|
||
-- | ||
Licensor: ZeroTier, Inc. | ||
Licensed Work: ZeroTier Network Virtualization Engine 1.4.4 | ||
The Licensed Work is (c)2019 ZeroTier, Inc. | ||
Additional Use Grant: You may make use of the Licensed Work, provided you | ||
do not use it in any of the following ways: | ||
|
||
You can be released from the requirements of the license by purchasing | ||
a commercial license. Buying such a license is mandatory as soon as you | ||
develop commercial closed-source software that incorporates or links | ||
directly against ZeroTier software without disclosing the source code | ||
of your own application. | ||
* Sell hosted ZeroTier services as a "SaaS" Product | ||
|
||
-- | ||
(1) Operate or sell access to ZeroTier root servers, | ||
network controllers, or authorization key or certificate | ||
generation components of the Licensed Work as a | ||
for-profit service, regardless of whether the use of | ||
these components is sold alone or is bundled with other | ||
services. | ||
|
||
The above license does not apply to third party code included with or | ||
linked against by ZeroTier software. See the third party code section | ||
of the AUTHORS.md for an index of third party software included in | ||
this software repository. | ||
* Create Non-Open-Source Commercial Derviative Works | ||
|
||
Licenses for third party code are all relatively permissive: MIT, | ||
BSD, and public domain. The only exception is the tap-windows driver | ||
which is under the GPLv2, but this is only needed to produce the | ||
binary tap device driver used by the ZeroTier service on Windows. | ||
(2) Link or directly include the Licensed Work in a | ||
commercial or for-profit application or other product | ||
not distributed under an Open Source Initiative (OSI) | ||
compliant license. See: https://opensource.org/licenses | ||
|
||
(3) Remove the name, logo, copyright, or other branding | ||
material from the Licensed Work to create a "rebranded" | ||
or "white labeled" version to distribute as part of | ||
any commercial or for-profit product or service. | ||
|
||
* Certain Government Uses | ||
|
||
(4) Use or deploy the Licensed Work in a government | ||
setting in support of any active government function | ||
or operation with the exception of the following: | ||
physical or mental health care, family and social | ||
services, social welfare, senior care, child care, and | ||
the care of persons with disabilities. | ||
|
||
Change Date: 2023-01-01 | ||
|
||
Change License: Apache License version 2.0 as published by the Apache | ||
Software Foundation | ||
https://www.apache.org/licenses/ | ||
|
||
Alternative Licensing | ||
|
||
If you would like to use the Licensed Work in any way that conflicts with | ||
the stipulations of the Additional Use Grant, contact ZeroTier, Inc. to | ||
obtain an alternative commercial license. | ||
|
||
Visit us on the web at: https://www.zerotier.com/ | ||
|
||
Notice | ||
|
||
The Business Source License (this document, or the "License") is not an Open | ||
Source license. However, the Licensed Work will eventually be made available | ||
under an Open Source License, as stated in this License. | ||
|
||
For more information on the use of the Business Source License for ZeroTier | ||
products, please visit our pricing page which contains license details and | ||
and license FAQ: https://zerotier.com/pricing | ||
|
||
For more information on the use of the Business Source License generally, | ||
please visit the Adopting and Developing Business Source License FAQ at | ||
https://mariadb.com/bsl-faq-adopting. | ||
|
||
----------------------------------------------------------------------------- | ||
|
||
Business Source License 1.1 | ||
|
||
Terms | ||
|
||
The Licensor hereby grants you the right to copy, modify, create derivative | ||
works, redistribute, and make non-production use of the Licensed Work. The | ||
Licensor may make an Additional Use Grant, above, permitting limited | ||
production use. | ||
|
||
Effective on the Change Date, or the fourth anniversary of the first publicly | ||
available distribution of a specific version of the Licensed Work under this | ||
License, whichever comes first, the Licensor hereby grants you rights under | ||
the terms of the Change License, and the rights granted in the paragraph | ||
above terminate. | ||
|
||
If your use of the Licensed Work does not comply with the requirements | ||
currently in effect as described in this License, you must purchase a | ||
commercial license from the Licensor, its affiliated entities, or authorized | ||
resellers, or you must refrain from using the Licensed Work. | ||
|
||
All copies of the original and modified Licensed Work, and derivative works | ||
of the Licensed Work, are subject to this License. This License applies | ||
separately for each version of the Licensed Work and the Change Date may vary | ||
for each version of the Licensed Work released by Licensor. | ||
|
||
You must conspicuously display this License on each original or modified copy | ||
of the Licensed Work. If you receive the Licensed Work in original or | ||
modified form from a third party, the terms and conditions set forth in this | ||
License apply to your use of that work. | ||
|
||
Any use of the Licensed Work in violation of this License will automatically | ||
terminate your rights under this License for the current and all other | ||
versions of the Licensed Work. | ||
|
||
This License does not grant you any right in any trademark or logo of | ||
Licensor or its affiliates (provided that you may use a trademark or logo of | ||
Licensor as expressly required by this License). | ||
|
||
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON | ||
AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, | ||
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF | ||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND | ||
TITLE. | ||
|
||
----------------------------------------------------------------------------- | ||
|
||
MariaDB hereby grants you permission to use this License’s text to license | ||
your works, and to refer to it using the trademark "Business Source License", | ||
as long as you comply with the Covenants of Licensor below. | ||
|
||
Covenants of Licensor | ||
|
||
In consideration of the right to use this License’s text and the "Business | ||
Source License" name and trademark, Licensor covenants to MariaDB, and to all | ||
other recipients of the licensed work to be provided by Licensor: | ||
|
||
1. To specify as the Change License the GPL Version 2.0 or any later version, | ||
or a license that is compatible with GPL Version 2.0 or a later version, | ||
where "compatible" means that software provided under the Change License can | ||
be included in a program with software provided under GPL Version 2.0 or a | ||
later version. Licensor may specify additional Change Licenses without | ||
limitation. | ||
|
||
2. To either: (a) specify an additional grant of rights to use that does not | ||
impose any additional restriction on the right granted in this License, as | ||
the Additional Use Grant; or (b) insert the text "None". | ||
|
||
3. To specify a Change Date. | ||
|
||
4. Not to modify this License in any other way. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,27 @@ | ||
ZeroTier - Global Area Networking | ||
====== | ||
|
||
ZeroTier is a smart programmable Ethernet switch for planet Earth. It allows networked devices and applications to be managed as if the entire world is one data center or cloud region. | ||
ZeroTier is a smart programmable Ethernet switch for planet Earth. It allows all networked devices, VMs, containers, and applications to communicate as if they all reside in the same physical data center or cloud region. | ||
|
||
It replaces the physical LAN/WAN boundary with a virtual one, allowing devices of any type at any location to be managed as if they all reside in the same cloud region or data center. All traffic is encrypted end-to-end and takes the most direct path available for minimum latency and maximum performance. The goals and design of ZeroTier are inspired by among other things the original [Google BeyondCorp](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43231.pdf) paper and the [Jericho Forum](https://en.wikipedia.org/wiki/Jericho_Forum). | ||
This is accomplished by combining a cryptographically addressed and secure peer to peer network (termed VL1) with an Ethernet emulation layer somewhat similar to VXLAN (termed VL2). Our VL2 Ethernet virtualization layer includes advanced enterprise SDN features like fine grained access control rules for network micro-segmentation and security monitoring. | ||
|
||
All ZeroTier traffic is encrypted end-to-end using secret keys that only you control. Most traffic flows peer to peer, though we offer free (but slow) relaying for users who cannot establish peer to peer connetions. | ||
|
||
The goals and design principles of ZeroTier are inspired by among other things the original [Google BeyondCorp](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43231.pdf) paper and the [Jericho Forum](https://en.wikipedia.org/wiki/Jericho_Forum) with its notion of "deperimeterization." | ||
|
||
Visit [ZeroTier's site](https://www.zerotier.com/) for more information and [pre-built binary packages](https://www.zerotier.com/download/). Apps for Android and iOS are available for free in the Google Play and Apple app stores. | ||
|
||
ZeroTier is licensed under the [BSL version 1.1](https://mariadb.com/bsl11/). See [LICENSE.txt](LICENSE.txt) and the [ZeroTier pricing page](https://www.zerotier.com/pricing) for details. ZeroTier is free to use internally in businesses and academic institutions and for non-commercial purposes. Certain types of commercial use such as building closed-source apps and devices based on ZeroTier or offering ZeroTier network controllers and network management as a SaaS service require a commercial license. | ||
|
||
A small amount of third party code is also included in ZeroTier and is not subject to our BSL license. See [AUTHORS.md] for a list of third party code, where it is included, and the licenses that apply to it. All of the third party code in ZeroTier is liberally licensed (MIT, BSD, Apache, public domain, etc.). | ||
|
||
### Getting Started | ||
|
||
Everything in the ZeroTier world is controlled by two types of identifier: 40-bit/10-digit *ZeroTier addresses* and 64-bit/16-digit *network IDs*. A ZeroTier address identifies a node or "device" (laptop, phone, server, VM, app, etc.) while a network ID identifies a virtual Ethernet network that can be joined by devices. | ||
Everything in the ZeroTier world is controlled by two types of identifier: 40-bit/10-digit *ZeroTier addresses* and 64-bit/16-digit *network IDs*. These identifiers are easily distinguished by their length. A ZeroTier address identifies a node or "device" (laptop, phone, server, VM, app, etc.) while a network ID identifies a virtual Ethernet network that can be joined by devices. | ||
|
||
Another way of thinking about it is that ZeroTier addresses are port numbers on a giant planetary-sized smart switch while network IDs are VLANs to which these ports can be assigned. For more details read about VL1 and VL2 in [the ZeroTier manual](https://www.zerotier.com/manual/). | ||
ZeroTier addresses can be thought of as port numbers on an enormous planet-wide enterprise Ethernet smart switch supporting VLANs. Network IDs are VLAN IDs to which these ports may be assigned. A single port can be assigned to more than one VLAN. | ||
|
||
*Network controllers* are ZeroTier nodes that act as access control certificate authorities and configuration managers for virtual networks. The first 40 bits (or 10 digits) of a network ID is the ZeroTier address of its controller. You can create networks with our [hosted controllers](https://my.zerotier.com/) and web UI/API or [host your own](controller/) if you don't mind posting some JSON configuration info or writing a script to do so. | ||
A ZeroTier address looks like `8056c2e21c` and a network ID looks like `8056c2e21c000001`. Network IDs are composed of the ZeroTier address of that network's primary controller and an arbitrary 24-bit ID that identifies the network on this controller. Network controllers are roughly analogous to SDN controllers in SDN protocols like [OpenFlow](https://en.wikipedia.org/wiki/OpenFlow), though as with the analogy between VXLAN and VL2 this should not be read to imply that the protocols or design are the same. You can use our convenient and inexpensive SaaS hosted controllers at [my.zerotier.com](https://my.zerotier.com/) or [run your own controller](controller/) if you don't mind messing around with JSON configuration files or writing scripts to do so. | ||
|
||
### Project Layout | ||
|
||
|
@@ -33,7 +41,7 @@ The base path contains the ZeroTier One service main entry point (`one.cpp`), se | |
- `osdep/`: code to support and integrate with OSes, including platform-specific stuff only built for certain targets. | ||
- `rule-compiler/`: JavaScript rules language compiler for defining network-level rules. | ||
- `service/`: the ZeroTier One service, which wraps the ZeroTier core and provides VPN-like connectivity to virtual networks for desktops, laptops, servers, VMs, and containers. | ||
- `windows/`: Visual Studio solution files, Windows service code for ZeroTier One, and the Windows task bar app UI. | ||
- `windows/`: Visual Studio solution files, Windows service code, and the Windows task bar app UI. | ||
|
||
### Build and Platform Notes | ||
|
||
|
@@ -80,7 +88,7 @@ Running ZeroTier One on a Mac is the same, but OSX requires a kernel extension. | |
|
||
This will create the home folder for Mac, place *tap.kext* there, and set its modes correctly to enable ZeroTier One to manage it with *kextload* and *kextunload*. | ||
|
||
### Troubleshooting | ||
### Basic Troubleshooting | ||
|
||
For most users, it just works. | ||
|
||
|
@@ -96,14 +104,6 @@ ZeroTier One peers will automatically locate each other and communicate directly | |
|
||
Users behind certain types of firewalls and "symmetric" NAT devices may not able able to connect to external peers directly at all. ZeroTier has limited support for port prediction and will *attempt* to traverse symmetric NATs, but this doesn't always work. If P2P connectivity fails you'll be bouncing UDP packets off our relay servers resulting in slower performance. Some NAT router(s) have a configurable NAT mode, and setting this to "full cone" will eliminate this problem. If you do this you may also see a magical improvement for things like VoIP phones, Skype, BitTorrent, WebRTC, certain games, etc., since all of these use NAT traversal techniques similar to ours. | ||
|
||
If you're interested, there's a [technical deep dive about NAT traversal on our blog](https://www.zerotier.com/blog/?p=226?pk_campaign=github_ZeroTierOne). A troubleshooting tool to help you diagnose NAT issues is planned for the future as are uPnP/IGD/NAT-PMP and IPv6 transport. | ||
|
||
If a firewall between you and the Internet blocks ZeroTier's UDP traffic, you will fall back to last-resort TCP tunneling to rootservers over port 443 (https impersonation). This will work almost anywhere but is *very slow* compared to UDP or direct peer to peer connectivity. | ||
|
||
### Contributing | ||
|
||
Please make pull requests against the `dev` branch. The `master` branch is release, and `edge` is for unstable and work in progress changes and is not likely to work. | ||
|
||
### License | ||
|
||
The ZeroTier source code is open source and is licensed under the GNU GPL v3 (not LGPL). If you'd like to embed it in a closed-source commercial product or appliance, please e-mail [[email protected]](mailto:[email protected]) to discuss commercial licensing. Otherwise it can be used for free. | ||
Additional help [can be found in our knowledge base](https://zerotier.atlassian.net/wiki/spaces/SD/overview). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.