新增dnst隧道

This commit is contained in:
wenyifan
2026-07-04 13:48:22 +08:00
parent 74fef8838e
commit 5b1e38e2c0
3 changed files with 107 additions and 0 deletions
+25
View File
@@ -3,6 +3,7 @@ package dns
import (
"context"
"crypto/tls"
"errors"
"net"
"strings"
@@ -65,6 +66,7 @@ func (l *dnsTunnelListener) Init(md md.Metadata) (err error) {
if err != nil {
return
}
bufferConn := conn
conn = dns_util.ServerConn(
conn,
@@ -82,6 +84,10 @@ func (l *dnsTunnelListener) Init(md md.Metadata) (err error) {
limiter.ServiceOption(l.options.Service),
limiter.NetworkOption(conn.LocalAddr().Network()),
)
conn = &setBufferPacketConn{
PacketConn: conn,
bufferConn: bufferConn,
}
config := &quic.Config{
KeepAlivePeriod: l.md.keepAlivePeriod,
@@ -203,3 +209,22 @@ func (c *dnsTunnelConn) LocalAddr() net.Addr {
func (c *dnsTunnelConn) RemoteAddr() net.Addr {
return c.raddr
}
type setBufferPacketConn struct {
net.PacketConn
bufferConn net.PacketConn
}
func (c *setBufferPacketConn) SetReadBuffer(n int) error {
if pc, ok := c.bufferConn.(interface{ SetReadBuffer(int) error }); ok {
return pc.SetReadBuffer(n)
}
return errors.New("dns: set read buffer unsupported")
}
func (c *setBufferPacketConn) SetWriteBuffer(n int) error {
if pc, ok := c.bufferConn.(interface{ SetWriteBuffer(int) error }); ok {
return pc.SetWriteBuffer(n)
}
return errors.New("dns: set write buffer unsupported")
}