Commit Graph

59 Commits

Author SHA1 Message Date
1982071d46 1.14.0 version bump for Linux and macOS, date update. 2024-03-19 14:38:48 -07:00
557b92a167 More reliable full tunnel on macOs
This makes switching between physical networks
with full tunnel mode enabled more reliable.
There were issues with the physical default route or device
changing.
2023-09-08 12:19:08 -07:00
1d095e81d9 fix macos default route again
see commit fb6af1971 * Fix network DNS on macOS
adding that stuff to System Config causes this extra route to be added
which breaks ipv4 default route.
We figured out a weird System Coniguration setting
that works.

--- old
couldn't figure out how to fix it in SystemConfiguration
so here we are# Please enter the commit message for your changes. Lines starting

We also moved the dns setter to before the syncIps stuff
to help with a race condition. It didn't always work when
you re-joined a network with default route enabled.
2023-08-14 17:06:05 -07:00
22ab673480 Apply default route a different way - macOS
The original way we applied default route, by forking
0.0.0.0/0 into 0/1 and 128/1 works, but if mac os has any networking
hiccups -if you change SSIDs or sleep/wake- macos erases the system default route.
And then all networking on the computer is broken.

to summarize the new way:
allowDefault=1
```
sudo route delete default 192.168.82.1
sudo route add default 10.2.0.2
sudo route add -ifscope en1 default 192.168.82.1
```

gives us this routing table
```
Destination        Gateway            RT_IFA             Flags        Refs      Use    Mtu          Netif Expire    rtt(ms) rttvar(ms)
default            10.2.0.2           10.2.0.18          UGScg          90        1   2800       feth4823
default            192.168.82.1       192.168.82.217     UGScIg
```

allowDefault=0
```
sudo route delete default
sudo route delete -ifscope en1 default
sudo route add default 192.168.82.1
```

Notice the I flag, for -ifscope, on the physical default route.

route change does not seem to work reliably.
2023-07-20 13:37:05 -07:00
e2dad367b4 Don't re-apply routes on BSD
See issue #1986
2023-05-17 14:41:59 -07:00
a6742b7f82 Prevent shadowing VM routes as default route (macOS)
If you have a VM host like parallels, sometimes you get these link-local
default routes:

```
netstat -nrfinet | grep "default\|\/1"
0/1                10.2.0.12          UGScg        feth4823
default            192.168.82.1       UGScg             en1
0/1                192.168.82.1       UGScIg            en1
default            link#22            UCSIg       bridge101      !
128.0/1            10.2.0.12          UGSc         feth4823
128.0/1            192.168.82.1       UGScI             en1
```

(the link#22 one)

The _getRTEs function inclused these routes in the list it makes as like:

device: bridge101, target: 0.0.0.0/0

If it happens to be first in the list, bridge101 gets
selected as the default route.

Then Full Tunnel Mode doesn't work.

The other routes in the list are like:
device: en1 target: 192.168.1.0/24 via:  metric: 0 ifscope: 0
device: en1 target: 192.168.1.1/32 via:  metric: 0 ifscope: 0

We only need the device name from this, so either one will work.
2022-12-23 16:18:00 -08:00
10170b41c3 Revert "Improve default route on macOS (#1680)"
This reverts commit 117d7194af.
2022-12-13 18:32:07 +01:00
117d7194af Improve default route on macOS (#1680)
re: issue #1088
and probably: https://discuss.zerotier.com/t/default-route-issue-osx-monterey-m1/6974

// current zerotier.
// allow default adds two sets of routes.
```
netstat -rnfinet | grep "/1\|default" | sort
0/1                10.2.0.2           UGScg        feth4823
0/1                192.168.82.1       UGScIg            en7
128.0/1            10.2.0.2           UGSc         feth4823
128.0/1            192.168.82.1       UGScI             en7
default            192.168.82.1       UGScg             en7
```

Then, something chaotic happens eventually, and networking stops working.

// after patch
```
netstat -rnfinet | grep "/1\|default" | sort
0/1                10.2.0.2           UGScg        feth4823
128.0/1            10.2.0.2           UGSc         feth4823
default            192.168.82.1       UGScg             en7
```

After the change, I can still:
- use default route
- route to other subnets

I tested on high sierra through monterey
and on freebsd13.1
2022-12-13 11:52:21 +01:00
fa25b45198 Keep interface name on via routes on linux
See issue #1498
2022-01-07 11:58:42 -08:00
1c956494a4 Use lowercase when including Windows headers 2021-12-29 16:29:08 -05:00
fabfb10b97 Remove managed routes in destructor (regression fix). 2021-11-15 19:48:07 -05:00
594853e251 Remove deprecated vfork call on Mac, and make Mac route application more robust. 2021-10-26 22:15:06 -04:00
d2c3ea6901 Another route fix on BSD. 2021-09-15 13:31:18 -04:00
6bb1598fa3 Another fix for routing and interface issues on MacOS 2021-09-15 11:50:54 -04:00
1b8917a57c Fix for MacOS interface setup and config timing bugs. 2021-09-09 09:30:48 -04:00
d1c88971ae Possible Mac route borking fix. 2021-09-02 15:23:26 -04:00
b37e9de24d BSD: add debug fprintfs for external commands 2021-04-15 06:37:01 +00:00
250f0ef9db Remove dead code. 2020-11-16 13:51:27 -05:00
4aab9121d9 Linux build fixes, and new route code seems to work. 2020-11-13 22:25:12 -05:00
5ea7ef6b65 Rework Linux route setting to actually consult netlink interface. 2020-11-13 22:06:58 -05:00
e8be28734b Linux netlink and route setting... work in progress. 2020-11-13 19:07:54 -05:00
6c5a097711 Use LinuxNetLink for routes on Linux... still needs testing/debugging on an actual Linux machine. 2020-11-13 18:16:14 -05:00
52679d2784 Simplify and fix managed route logic. 2020-11-02 19:02:07 -05:00
06730c7d1d BSL date bump 2020-08-20 12:51:39 -07:00
52a166a71f Relicense: GPLv3 -> ZeroTier BSL 1.1 2019-08-23 09:23:39 -07:00
0e597191b8 Updated licenses for 2019 2019-01-14 10:25:53 -08:00
e01c0adff2 Added ifdef checks to omit some ManagedRoute code in SDK builds 2018-08-01 17:17:04 -07:00
fa7e7fc6f9 Revert fix for GitHub issue #600 because it causes route objects to build up forever (at least on Mac). Bleh. #600 is a rare issue and will need some other fix after reliable duplication. 2018-07-20 15:53:19 -07:00
2e1bc6e500 Cleaned up old code for attempted fix for ticket #600 2018-01-09 09:59:55 -08:00
65c07afe05 Copyright updates for 2018. 2018-01-08 14:33:28 -08:00
f7b3ffe8a0 Commented out block which ignores added routes if there already exists an IP in the route's range. Attempted fix for #600 2018-01-05 17:10:59 -08:00
a9c4ce38f0 eh 2017-12-18 15:07:58 -08:00
bbc39d7648 Restore managed ZT routes that are deleted or otherwise mangled locally (Attempted fix for ticket #600) 2017-12-18 15:05:19 -08:00
6fc70f7c16 More cleanup, Linux build fixes. 2017-07-07 06:50:40 -07:00
d2415dee00 Cleanup. 2017-07-06 16:11:11 -07:00
1b68d6dbdc License header update. 2017-04-27 20:47:25 -07:00
e700165eba GitHub issue #465 - Windows route amnesia 2017-04-21 13:26:02 -07:00
f9ae5938d0 Makefile fix, only bifurcate routes for default, and release notes. 2017-04-20 10:08:46 -07:00
2fc3d12fb6 Minor tweaks to member code in controller, and fix Linux build. 2016-09-29 14:48:39 -07:00
24fce0be86 No, definitely have to back out GitHub issue #385 (non-bisected routes) since this breaks IPv6 on OSX and probably IPv4 too if you were to encounter a 6-only situation. 2016-09-14 22:23:56 -07:00
8d0b2b781e Route management bug fixes. 2016-09-13 16:25:48 -07:00
5b6d27e659 Implement relay policy, and setting multicast limit to 0 now disables multicast on the network as would be expected. 2016-09-13 14:27:18 -07:00
ced8dfc639 Try a version of GitHub issue #385 (non-bifurcated default if not present) on Mac. This version adds the bifurcated routes always but also adds a device-specific non-bifurcated route. Will have to see if this still interferes with OSX route settings, since by definition device specific routes should not conflict with general routes. 2016-09-13 11:07:59 -07:00
34b146f28b Back out of GitHub issue #385 for now and maybe for this release. Would be nice but it is non-critical and rules are the priority. Current implementation bangs heads with OSX route assignment on WiFi join, etc. 2016-09-12 14:56:18 -07:00
fb46a546db Just always do route bifurcation on Linux for now... basically the old behavior. 2016-09-09 12:53:44 -07:00
d23ade879b Do not bifurcate if not replacing an existing route. (Still need to tie up Linux and Windows.) 2016-09-08 15:42:46 -07:00
ebe7e15475 sys/sysctl.h is required on OSX and probably other BSD 2016-07-21 19:21:51 -07:00
095aef5f30 Merge pull request #348 from the-maldridge/remove-sysctl
Remove explicit sys/sysctl.h includes
2016-07-21 15:16:22 -07:00
23391ff9da More OSX IPv6 fixes. 2016-07-12 09:22:04 -07:00
3f2b21ce71 Do not shadow our own route twice on Mac if there is no default route. (Fix for issue found during IPv6 default route override testing.) 2016-07-12 08:55:57 -07:00