GithubHelp home page GithubHelp logo

tun2socks-packettunneldemo's Introduction

ServerSide

https://github.com/riobard/go-shadowsocks2

1st:

go get -u -v github.com/riobard/go-shadowsocks2

2nd:

cd /go/bin ./go-shadowsocks2 -s ss://AES-256-CFB:abcd1234@:8488 -verbose

Tun2socks-mobile-demo

需要配置gomobile的环境,才能进行编译

go-tun2socks-mobile 生成的framework 使用demo tun2socks.go 根据报错做了简单的修改,注意对应参数个数以及依赖的go-tun2socks的方法是否发生了变化

Thx: @ BearFree的VpnManager @ eycorsican/go-tun2socks / go-tun2socks-mobile @ riobard/go-shadowsocks2 @ SimpleTunnel

TBD: 1.没有仔细查api,需要做route traffic可能是需要设置代理添加规则(ss) 2.修改tun2socks.go 暴露出V🤮ray可以使用的方法,有空再来弄下

V🤮ray 内存问题

*.go

package tun2socks

import (
	"time"
	"context"
	"strings"
	vcore "v2ray.com/core"
	vproxyman "v2ray.com/core/app/proxyman"
	vbytespool "v2ray.com/core/common/bytespool"
	"github.com/eycorsican/go-tun2socks/common/log"
	"github.com/eycorsican/go-tun2socks/core"
	"github.com/eycorsican/go-tun2socks/proxy/shadowsocks"
	"github.com/eycorsican/go-tun2socks/proxy/v2ray"
)

type PacketFlow interface {
	WritePacket(packet []byte)
}

var lwipStack core.LWIPStack

func InputPacket(data []byte) {
	lwipStack.Write(data)
}

func StartShadowsocks(packetFlow PacketFlow, proxyHost string, proxyPort int, proxyCipher, proxyPassword string) {
	if packetFlow != nil {
		lwipStack = core.NewLWIPStack()
		core.RegisterTCPConnHandler(shadowsocks.NewTCPHandler(core.ParseTCPAddr(proxyHost, uint16(proxyPort)).String(), proxyCipher, proxyPassword,nil))
		core.RegisterUDPConnHandler(shadowsocks.NewUDPHandler(core.ParseUDPAddr(proxyHost, uint16(proxyPort)).String(), proxyCipher, proxyPassword, 30*time.Second,nil,nil))
		core.RegisterOutputFn(func(data []byte) (int, error) {
			packetFlow.WritePacket(data)
			return len(data), nil
		})
	}
}

func StartV2Ray(packetFlow PacketFlow, configBytes []byte) {
	if packetFlow != nil {
		lwipStack = core.NewLWIPStack()

		core.SetBufferPool(vbytespool.GetPool(core.BufSize))

		v, err := vcore.StartInstance("json", configBytes)
		if err != nil {
			log.Fatalf("start V instance failed: %v", err)
		}

		sniffingConfig := &vproxyman.SniffingConfig{
			Enabled:             true,
			DestinationOverride: strings.Split("tls,http", ","),
		}
		ctx := vproxyman.ContextWithSniffingConfig(context.Background(), sniffingConfig)
		core.RegisterTCPConnHandler(v2ray.NewTCPHandler(ctx, v))
		core.RegisterUDPConnHandler(v2ray.NewUDPHandler(ctx, v, 30*time.Second))

		core.RegisterOutputFn(func(data []byte) (int, error) {
			packetFlow.WritePacket(data)
			return len(data), nil
		})
	}
}
{
    "outbounds": [
        {
            "protocol": "vmess",
            "settings": {
                "vnext": [
                    {
                        "address": "xxx",
                        "port": 37844,
                        "users": [
                            {
                                "id": "c1722917-9415-4466-8d65-8fb047de7ba4",
                                "alterId": 233,
                                "security": "auto"
                            }
                        ]
                    }
                ]
            },
            "mux": {
                "enabled": true
            }
        }
    ]
    
}

tun2socks-packettunneldemo's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tun2socks-packettunneldemo's Issues

tun2socks

作者你好 方便不方便 把你Demo里 的tun2socks库 Go源码分享一下 想做一下 比较 和扩展

Separate help

Hello, I am trying to make a DNS only vpn, in otherwords, you're able to use a custom DNS server on mobile data.

I just want something that I can place my DNS servers ip in like

let dns = "192.168.1.1"

and then in the app I just press connect, then it turns the vpn and uses my dns server. However, everything else is sent through my network as normal so it is not actually a VPN.

Kind of like the 1.1.1.1 app from cloudflare

在哪里调用startTunnel?

你的demo我无法运行,我根据你的demo写了一个类似的,但没见到你在哪有调用startTunnel?

还有在设置中会提示“v2ray需要更新”,这是什么原因?v2ray-core版本过低?

SIOCGIFMTU failed: Device not configured

运行后,服务起不来,包这个错误
SIOCGIFMTU failed: Device not configured
NEVirtualInterfaceAdjustReadBufferSize: interface_get_mtu failed (6), defaulting to max mtu

无法开启,debug模式出错

无法开启VPN

通过Xcode菜单中 Debug -> attach to process by PID or name,填入 PacketTunnel,然后 Attach,会出现错误

6311570532852_ pic_hd

大佬,问下服务器参数

大佬,麻烦问下,按照您的这个demo, 服务器的参数怎么配置,能不能给我一个例子。有tls ws协议这快么?

大佬,开关开启后,切换出去,会断掉

Last disconnect error changed from "none" to "The VPN session failed because an internal error occurred."

进程控制台会报错

`{
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "xxxx",
"port": 443,
"users": [
{
"id": "xxxxxxxxxxxxxx",
"alterId": 12,
"security": "auto"
}
]
}
]
},
"streamSettings":{
"network":"ws",
"security":"tls",
"tlssettings":{
"allowInsecure":true,
"serverName":""
},
"wssettings":{
"connectionReuse":true,
"headers":{
"Host":""
},
"path":"/help"
}
}
}
]

}
`
这个是我的配置文件,还是翻不了,请问大佬这是什么情况啊?

是否需要导入匹配规则

内存错误崩溃

image
大佬,请教下,我编译出来的framework没有你示例中两个参数的方法,我调用第一个方法报内存错误崩溃

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.