Sijie.Sun
e6ec7f405c
introduce uptime monitor for easytier public nodes ( #1250 )
2025-08-20 22:59:44 +08:00
Sijie.Sun
fa3e208668
fix panic of std::Instant overflow ( #1243 )
2025-08-15 22:54:58 +08:00
Sijie.Sun and Copilot
d9bcbd9b31
fix proxy traffic not count into traffic ( #1229 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-08-14 00:05:12 +08:00
Sijie.Sun
a511abb613
fix docker file ( #1219 )
2025-08-11 18:09:16 +08:00
Sijie.Sun
1eec27b5ff
bump version to 2.4.2 ( #1218 )
2025-08-11 09:03:13 +08:00
Sijie.Sun
1de7777a71
fix quic transport panic ( #1216 )
2025-08-11 08:30:59 +08:00
Sijie.Sun
975ca8bd9c
Update docker workflow ( #1217 )
...
1. push all supported platform
2. support unstable tag
2025-08-10 23:36:50 +08:00
Sijie.Sun
e43537939a
clippy all codes ( #1214 )
...
1. clippy code
2. add fmt and clippy check in ci
2025-08-10 22:56:41 +08:00
Sijie.Sun
8ffc2f12e4
optimize the condition of enabling kcp ( #1210 )
2025-08-09 16:16:09 +08:00
Sijie.Sun
8cdb27d43d
add stats metrics ( #1207 )
...
support new cli command `easytier-cli stats`
It's useful to find out which components are consuming bandwidth.
2025-08-09 00:06:35 +08:00
Sijie.Sun
efa17a7c10
fix dead loop in direct connecto if disable-p2p is enabled in dst ( #1206 )
2025-08-08 22:30:39 +08:00
Sijie.Sun
6d14e9e441
fix jemalloc prof feature ( #1201 )
2025-08-08 17:54:39 +08:00
Sijie.Sun
9eddb4b072
fix readme assets ( #1182 )
2025-08-01 23:58:01 +08:00
Sijie.Sun
4fca0f40fe
update readme ( #1181 )
2025-08-01 23:52:27 +08:00
Sijie.Sun
43b9e6e6e9
fix macos elevate ( #1177 )
2025-08-01 09:36:10 +08:00
Sijie.Sun
583c768f40
fix exit code when error occcurs ( #1173 )
2025-07-30 23:05:22 +08:00
Sijie.Sun
3d610c0f0f
Some Improvements ( #1172 )
...
1. do not exit when dns query failed on et startup.
2. do not send secret digest to client when secret mismatch.
2025-07-29 23:05:38 +08:00
Sijie.Sun
2ec88da823
cli for port forward and tcp whitelist ( #1165 )
2025-07-29 09:30:47 +08:00
Sijie.Sun
7dc5988620
avoid udp hole punch go through tun ( #1155 )
2025-07-26 14:39:03 +08:00
Sijie.Sun
354a4e1d7b
fix acl not work with kcp&quic ( #1152 )
2025-07-26 14:38:10 +08:00
Sijie.Sun
5409c5bbe7
port range should not be converted to single port ( #1154 )
2025-07-26 14:13:13 +08:00
Sijie.Sun
33ff9554cd
need encrypt rpc if dst is in peer map ( #1151 )
2025-07-25 22:28:47 +08:00
Sijie.Sun
975b4e7664
support loongarch ( #1146 )
2025-07-25 01:53:49 +08:00
Sijie.Sun
1f6a715939
releases/v2.4.0 ( #1145 )
...
* bump version to v2.4.0
* update tauri.
* allow try direct connect to public server
2025-07-25 00:16:15 +08:00
Sijie.Sun
8e7a8de5e5
Implement ACL ( #1140 )
...
1. get acl stats
```
./easytier-cli acl stats
AclStats:
Global:
CacheHits: 4
CacheMaxSize: 10000
CacheSize: 5
DefaultAllows: 3
InboundPacketsAllowed: 2
InboundPacketsTotal: 2
OutboundPacketsAllowed: 7
OutboundPacketsTotal: 7
PacketsAllowed: 9
PacketsTotal: 9
RuleMatches: 2
ConnTrack:
[src: 10.14.11.1:57444, dst: 10.14.11.2:1000, proto: Tcp, state: New, pkts: 1, bytes: 60, created: 2025-07-24 10:13:39 +08:00, last_seen: 2025-07-24 10:13:39 +08:00]
Rules:
[name: 'tcp_whitelist', prio: 1000, action: Allow, enabled: true, proto: Tcp, ports: ["1000"], src_ports: [], src_ips: [], dst_ips: [], stateful: true, rate: 0, burst: 0] [pkts: 2, bytes: 120]
```
2. use tcp/udp whitelist to block unexpected traffic.
`sudo ./easytier-core -d --tcp-whitelist 1000`
3. use complete acl ability with config file:
```
[[acl.acl_v1.chains]]
name = "inbound_whitelist"
chain_type = 1
description = "Auto-generated inbound whitelist from CLI"
enabled = true
default_action = 2
[[acl.acl_v1.chains.rules]]
name = "tcp_whitelist"
description = "Auto-generated TCP whitelist rule"
priority = 1000
enabled = true
protocol = 1
ports = ["1000"]
source_ips = []
destination_ips = []
source_ports = []
action = 1
rate_limit = 0
burst_limit = 0
stateful = true
```
2025-07-24 22:13:45 +08:00
Sijie.Sun
4f53fccd25
fix bugs ( #1138 )
...
1. avoid dns query hangs the thread
2. avoid deadloop when stun query failed because of no ipv4 addr.
3. make quic input error non-fatal.
4. remove ring tunnel from connection map to avoid mem leak.
5. limit listener retry count.
2025-07-21 23:18:38 +08:00
Sijie.Sun
876d550f68
reduce memory usage ( #1133 )
...
Large memory usage comes from:
Mimalloc hold large thread cache, causing abort 13M+ usage.
QUIC endpoint occupy 3M when GRO is enabled.
Smoltcp 64 tcp listener use 2MB.
2025-07-20 19:15:28 +08:00
Sijie.Sun
2660ed5fda
try create tun device if not exist ( #1131 )
2025-07-19 22:56:19 +08:00
Sijie.Sun
50c6f5ae6c
add windows firewall for tun interface ( #1130 )
...
allow all icmp/tcp/udp on tun interface.
2025-07-19 20:38:44 +08:00
Sijie.Sun
85f0091056
fix latency first route of public server ( #1129 )
2025-07-19 18:16:53 +08:00
Sijie.Sun
e25cd9be37
add disable ipv6 option to gui/web ( #1127 )
2025-07-19 11:07:57 +08:00
Sijie.Sun
1fb5ca9475
update issue template ( #1126 )
2025-07-18 23:50:02 +08:00
Sijie.Sun
7f3a9c021c
close peer conn if remote addr is from virtual network ( #1123 )
2025-07-18 03:29:48 +08:00
Sijie.Sun
940238f158
socks5 and port forwarding ( #1118 )
2025-07-17 10:09:25 +08:00
Sijie.Sun
3f6c7ba1d2
update readme ( #1102 )
2025-07-10 00:34:34 +08:00
Sijie.Sun
13c2e72871
fix incorrect config check ( #1086 )
2025-07-06 14:20:49 +08:00
Sijie.Sun
3c65594030
smoltcp use larger tx/rx buf size ( #1085 )
...
* smoltcp use larger tx/rx buf size
* fix direct conn check
2025-07-06 10:53:01 +08:00
Sijie.Sun
f85b031402
handle close peer conn correctly ( #1082 )
2025-07-06 09:16:13 +08:00
Sijie.Sun
ac3e994682
contributing.md ( #1084 )
2025-07-06 00:08:21 +08:00
Sijie.Sun
139f6b3c4c
exclude ohos from workspace ( #1080 )
2025-07-05 18:44:37 +08:00
Sijie.Sun
a4bb555fac
use winapi to config ip and route (remove dep on netsh) ( #1079 )
...
On some windows machines can not execut netsh.
Also this avoid black cmd window when using gui.
2025-07-05 16:50:09 +08:00
Sijie.Sun
bf021a9ead
update gui placeholder text ( #1062 )
2025-06-27 08:29:44 +08:00
Sijie.Sun
70e69a382e
allow set multithread count ( #1056 )
2025-06-26 02:19:33 +08:00
Sijie.Sun
cd26d9f669
fix mem leak of token bucket ( #1055 )
2025-06-26 02:19:26 +08:00
Sijie.Sun
4fd0253e99
fix cargo install failure ( #1054 )
2025-06-25 21:55:44 +08:00
Sijie.Sun
ebab70ca3b
add geo info for in web device list ( #1052 )
2025-06-25 09:03:47 +08:00
Sijie.Sun
ae4a158e36
web improve ( #1047 )
2025-06-24 09:09:52 +08:00
Sijie.Sun
fded8b1de0
limit max conn count in foreign network manager ( #1041 )
2025-06-22 19:11:27 +08:00
Sijie.Sun
762d5cd392
blacklist the peers which disable p2p in hole-punching client ( #1038 )
2025-06-22 14:39:24 +08:00
Sijie.Sun
40601bd05b
add bps limiter ( #1015 )
...
* add token bucket
* remove quinn-proto
2025-06-19 21:15:04 +08:00
Sijie.Sun
8c2f96d1aa
allow set machine uid with command line ( #1009 )
2025-06-18 11:02:29 +08:00
Sijie.Sun
34ba0bc95b
add keepalive option for quic proxy ( #1008 )
...
avoid connection loss when idle
2025-06-17 23:39:56 +08:00
Sijie.Sun
40b5fe9a54
support quic proxy ( #993 )
...
QUIC proxy works like kcp proxy, it can proxy TCP streams and transfer data with QUIC.
QUIC has better congestion algorithm (BBR) for network with both high loss rate and high bandwidth.
QUIC proxy can be enabled by passing `--enable-quic-proxy` to easytier in the client side. The proxy status can be viewed by `easytier-cli proxy`.
2025-06-15 19:43:45 +08:00
Sijie.Sun
5a98fac395
Update core.yml,use upx4.2.4 ( #991 )
2025-06-14 23:04:55 +08:00
Sijie.Sun
0bab14cd72
use bulk compress instead of streaming to reduce mem usage ( #985 )
2025-06-14 14:55:48 +08:00
Sijie.Sun
25dcdc652a
support mapping subnet proxy ( #978 )
...
- **support mapping subproxy network cidr**
- **add command line option for proxy network mapping**
- **fix Instance leak in tests.
2025-06-14 11:42:45 +08:00
Sijie.Sun
950cb04534
remove macos default route on utun device ( #976 )
2025-06-12 22:24:34 +08:00
Sijie.Sun
c07d1286ef
internal stun server should use xor mapped addr ( #975 )
2025-06-12 08:09:59 +08:00
Sijie.Sun
870353c499
fix ospf route ( #970 )
...
- **fix deadlock in ospf route introducd by #958 **
- **use random peer id for foreign network entry, because ospf route algo need peer id change after peer info version reset. this may interfere route propagation and cause node residual**
- **allow multiple nodes broadcast same network ranges for subnet proxy**
- **bump version to v2.3.2**
2025-06-11 09:44:03 +08:00
Sijie.Sun
f39fbb2ce2
ipv4-peerid table should use peer with least hop ( #958 )
...
sometimes route table may not be updated in time, so some dead nodes are still showing in the peer list.
when generating ipv4-peer table, we should avoid these dead devices overrides the entry of healthy nodes.
2025-06-08 11:28:59 +08:00
Sijie.Sun
f890812577
kcp connect retry ( #952 )
2025-06-07 12:24:11 +08:00
Sijie.Sun
47f3efe71b
Create LICENSE ( #951 )
2025-06-07 10:56:54 +08:00
Sijie.Sun
6d88b10b14
remove LICENSE ( #950 )
2025-06-07 10:39:42 +08:00
Sijie.Sun
a6773aa549
zstd should reuse ctx to avoid huge mmap cost ( #941 )
2025-06-06 08:59:06 +08:00
Sijie.Sun
0314c66635
some improvements ( #939 )
...
1. ospf route conn map should also use version
2. treat nopat as cone
2025-06-05 22:49:57 +08:00
Sijie.Sun
96fc19b803
fix minor bugs ( #936 )
...
1. update upx to v5.0.1 to avoid mips bug.
2. use latest mimalloc.
3. fix panic in ospf route
4. potential residual conn.
2025-06-05 11:55:44 +08:00
Sijie.Sun
4608bca998
improve performance of route generation ( #914 )
...
this may fix following problem:
1. cpu 100% when large number of nodes in network.
2. high cpu usage when large number of foreign networks.
3. packet loss when new node enters/exits.
4. old routes not cleand and show as an obloleted entry.
2025-06-02 20:12:27 +08:00
Sijie.Sun
0a38a8ef4a
fix musl download fail in ci action ( #902 )
...
https://github.com/orgs/community/discussions/27906
musl.cc banned microsoft ips
this patch replace musl.cc with https://github.com/cross-tools/musl-cross
2025-05-29 09:35:32 +08:00
Sijie.Sun
6c49bb1865
rename magisk kill.sh to action.sh ( #893 )
2025-05-27 09:32:40 +08:00
Sijie.Sun
f9c24bc205
fix bugs ( #892 )
...
1. traffic stats not work.
2. magisk zip malformat
2025-05-27 09:28:28 +08:00
Sijie.Sun
b0fd37949a
fix direct connector only select one listener ( #875 )
2025-05-25 13:56:08 +08:00
Sijie.Sun
29994b663a
v6 hole punch ( #873 )
...
Some devices have ipv6 but don't allow input connection, this patch add hole punching for these devices.
- **add v6 hole punch msg to udp tunnel**
- **send hole punch packet when do ipv6 direct connect**
2025-05-24 22:57:33 +08:00
Sijie.Sun
0f2b214918
fix web test ( #872 )
2025-05-24 01:22:25 +08:00
Sijie.Sun
fec885c427
fix token mismatch when using web ( #871 )
2025-05-24 00:36:00 +08:00
Sijie.Sun
5a2fd4465c
fix dns query ( #864 )
...
1. dns resolver should be global unique so dns cache can work. avoid dns query influence hole punching.
2. when system dns failed, fallback to hickory dns.
2025-05-23 10:34:28 +08:00
Sijie.Sun and Your Name
83d1ecc4da
bump version to v2.3.0 ( #859 )
...
also some improvements:
1. add magic dns option in gui.
2. allow icmp proxy fail on android
3. when no_tun is enabled, android do not start vpn service
Co-authored-by: Your Name <you@example.com >
2025-05-18 16:45:39 +08:00
Sijie.Sun
7c6daf7c56
Magic DNS and easytier-web improvements ( #856 )
...
1. dns add macos system config
2. allow easytier-web serve dashboard and api in same port
2025-05-18 16:34:35 +08:00
Sijie.Sun
28fe6257be
magic dns ( #813 )
...
This patch implements:
1. A dns server that handles .et.net. zone in local and forward all other queries to system dns server.
2. A dns server instance which is a singleton in one machine, using one specific tcp port to be exclusive with each other. this instance is responsible for config system dns and run the dns server to handle dns queries.
3. A dns client instance that all easytier instance will run one, this instance will try to connect to dns server instance, and update the dns record in the dns server instance.
this pr only implements the system config for windows. linux & mac will do later.
2025-05-16 09:24:24 +08:00
Sijie.Sun
99430983bc
Update README.md ( #846 )
...
Add deepwiki badge
2025-05-12 21:39:55 +08:00
Sijie.Sun
d758a4958f
fix panic cause segment fault ( #843 )
...
1. backtrace may fail on some platform such as armv7, should do it last in panic hook.
2. stun should not panic when bind v6 failed.
2025-05-11 21:34:24 +08:00
Sijie.Sun
2675cf2d00
bump hickory-dns version to v0.25.2 ( #839 )
2025-05-11 08:46:31 +08:00
Sijie.Sun
72be46e8fa
allow tcp port forward use kcp ( #838 )
2025-05-11 00:48:34 +08:00
Sijie.Sun
b5f60f843d
set web assets base dir from env ( #793 )
2025-04-19 22:56:20 +08:00
Sijie.Sun
6bdfb8b01f
generate split js/css when building web ( #792 )
2025-04-19 22:38:56 +08:00
Sijie.Sun
ef1d81a2a1
introduce ffi for easytier ( #791 )
2025-04-19 21:01:51 +08:00
Sijie.Sun
75f7865769
fix gui memory leak ( #768 )
...
* upgrade primevue
* use card instead of panel
2025-04-10 10:02:04 +08:00
Sijie.Sun
01e3ad99ca
optimize memory issues ( #767 )
...
* optimize memory issues
1. introduce jemalloc support, which can dump current memory usage
2. reduce the GlobalEvent broadcaster memory usage.
3. reduce tcp & udp tunnel memory usage
TODO: if peer conn tunnel hangs, the unbounded channel of peer rpc
may consume lots of memory, which should be improved.
* select a port from 15888+ when port is 0
2025-04-09 23:05:49 +08:00
Sijie.Sun
b38991a14e
Merge branch 'main' into perf/fixed-default-rpc-port
2025-04-06 13:09:06 +08:00
Sijie.Sun
c142db301a
port forward ( #736 )
...
* support tcp port forward
* support udp port forward
* command line option for port forward
2025-04-01 09:59:53 +08:00
Sijie.Sun
e130c3f2e4
when gather v6 bind addrs should only rely on v6 range ( #707 )
2025-03-21 22:40:26 +08:00
Sijie.Sun
67cff12c76
fix gui compile ( #701 )
2025-03-20 00:55:14 +08:00
Sijie.Sun
d880dfbbca
bump version to v2.2.4 ( #697 )
2025-03-19 17:23:15 +08:00
Sijie.Sun
b46a200f8d
connector should set bind addrs correctly ( #696 )
2025-03-19 10:47:43 +08:00
Sijie.Sun
23f69ce6a4
improve direct connector ( #685 )
...
* support ipv6 stun
* show interface and public ip in cli node info
* direct conn should keep trying unless already direct connected
* peer should use conn with smallest latency
* deprecate ipv6_listener, use -l instead
2025-03-17 10:46:14 +08:00
Sijie.Sun
0318f55322
add serde default to NetworkConfig ( #675 )
...
* add serde default to NetworkConfig
* set base z-index of event-dialog
2025-03-12 10:36:54 +08:00
Sijie.Sun
5449eabf2a
Update docker.yml
2025-02-10 12:47:12 +08:00
Sijie.Sun
8b89a037e8
fix tcp incoming failure when kcp proxy is enabled ( #601 )
2025-02-06 09:08:34 +08:00
Sijie.Sun
1e821a03fe
netlink route add should be exclusive ( #596 )
2025-02-04 23:01:13 +08:00
Sijie.Sun
66051967fe
fix self peer route info not exist when starting ( #595 )
2025-02-04 21:35:14 +08:00
Sijie.Sun
a63778854f
use netlink instead of shell cmd to config ip ( #593 )
2025-02-03 15:13:50 +08:00