dokodemo

package
v1.2.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 28, 2022 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package dokodemo implements a dokodemo-door proxy.Server.

Server that wants to relay data to a dokodemo target address.

dokodemo 是 v2ray的 dokodemo-door 协议的实现。不含透明代理功能。

严格来说 dokodemo-door 并不是一个 "协议", 而是一个预先指定目标的转发方式。

dokodemo 是 listen端, 监听一个普通的tcp/udp端口,试图将一切流量转发到特定的预定义的地址. 并不是直接连接,而是转发到dial。

dokodemo 属于 “单目标”代理,而其它proxy.Server 一般都属于 “泛目标”代理。

内部实际上就是 指定了目标的 纯tcp/udp协议,属于监听协议中最简单、最纯粹的一种。

Example 应用例子

使用 dokodemo 做监听,用direct 拨号,指定一个target,那么实际上就是把 该监听的节点 与远程target间建立了一个信道;

dokodemo 每监听到一个新连接, 就会新增一条 与 target 间的信道.

所以可能比较适合 中转机的情况,

比如如果有两个服务器 A和 B, 和客户C。

我们只告诉C 服务器B 的地址,然后告诉它B使用vless协议。然后C就会用vless协议对B 拨号。

此时B我们实际配置 为用 dokodemo 监听,而不是用vless监听;然后 dokodemo 的目标 指向 服务器A 的 vless监听端口. 这样就形成了一个中转机制.

实际例子: https://www.40huo.cn/blog/wireguard-over-vless.html

就是说,任意门把客户数据的出口、自己的入口点从本地搬到了某个代理服务器的入口,然后指定了该数据的实际远程目标;就好像数据是从代理服务器直接发出的一样.

到底是哪个代理服务器,由outbound(即本作的dial)以及routing配置决定的。如果没有配置routing,那就是默认走第一个dial.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewServer

func NewServer() (proxy.Server, error)

Types

type Server

type Server struct {
	proxy.Base
	// contains filtered or unexported fields
}

implements proxy.Server

func (*Server) Handshake

func (s *Server) Handshake(underlay net.Conn) (net.Conn, netLayer.MsgConn, netLayer.Addr, error)

func (*Server) Name

func (*Server) Name() string

type ServerCreator

type ServerCreator struct{ proxy.CreatorCommonStruct }

func (ServerCreator) NewServer

func (ServerCreator) NewServer(lc *proxy.ListenConf) (proxy.Server, error)

use lc.TargetAddr

func (ServerCreator) URLToListenConf added in v1.2.4

func (ServerCreator) URLToListenConf(url *url.URL, lc *proxy.ListenConf, format int) (*proxy.ListenConf, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL