Compare commits

..

80 Commits

Author SHA1 Message Date
世界
2fc9dfa9d2
documentation: Bump version 2025-05-05 14:16:15 +08:00
世界
48349b209d
Update minor dependencies 2025-05-05 13:56:13 +08:00
世界
df0d1fd512
Update certmagic and providers 2025-05-05 13:56:13 +08:00
世界
efab4bdf05
Update protobuf and grpc 2025-05-05 13:56:13 +08:00
世界
8c0d813f34
Add control options for listeners 2025-05-05 13:56:13 +08:00
世界
271a12431b
Update quic-go to v0.51.0 2025-05-05 13:56:13 +08:00
世界
432f282d7f
Update utls to v1.7.0 2025-05-05 13:39:11 +08:00
世界
40ba77ff4e
Handle EDNS version downgrade 2025-05-05 13:39:11 +08:00
世界
d13f159753
documentation: Fix anytls padding scheme description 2025-05-05 13:39:11 +08:00
安容
7578bf6425
Report invalid DNS address early 2025-05-05 13:39:10 +08:00
世界
bb785f4450
Fix wireguard listen_port 2025-05-05 13:39:09 +08:00
世界
40aa64fe8b
clash-api: Add more meta api 2025-05-05 13:39:08 +08:00
世界
5591ad5348
Fix DNS lookup 2025-05-05 13:39:08 +08:00
世界
2dab16bc63
Fix fetch ECH configs 2025-05-05 13:39:07 +08:00
reletor
1cbf5db517
documentation: Minor fixes 2025-05-05 13:39:07 +08:00
caelansar
6be4881368
Fix callback deletion in UDP transport 2025-05-05 13:39:06 +08:00
世界
0332ae7b63
documentation: Try to make the play review happy 2025-05-05 13:39:06 +08:00
世界
17c0494d58
Fix missing handling of legacy domain_strategy options 2025-05-05 13:39:05 +08:00
世界
123b0c949b
Improve local DNS server 2025-05-05 13:39:05 +08:00
anytls
ced5623af1
Update anytls
Co-authored-by: anytls <anytls>
2025-05-05 13:39:05 +08:00
世界
06562c9dd9
Fix DNS dialer 2025-05-05 13:39:05 +08:00
世界
3a038c8b05
release: Skip override version for iOS 2025-05-05 13:39:04 +08:00
iikira
dba42bce9e
Fix UDP DNS server crash
Signed-off-by: iikira <i2@mail.iikira.com>
2025-05-05 13:39:03 +08:00
ReleTor
be91df61c9
Fix fetch ECH configs 2025-05-05 13:39:03 +08:00
世界
3f46bfc2ca
Allow direct outbounds without domain_resolver 2025-05-05 13:39:03 +08:00
世界
8afb6108c0
Fix Tailscale dialer 2025-05-05 13:39:02 +08:00
dyhkwong
850e37d1e5
Fix DNS over QUIC stream close 2025-05-05 13:39:02 +08:00
anytls
a6e30281e1
Update anytls
Co-authored-by: anytls <anytls>
2025-05-05 13:39:01 +08:00
Rambling2076
12c14f9ba3
Fix missing with_tailscale in Dockerfile
Signed-off-by: Rambling2076 <Rambling2076@proton.me>
2025-05-05 13:39:01 +08:00
世界
2bf9dcbc0e
Fail when default DNS server not found 2025-05-05 13:39:01 +08:00
世界
c83933c856
Update gVisor to 20250319.0 2025-05-05 13:39:00 +08:00
世界
10da6d6c8e
Explicitly reject detour to empty direct outbounds 2025-05-05 13:38:44 +08:00
世界
008a012a08
Add netns support 2025-05-05 13:38:44 +08:00
世界
cc39fc7701
Add wildcard name support for predefined records 2025-05-05 13:38:43 +08:00
世界
b4c75cdcb2
Remove map usage in options 2025-05-05 13:38:43 +08:00
世界
8f1e6ae1b5
Fix unhandled DNS loop 2025-05-05 13:38:42 +08:00
世界
36167419ff
Add wildcard-sni support for shadow-tls inbound 2025-05-05 13:38:42 +08:00
k9982874
d8d2ed635f
Add ntp protocol sniffing 2025-05-05 13:38:42 +08:00
世界
50541a9785
option: Fix marshal legacy DNS options 2025-05-05 13:38:41 +08:00
世界
2ddece2965
Make domain_resolver optional when only one DNS server is configured 2025-05-05 13:38:41 +08:00
世界
5f8bd97653
Fix DNS lookup context pollution 2025-05-05 13:38:40 +08:00
世界
19e19085dc
Fix http3 DNS server connecting to wrong address 2025-05-05 13:38:40 +08:00
Restia-Ashbell
1e1e204c42
documentation: Fix typo 2025-05-05 13:38:40 +08:00
anytls
3a41f3a553
Update sing-anytls
Co-authored-by: anytls <anytls>
2025-05-05 13:38:39 +08:00
k9982874
dff5c7a1e9
Fix hosts DNS server 2025-05-05 13:38:39 +08:00
世界
cedbdcb509
Fix UDP DNS server crash 2025-05-05 13:38:38 +08:00
世界
42b86b1a63
documentation: Fix missing ip_accept_any DNS rule option 2025-05-05 13:38:38 +08:00
世界
eca8348171
Fix anytls dialer usage 2025-05-05 13:38:37 +08:00
世界
585ed4be52
Move predefined DNS server to rule action 2025-05-05 13:38:37 +08:00
世界
31030787db
Fix domain resolver on direct outbound 2025-05-05 13:38:37 +08:00
Zephyruso
dd62c3f1f1
Fix missing AnyTLS display name 2025-05-05 13:38:36 +08:00
anytls
901a986b8e
Update sing-anytls
Co-authored-by: anytls <anytls>
2025-05-05 13:38:35 +08:00
Estel
367d486220
documentation: Fix typo
Signed-off-by: Estel <callmebedrockdigger@gmail.com>
2025-05-05 13:38:35 +08:00
TargetLocked
2934d440d0
Fix parsing legacy DNS options 2025-05-05 13:38:35 +08:00
世界
5c137f3d99
Fix DNS fallback 2025-05-05 13:38:35 +08:00
世界
a3ce614384
documentation: Fix missing hosts DNS server 2025-05-05 13:38:34 +08:00
anytls
3b73b7a107
Add MinIdleSession option to AnyTLS outbound
Co-authored-by: anytls <anytls>
2025-05-05 13:38:34 +08:00
ReleTor
547d596448
documentation: Minor fixes 2025-05-05 13:38:33 +08:00
libtry486
552183de63
documentation: Fix typo
fix typo

Signed-off-by: libtry486 <89328481+libtry486@users.noreply.github.com>
2025-05-05 13:38:33 +08:00
Alireza Ahmadi
254138968c
Fix Outbound deadlock 2025-05-05 13:38:33 +08:00
世界
42e47aca83
documentation: Fix AnyTLS doc 2025-05-05 13:38:32 +08:00
anytls
8ad35513f0
Add AnyTLS protocol 2025-05-05 13:38:32 +08:00
世界
d446e4f9fd
Migrate to stdlib ECH support 2025-05-05 13:38:31 +08:00
世界
be7b73d112
Add fallback local DNS server for iOS 2025-05-05 13:38:30 +08:00
世界
60632fc906
Get darwin local DNS server from libresolv 2025-05-05 13:38:29 +08:00
世界
3efc7f6cfc
Improve resolve action 2025-05-05 13:38:29 +08:00
世界
6d180e1023
Fix toolchain version 2025-05-05 13:38:29 +08:00
世界
fd536ad2f2
Add back port hopping to hysteria 1 2025-05-05 13:38:29 +08:00
xchacha20-poly1305
1d14aaba76
Remove single quotes of raw Moziila certs 2025-05-05 13:38:29 +08:00
世界
271c8cb02c
Add Tailscale endpoint 2025-05-05 13:38:12 +08:00
世界
6b19bda397
Build legacy binaries with latest Go 2025-05-05 12:12:00 +08:00
世界
01e00a506e
documentation: Remove outdated icons 2025-05-05 12:11:59 +08:00
世界
5e09417569
documentation: Certificate store 2025-05-05 12:11:59 +08:00
世界
ec752973ea
documentation: TLS fragment 2025-05-05 12:11:59 +08:00
世界
a31592a04c
documentation: Outbound domain resolver 2025-05-05 12:11:59 +08:00
世界
d917a9ff4f
documentation: Refactor DNS 2025-05-05 12:11:58 +08:00
世界
85ce9157ca
Add certificate store 2025-05-05 12:11:58 +08:00
世界
948973bad1
Add TLS fragment support 2025-05-05 12:11:50 +08:00
世界
5c5f6d2e17
refactor: Outbound domain resolver 2025-05-05 12:10:50 +08:00
世界
a1095f8332
refactor: DNS 2025-05-05 12:10:43 +08:00
9 changed files with 22 additions and 45 deletions

View File

@ -46,7 +46,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.24.3
go-version: ^1.24
- name: Check input version
if: github.event_name == 'workflow_dispatch'
run: |-
@ -109,7 +109,7 @@ jobs:
if: ${{ ! matrix.legacy_go }}
uses: actions/setup-go@v5
with:
go-version: ^1.24.3
go-version: ^1.24
- name: Cache Legacy Go
if: matrix.require_legacy_go
id: cache-legacy-go
@ -294,7 +294,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.24.3
go-version: ^1.24
- name: Setup Android NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
@ -374,7 +374,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.24.3
go-version: ^1.24
- name: Setup Android NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
@ -472,7 +472,7 @@ jobs:
if: matrix.if
uses: actions/setup-go@v5
with:
go-version: ^1.24.3
go-version: ^1.24
- name: Setup Xcode stable
if: matrix.if && github.ref == 'refs/heads/main-next'
run: |-

View File

@ -28,7 +28,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.24.3
go-version: ^1.24
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:

View File

@ -25,7 +25,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.24.3
go-version: ^1.24
- name: Check input version
if: github.event_name == 'workflow_dispatch'
run: |-
@ -66,7 +66,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.24.3
go-version: ^1.24
- name: Setup Android NDK
if: matrix.os == 'android'
uses: nttld/setup-ndk@v1

View File

@ -50,30 +50,12 @@ func (l *Listener) ListenUDP() (net.PacketConn, error) {
func (l *Listener) DialContext(dialer net.Dialer, ctx context.Context, network string, address string) (net.Conn, error) {
return ListenNetworkNamespace[net.Conn](l.listenOptions.NetNs, func() (net.Conn, error) {
if l.listenOptions.BindInterface != "" {
dialer.Control = control.Append(dialer.Control, control.BindToInterface(service.FromContext[adapter.NetworkManager](l.ctx).InterfaceFinder(), l.listenOptions.BindInterface, -1))
}
if l.listenOptions.RoutingMark != 0 {
dialer.Control = control.Append(dialer.Control, control.RoutingMark(uint32(l.listenOptions.RoutingMark)))
}
if l.listenOptions.ReuseAddr {
dialer.Control = control.Append(dialer.Control, control.ReuseAddr())
}
return dialer.DialContext(ctx, network, address)
})
}
func (l *Listener) ListenPacket(listenConfig net.ListenConfig, ctx context.Context, network string, address string) (net.PacketConn, error) {
return ListenNetworkNamespace[net.PacketConn](l.listenOptions.NetNs, func() (net.PacketConn, error) {
if l.listenOptions.BindInterface != "" {
listenConfig.Control = control.Append(listenConfig.Control, control.BindToInterface(service.FromContext[adapter.NetworkManager](l.ctx).InterfaceFinder(), l.listenOptions.BindInterface, -1))
}
if l.listenOptions.RoutingMark != 0 {
listenConfig.Control = control.Append(listenConfig.Control, control.RoutingMark(uint32(l.listenOptions.RoutingMark)))
}
if l.listenOptions.ReuseAddr {
listenConfig.Control = control.Append(listenConfig.Control, control.ReuseAddr())
}
return listenConfig.ListenPacket(ctx, network, address)
})
}

View File

@ -105,7 +105,7 @@ func (c *Client) Exchange(ctx context.Context, transport adapter.DNSTransport, m
}
question := message.Question[0]
if options.ClientSubnet.IsValid() {
message = SetClientSubnet(message, options.ClientSubnet)
message = SetClientSubnet(message, options.ClientSubnet, true)
}
isSimpleRequest := len(message.Question) == 1 &&
len(message.Ns) == 0 &&

View File

@ -6,11 +6,7 @@ import (
"github.com/miekg/dns"
)
func SetClientSubnet(message *dns.Msg, clientSubnet netip.Prefix) *dns.Msg {
return setClientSubnet(message, clientSubnet, true)
}
func setClientSubnet(message *dns.Msg, clientSubnet netip.Prefix, clone bool) *dns.Msg {
func SetClientSubnet(message *dns.Msg, clientSubnet netip.Prefix, override bool) *dns.Msg {
var (
optRecord *dns.OPT
subnetOption *dns.EDNS0_SUBNET
@ -23,6 +19,9 @@ findExists:
var isEDNS0Subnet bool
subnetOption, isEDNS0Subnet = option.(*dns.EDNS0_SUBNET)
if isEDNS0Subnet {
if !override {
return message
}
break findExists
}
}
@ -38,14 +37,14 @@ findExists:
},
}
message.Extra = append(message.Extra, optRecord)
} else if clone {
return setClientSubnet(message.Copy(), clientSubnet, false)
} else {
message = message.Copy()
}
if subnetOption == nil {
subnetOption = new(dns.EDNS0_SUBNET)
subnetOption.Code = dns.EDNS0SUBNET
optRecord.Option = append(optRecord.Option, subnetOption)
}
subnetOption.Code = dns.EDNS0SUBNET
if clientSubnet.Addr().Is4() {
subnetOption.Family = 1
} else {

View File

@ -2,10 +2,6 @@
icon: material/alert-decagram
---
#### 1.12.0-beta.12
* Fixes and improvements
#### 1.12.0-beta.10
* Add control options for listeners **1**

4
go.mod
View File

@ -25,10 +25,10 @@ require (
github.com/sagernet/fswatch v0.1.1
github.com/sagernet/gomobile v0.1.6
github.com/sagernet/gvisor v0.0.0-20250325023245-7a9c0f5725fb
github.com/sagernet/quic-go v0.51.0-beta.5
github.com/sagernet/quic-go v0.51.0-beta.1
github.com/sagernet/sing v0.6.10-0.20250505040842-ba62fee9470f
github.com/sagernet/sing-mux v0.3.2
github.com/sagernet/sing-quic v0.4.1-0.20250507070325-d2fb1cb09565
github.com/sagernet/sing-quic v0.4.1-0.20250505055457-ae141e8be88a
github.com/sagernet/sing-shadowsocks v0.2.7
github.com/sagernet/sing-shadowsocks2 v0.2.0
github.com/sagernet/sing-shadowtls v0.2.1-0.20250503051639-fcd445d33c11

8
go.sum
View File

@ -165,15 +165,15 @@ github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a h1:ObwtHN2VpqE0ZN
github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
github.com/sagernet/nftables v0.3.0-beta.4 h1:kbULlAwAC3jvdGAC1P5Fa3GSxVwQJibNenDW2zaXr8I=
github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/llyVDeapVoENYBDS8=
github.com/sagernet/quic-go v0.51.0-beta.5 h1:/mME3sJvQ8k/JKP0oC/9XoWrm0znO7hWXviB5yiipJY=
github.com/sagernet/quic-go v0.51.0-beta.5/go.mod h1:OV+V5kEBb8kJS7k29MzDu6oj9GyMc7HA07sE1tedxz4=
github.com/sagernet/quic-go v0.51.0-beta.1 h1:bDMzfFlUHvMiKYvvPbOTKLWOYJFaACpssQYqsViQknI=
github.com/sagernet/quic-go v0.51.0-beta.1/go.mod h1:OV+V5kEBb8kJS7k29MzDu6oj9GyMc7HA07sE1tedxz4=
github.com/sagernet/sing v0.6.9/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
github.com/sagernet/sing v0.6.10-0.20250505040842-ba62fee9470f h1:lttLhNtFuMItQcTD29QP6aBS8kR1UhG7zZ+pwzTYkFM=
github.com/sagernet/sing v0.6.10-0.20250505040842-ba62fee9470f/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
github.com/sagernet/sing-mux v0.3.2 h1:meZVFiiStvHThb/trcpAkCrmtJOuItG5Dzl1RRP5/NE=
github.com/sagernet/sing-mux v0.3.2/go.mod h1:pht8iFY4c9Xltj7rhVd208npkNaeCxzyXCgulDPLUDA=
github.com/sagernet/sing-quic v0.4.1-0.20250507070325-d2fb1cb09565 h1:svvkxc3NtONBrvB2rrNVmFmFYoBv+jORDOFX6tvFDjY=
github.com/sagernet/sing-quic v0.4.1-0.20250507070325-d2fb1cb09565/go.mod h1:6K3ESuaXFTjz2Dv6/PNQqg5UK0J1ZO49rqrU2ScZBKg=
github.com/sagernet/sing-quic v0.4.1-0.20250505055457-ae141e8be88a h1:5W8tI4JnKtpDkW23yekxjGA/Blo6oU4frsmOeQu7/9k=
github.com/sagernet/sing-quic v0.4.1-0.20250505055457-ae141e8be88a/go.mod h1:6K3ESuaXFTjz2Dv6/PNQqg5UK0J1ZO49rqrU2ScZBKg=
github.com/sagernet/sing-shadowsocks v0.2.7 h1:zaopR1tbHEw5Nk6FAkM05wCslV6ahVegEZaKMv9ipx8=
github.com/sagernet/sing-shadowsocks v0.2.7/go.mod h1:0rIKJZBR65Qi0zwdKezt4s57y/Tl1ofkaq6NlkzVuyE=
github.com/sagernet/sing-shadowsocks2 v0.2.0 h1:wpZNs6wKnR7mh1wV9OHwOyUr21VkS3wKFHi+8XwgADg=