Neil Alexander
0c4c385885
Fix regression in Path MTU discovery
...
In the past we used to send back anything up to 900 bytes of the packet in the ICMPv6 Packet Too Big response, whereas now we seemingly only send back 40 bytes.
It turns out that sending back only the 40 bytes of IPv6 headers isn't enough for most operating systems to positively ID the flow to reduce the MTU. This PR updates it so that we can send up to 512 bytes instead (900 is probably excessive) — that should leave plenty of room for any number of IPv6 extension headers and the next protocol headers and some of the payload.
This seems to fix the problem in my testing.
2022-04-03 12:48:06 +01:00
Neil Alexander
2d2ad4692b
Restore uptime
, bytes_sent
and bytes_recvd
to getPeers
( #888 )
...
* Restore `uptime`, `bytes_sent` and `bytes_recvd` to the admin API for peers
* Wrap conn in Yggdrasil instead, so not necessary to do so in Ironwood
* Shuffle struct for alignment
2022-02-01 13:37:45 +00:00
Tom
9f5cc0eecb
Make message clearer and downgrade ( #812 )
...
* Make message clearer and downgrade
* Differentiate between incoming and outgoing conn
2022-01-30 21:58:57 +00:00
Alex Kotov
87e936195e
Add some tests ( #828 )
...
* Add tests
* Add tests
* Add tests
* Add tests
* Fix code style
* Remove unnecessary tests
2021-11-04 08:05:53 +00:00
Neil Alexander
4859accbb0
Fix panic in address.GetKey()
( fixes #860 )
2021-11-02 18:03:16 +00:00
Neil Alexander
99227b60ce
Update CI to use Go 1.17, produce Apple Silicon builds ( closes #844 )
2021-09-28 11:02:15 +01:00
Arceliar
f92d812f3c
Merge pull request #822 from yggdrasil-network/sni
...
TLS Server Name Indication
2021-09-24 05:14:28 -05:00
Arceliar
6af9b61b15
Merge pull request #842 from Arceliar/mutex
...
Fix incorrect mutex use in ipv6rwc
2021-09-24 04:43:44 -05:00
Arceliar
f2d1eff8f6
Merge pull request #835 from kotovalexarian/test-and-refactor-proto-handler
...
Really tiny refactoring of "src/core"
2021-09-24 04:43:06 -05:00
Arceliar
e5d638ff4b
better way to empty ipv6rwc buffer
2021-09-23 04:39:12 -05:00
Arceliar
86e5306eec
fix race from mutex that wasn't held long enough
2021-09-23 04:35:31 -05:00
Arceliar
529a33034b
gofmt to add new build comments
2021-09-23 04:34:58 -05:00
Fyodor Ustinov
52345a2de4
Check tun.config is not equal to nil before usage ( #830 )
...
We have to check tun.config is not nil before first use, not after.
2021-09-21 21:19:25 +01:00
Alex Kotov
571186ca77
Rename protohandler attributes
2021-09-03 01:45:30 +05:00
Alex Kotov
3c89781057
Align and reorder code for lesser diff
2021-09-01 07:58:11 +05:00
Alex Kotov
a5f2ba80a2
Organize code in "src/core/proto.go"
2021-09-01 07:50:03 +05:00
Alex Kotov
538ee13669
Add type core.AddHandlerFunc
2021-09-01 06:16:57 +05:00
Arceliar
3613614b41
Revert "Add IPReadWriteCloser interface"
...
This reverts commit ebe366ef3b
.
2021-08-07 12:56:36 -05:00
Neil Alexander
ebe366ef3b
Add IPReadWriteCloser interface
2021-08-07 10:17:21 +01:00
Neil Alexander
d1cd671bec
Fix bug
2021-08-01 21:39:49 +01:00
Neil Alexander
bbdff033ce
Update SNI code
2021-08-01 21:36:51 +01:00
Neil Alexander
f094cf34bf
Set SNI by default if the peering URI contains a DNS name
2021-07-28 22:23:33 +01:00
Neil Alexander
d8df9755f2
Allow specifying TLS SNI with ?sni= in peering URI
2021-07-28 22:11:20 +01:00
Neil Alexander
52309d094c
Merge pull request #800 from yggdrasil-network/iprwc
...
Refactor PacketConn/ReadWriteCloser interfaces
2021-07-15 09:39:03 +01:00
Timur Demin
04ecdf6045
Preallocate memory when deriving address from key
...
This makes src/address.AddrForKey preallocate 32 bytes before starting
the address derivation. As benches in syg_go show, reallocating temp
takes 20% of the function runtime.
2021-07-08 16:04:43 +05:00
Arceliar
cd5383f7b7
fix core tests
2021-07-07 18:36:51 -05:00
Arceliar
3704ebf4cb
fix debug rpcs and cleanup core.Close/core.Stop
2021-07-06 19:45:12 -05:00
Neil Alexander
e224c02d6d
Revert "Add LocalAddr to complete net.PacketConn interface"
...
This reverts commit e4ce2c79a9
.
2021-07-05 22:35:46 +01:00
Neil Alexander
e4ce2c79a9
Add LocalAddr to complete net.PacketConn interface
2021-07-05 22:26:09 +01:00
Arceliar
f990a56046
have the core wrap and export the underlying PacketConn, move IPv6 ReadWriteCloser wrapper logic to a separate package
2021-07-05 13:14:12 -05:00
Neil Alexander
9b28f725e2
Fix core_test.go
2021-06-28 18:28:56 +01:00
Neil Alexander
3646a8674c
Yggdrasil v0.4.0rc4
2021-06-28 18:21:53 +01:00
Arceliar
de853fed10
multicast configuration changes
2021-06-27 17:24:46 -05:00
Arceliar
2874ce1327
change multicast config format
2021-06-27 03:15:41 -05:00
Arceliar
2a7a53b6b6
move GenerateConfig to defaults, to adjust dependency ordering, needed for stuff later
2021-06-27 02:18:51 -05:00
Arceliar
2db46c1250
make socks connect to tls listeners, TODO make that configurable
2021-06-25 21:40:19 -05:00
Arceliar
d1dfe38683
remove string from multicast announcement format
2021-06-25 21:27:29 -05:00
Arceliar
3b38ed082f
make failed sends a debug log, instead of error
2021-06-25 21:15:40 -05:00
Neil Alexander
39361af789
Update config comments
2021-06-19 17:51:11 +01:00
Arceliar
b7f57c0617
use TLS for multicast peers, fix TLS listener type in log output
2021-06-19 10:42:38 -05:00
Arceliar
5564de94ba
when using tls, if no pinned key is set, pin the key from the cert. require that cert keys match a pinned key
2021-06-19 09:53:11 -05:00
Arceliar
1bf751a474
update ironwood, only store 1 packet in the pre-session buffer
2021-06-19 07:44:37 -05:00
Arceliar
b34c3230f8
fix core_test.go and a race in setting/using mtu
2021-06-13 13:40:20 -05:00
Arceliar
cb81be94ec
skip multicast packets sent from our own key
2021-06-13 12:31:52 -05:00
Arceliar
2726dc0076
don't return an error if the source address is wrong, since this happens very frequently for link-local traffic
2021-06-13 09:51:53 -05:00
Arceliar
c6a7a077a3
add remote URI to GetPeers (fallback to net.Conn.RemoteAddr().String() if the uri is unknown)
2021-06-13 09:25:08 -05:00
Arceliar
6c63b02385
Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into future
2021-06-13 05:44:32 -05:00
Arceliar
8f91f0c050
fix nodeinfo and debug admin functions, this is ugly / a hack, but it works i guess...
2021-06-13 05:43:03 -05:00
Neil Alexander
c8938a3527
Add missing icmpv6.go
2021-06-13 11:34:59 +01:00
Arceliar
3393db8e77
move ICMP PacketTooBig sending into core
2021-06-13 05:25:13 -05:00
Arceliar
816356ea65
mostly finish migration of IP stuff to core, tuntap is still responsible for ICMP PacketTooBig
2021-06-13 04:54:06 -05:00
Arceliar
1147ee1934
WIP moving IP-specific checks from tuntap to core
2021-06-13 04:22:21 -05:00
Arceliar
91235980af
fix logging for socks
2021-06-12 07:03:32 -05:00
Arceliar
eeadffe4a5
move position of log line on shutdown
2021-06-12 06:07:33 -05:00
Arceliar
5b6f730f18
keep a context in the core, use it for listen/dial, cancel it when closing
2021-06-12 06:06:39 -05:00
Arceliar
3815b13ad5
use DialContext
2021-06-12 05:58:14 -05:00
Neil Alexander
acdc3dd3c0
Replace ?ed25519= with ?key= in peering URIs
2021-06-11 21:12:27 +01:00
Arceliar
f7607557c1
fix nBytes check in multicast code
2021-06-06 04:48:00 -05:00
Arceliar
e7da3d72c4
remove session firewall, this can't prevent memory use so it's better to just use OS native tools
2021-06-06 02:35:02 -05:00
Neil Alexander
2e2566d248
Remove src/core/doc.go
2021-06-05 21:56:31 +01:00
Neil Alexander
4a684e7caf
Don't add mutex to config output
2021-06-05 21:48:20 +01:00
Neil Alexander
ea15eeee7e
Ensure PublicKey option is unused, map old config options
2021-06-05 21:32:04 +01:00
Neil Alexander
99973b2757
Remove module package, it didn't really give us anything anyway
2021-06-05 20:57:03 +01:00
Neil Alexander
cb536a7322
Clean up util package
2021-06-05 20:55:08 +01:00
Arceliar
414c100125
add public keys to multicast, public key pinning to multicast peering
2021-06-05 05:07:04 -05:00
Neil Alexander
ff751a5409
Fix lint error
2021-06-02 14:46:04 +01:00
Neil Alexander
8932ab0519
Fix lint errors
2021-06-02 14:40:09 +01:00
Neil Alexander
166336a418
Remove config.NodeState (hot reconfig is no longer supported)
2021-06-02 14:19:32 +01:00
Arceliar
978124dbb1
update dependency (ironwood), fix units in core benchmark
2021-05-31 06:39:53 -05:00
Arceliar
1db7437b80
more cleanup and fix a busyloop when the admin socket is shut down
2021-05-29 21:37:13 -05:00
Arceliar
e25ad9ed21
cleanup unused code
2021-05-29 20:42:06 -05:00
Arceliar
180654c495
possibly fix src/core/core_test.go
2021-05-29 11:13:59 -05:00
Arceliar
8a60c605f6
remove metric stuff, there's already enough new stuff to test, maybe revisit this in a future release
2021-05-24 18:53:54 -05:00
Arceliar
c60dd42baa
cleanup
2021-05-23 21:51:09 -05:00
Arceliar
5f2bcaa71f
add Listen to api and listenURL to tcp
2021-05-23 21:47:12 -05:00
Arceliar
fd5cda6329
read metric from urls for listen and peers
2021-05-23 20:58:34 -05:00
Arceliar
70c5b06286
use url.URL in place of string for most internal listen/peer address handling
2021-05-23 20:34:13 -05:00
Arceliar
58af92812e
add metric to metadata exchange, but currently left at default 0 value
2021-05-23 18:40:36 -05:00
Arceliar
6bc2044ced
update ironwood dependency, fix ansible code, go mod tidy
2021-05-23 17:52:10 -05:00
Arceliar
018f35d9a2
rename src/yggdrasil to src/core
2021-05-23 14:42:26 -05:00
Arceliar
0343dad934
remove obsolete crypto package
2021-05-23 14:33:28 -05:00
Arceliar
f69f02386d
rename debug admin socket functions
2021-05-23 13:37:46 -05:00
Arceliar
e6f86a9bd7
cleanup proto admin socket response formats
2021-05-23 12:19:27 -05:00
Arceliar
29dda650b5
tun session protocol traffic cleanup
2021-05-23 11:58:52 -05:00
Arceliar
233cf0c962
add remote debugGetSelf and fix some return type things in the other debug functions
2021-05-22 21:27:11 -05:00
Arceliar
c7b004d36f
get debugGetPeers and debugGetDHT working in the admin socket
2021-05-22 20:25:14 -05:00
Arceliar
8668abf481
WIP adding crawling debug packets
2021-05-22 19:54:52 -05:00
Arceliar
b11cf7a2f2
update ironwood dependency, fix api
2021-05-18 20:43:38 -05:00
Arceliar
8d09e68e80
admin socket getpaths
2021-05-16 16:16:58 -05:00
Arceliar
eb4a22724f
possibly fix admin socket getnodeinfo
2021-05-16 15:55:30 -05:00
Arceliar
fad071ffe9
WIP on nodeinfo admin handler
2021-05-16 15:27:51 -05:00
Neil Alexander
058dec0cca
Fix getself, gettuntap etc
2021-05-16 21:01:59 +01:00
Neil Alexander
31c1c9b586
Fix admin socket list
2021-05-16 20:53:40 +01:00
Neil Alexander
6413e95c48
Fix bug
2021-05-16 20:05:22 +01:00
Neil Alexander
62a13e87c4
Merge branch 'future' into cleanup
2021-05-16 20:02:28 +01:00
Neil Alexander
416eadbcff
Use uint64 for MTU for forward-compatibility
2021-05-16 20:00:45 +01:00
Arceliar
a6c254c87a
more nodeinfo WIP, still needs admin socket support
2021-05-16 14:00:37 -05:00
Arceliar
2e45e970c6
work-in-progress adding nodeinfo
2021-05-16 13:52:52 -05:00
Neil Alexander
2d01386d6e
Refactor admin socket, export request/response structs, remove types package
2021-05-16 19:51:09 +01:00
Arceliar
2c7b22db92
allow for multiple traffic types inside the session at the tuntap level, only implement typeSessionTraffic for now
2021-05-16 13:01:54 -05:00
Arceliar
dfca87ba80
start a reader to disard traffic if the tun is disabled
2021-05-15 16:44:56 -05:00
Arceliar
f61507238e
cleanup unused MTU code from tun keystore
2021-05-15 16:23:44 -05:00
Arceliar
5b00273dfc
move sessionfirewall into the tuntap. this needs testing. the name is also slightly wrong, since a crypto session can still be set up, packets are just accepted/rejected at the tun/tap level instead
2021-05-15 15:55:47 -05:00
Arceliar
7e10025ef0
get minimal admin socket working (introspection only, no ability to add peers etc)
2021-05-15 15:16:35 -05:00
Arceliar
85fae23919
remove TunnelRouting from config, remove Signing from key names
2021-05-15 15:00:12 -05:00
Arceliar
e83b5d08a8
remove ckr
2021-05-15 14:54:25 -05:00
Arceliar
cd4144f22b
add minimal src/yggdrasil/api.go functions inspect internal state
2021-05-15 14:50:56 -05:00
Arceliar
7d49b86456
set version to an obviously unstable value, fix peer address formatting in the connect/disconnect messages
2021-05-15 13:44:55 -05:00
Neil Alexander
577b7118ad
remove debug logging
2021-05-10 23:16:22 +01:00
Neil Alexander
815f2a2822
Respond with ICMPv6 Packet Too Big over network
2021-05-10 23:09:59 +01:00
Neil Alexander
57ea61b338
Remove reconfiguration on SIGHUP - it didn't work reliably anyway
2021-05-10 22:47:28 +01:00
Neil Alexander
e12c639c21
Remove obsolete switch options
2021-05-10 22:42:57 +01:00
Neil Alexander
05caf36f4e
Fix AllowedPublicKeys
2021-05-10 22:39:12 +01:00
Neil Alexander
c20b66f3b6
Metadata/version tweaks
2021-05-10 22:31:01 +01:00
Neil Alexander
bb92e61e68
Remove encryption public key options (they are now derived from ed25519 key conversion in IW), also bump link version number
2021-05-10 22:06:38 +01:00
Arceliar
b48962a69a
limit MTU to no more than what the packetconn claims to support
2021-05-09 11:27:37 -05:00
Arceliar
3bfd891fd4
reduce time keystore mutex is held and (apparently) fix a deadlock
2021-05-09 09:20:28 -05:00
Arceliar
ed85cf08f2
WIP close the ironwood PacketConn when shutting down
2021-05-08 12:31:26 -05:00
Arceliar
8bed79370b
(broken state) WIP, compiles and passes the netns ping test
2021-05-08 11:52:22 -05:00
Arceliar
b345806e3f
(broken state) more WIP (cleanup)
2021-05-08 11:35:04 -05:00
Arceliar
0f787364de
(broken state) more tuntap WIP to add out-of-band key lookup
2021-05-08 11:32:57 -05:00
Arceliar
5b22392c66
(broken state) more WIP on tuntap stuff
2021-05-08 11:14:50 -05:00
Arceliar
0cff56fcc1
(broken state) WIP on tuntap
2021-05-08 10:39:07 -05:00
Arceliar
f1c37f8440
(broken state) WIP rewriting core to use ironwood
2021-05-08 08:35:58 -05:00
Arceliar
ace7b43b6d
(broken state) WIP address migration
2021-05-08 07:25:53 -05:00
Arceliar
ae96148008
Merge branch 'pathfinder' of https://github.com/Arceliar/yggdrasil-go into future
2021-05-08 06:45:10 -05:00
Arceliar
6eb74a40e1
Merge pull request #751 from Arceliar/bugfix
...
Fix goroutine leak in link.go
2020-12-19 11:04:13 -06:00
Arceliar
78073429a2
Merge branch 'pathfinder' of https://github.com/Arceliar/yggdrasil-go into pathfinder
2020-12-19 06:03:59 -06:00
Arceliar
0ba2ad74fe
use source routes in the dht (when available)
2020-12-19 06:03:28 -06:00
Arceliar
a8810c7ee9
if the link handler exits early due to an existing connection, then have it return a channel to that connection which closes when the connection is closed, so we can choose to block on that to avoid spamming connection attempts with dial
2020-12-13 16:29:03 -06:00
Arceliar
1daf3e7bd7
remove link.go block on oldIntf if we already have a connection to the same node, this spams connections, so it's not a good long-term fix if that's where the goroutine leak is
2020-12-13 16:16:14 -06:00
Neil Alexander
b9f35c5530
Return ICMPv6 Destination Unreachable for unknown destinations ( #748 )
...
* Return ICMPv6 Destination Unreachable for unknown destinations
* Update go.mod/go.sum for yggdrasil-extras
* go mod tidy
2020-12-06 19:47:25 +00:00
Neil Alexander
cb3d8647de
Merge pull request #744 from octeep/master
...
Fix DefaultIfName for OpenBSD
2020-12-06 13:48:09 +00:00
Arceliar
df1239b054
attempting to debug/fix a possible goroutine leak
2020-11-25 02:44:13 -06:00
Arceliar
939ffb02f8
adjust when dht reqs are reset
2020-11-14 15:05:02 -06:00
octeep
04e890fcc3
Change DefaultIfName from "/dev/tun0" to "tun0"
...
Specifying the full path to the interface in OpenBSD would result in:
panic: Interface name must be tun[0-9]*
Therefore, DefaultIfName should be changed to tun0 in order to make yggdrasil work out of the box.
2020-11-13 06:38:27 +00:00
Arceliar
428789f24c
simplify switch parent selection and minor source routing improvements
2020-11-09 19:01:11 -06:00
Arceliar
144d42c773
send dht responses via reverse path (fixes some possible DDoS issues with the old coord approach)
2020-11-08 06:09:55 -06:00
Arceliar
0ac203b007
adjust how sessions learn source routes, try to recover faster if coords change (but assume the old path still works until we get a ping through that gives us a new path)
2020-11-08 05:39:30 -06:00
Arceliar
e19e938f64
safer pathfinding behavior
2020-11-07 15:19:09 -06:00
Arceliar
994c26e5f7
simplify pathfinder
2020-11-07 12:08:01 -06:00
Arceliar
b5cd40b801
WIP very simple insecure proof-of-concept for pathfinding and source routing
2020-11-07 10:50:55 -06:00
Arceliar
e2521de94d
add path information to (protocol) traffic packets as they flow through the network, and a field for a reply path
2020-11-07 09:44:34 -06:00
Arceliar
36e4ce4b0b
WIP rough implementation of the source routed part of hybrid routing, does not work if coord length is too long (>127 hops)
2020-11-07 07:10:13 -06:00
Arceliar
92dbb48eda
add (but don't use) offset field for (protocol) traffic packets
2020-11-07 06:18:09 -06:00
Arceliar
1d1c6efa1f
attempt to keep TCP listener alive if there's a temporary error (e.g. too many open files), just pause and retry later
2020-10-18 11:01:18 -05:00
Arceliar
b6c894bc01
Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into develop-future
2020-10-11 07:35:28 -05:00
Arceliar
afebc1f93d
Merge pull request #712 from Arceliar/bugfix
...
[future] possibly fix missing switch peer issue
2020-10-11 07:34:19 -05:00
Neil Alexander
fdb296047b
Merge branch 'future' into develop-future
2020-09-27 20:28:26 +01:00
Ryan Westlund
d6d2d9c19a
Accept some golint suggestions ( #690 )
...
* Fixed some linter issues
* Simplified isBetter method
* Accept some linter suggestions
* Fix typo
Co-authored-by: klesomik <klesomiks@gmail.com>
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2020-09-27 14:42:46 +01:00