Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP和SOCKS协议是否可以使用同一个端口 #412

Closed
lovetcp opened this issue Mar 8, 2017 · 20 comments
Closed

HTTP和SOCKS协议是否可以使用同一个端口 #412

lovetcp opened this issue Mar 8, 2017 · 20 comments

Comments

@lovetcp
Copy link

lovetcp commented Mar 8, 2017

提交 Issue 之前请先阅读 Issue 指引,然后回答下面的问题,谢谢。
Please read the instruction and answer the following questions before submitting your issue. Thank you.

  1. 你正在使用哪个版本的 V2Ray?(如果服务器和客户端使用了不同版本,请注明)
    What version of V2Ray are you using (If you deploy different version on server and client, please explicitly point out)?
    V2Ray v2.19 (One for all) 20170217

  2. 你的使用场景是什么?比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。
    What's your scenario of using V2Ray? E.g., Watching YouTube videos in Chrome via Socks/VMess proxy.
    现在我在安卓手机上进行VPN代理,由于手机的VPN代理只有1080端口可以使用,那么我的应用就只能选择HTTP或者SOCKS的一种,现在我希望能够满足这两种协议的应用都能够通过VPN进行代理。

  3. 你看到的不正常的现象是什么?
    What did you see?
    现在VPN只能识别一个入口端口,就只能启动一种协议代理,

  4. 你期待看到的正确表现是怎样的?
    What's your expectation?
    所有应用都能够通过一个端口进行VPN代理。

  5. 请附上你的配置文件(提交 Issue 前请隐藏服务器端IP地址)。
    Please attach your configuration file (Mask IP addresses before submit this issue).

    Server Configuration File(服务器端配置文件):

    // 在这里附上服务器端配置文件
    // Please attach your server configuration file here.

    Client Configuration File(客户端配置文件):

    // 在这里附上客户端配置文件
    // Please attach your client configuration file here.
  6. 请附上出错时软件输出的日志。在 Linux 中,日志通常在 /var/log/v2ray/error.log 文件中。
    Please attach the log file, especially the bottom lines if the file is large. Log file is usually /var/log/v2ray/error.log on Linux.

    Server Log File(服务器端日志):

    // 在这里附上服务器端日志
    // Please attach your server log here.
    

    Client Log File(客户端日志):

    // 在这里附上客户端日志
    // Please attach your client log here.
    
@v2ray
Copy link
Collaborator

v2ray commented Mar 8, 2017

为什么需要同时使用两种协议?

@lovetcp
Copy link
Author

lovetcp commented Mar 9, 2017

因为我想用在手机上进行代理,手机上的应用存在多种协议,如果不同协议需要开放一个端口,增加了对接困难。另外问一下安卓手机上的客户端配置json文件是否存在不同?我在WINDOWS环境下验证过的配置文件config.json无法在安卓手机上使用。

@lovetcp
Copy link
Author

lovetcp commented Mar 9, 2017

手机上开放VPN模式的默认端口是1080,有就是我选择一种协议,那么VPN方式就需要调整。

@xiaokangwang
Copy link
Contributor

目前的代码应该不支持这个功能,但是鉴于SSR已经支持这个功能,说明开发这个功能在技术上是可行的。

@lovetcp
Copy link
Author

lovetcp commented Mar 9, 2017

SSR是什么意思?

@xiaokangwang
Copy link
Contributor

这里的SSR指ShadowsocketsR

@lovetcp
Copy link
Author

lovetcp commented Mar 9, 2017

这个版本如何转换成安卓上的AAR库,并且保持更新同步。

@v2ray
Copy link
Collaborator

v2ray commented Mar 9, 2017

看上去像是 Android 那边的问题,能开出来多个端口就ok了

@xiaokangwang
Copy link
Contributor

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

V2RayGO不会修改或转换你的配置文件,完全可自定义,开好几个端口的功能肯定是支持的
-----BEGIN PGP SIGNATURE-----

iJ4EARMKAAYFAljBXJcACgkQxNXnnSKyUxafpAH+Ln3sN3360+WO7avknXULuBtD
Ggg4yI8u89aEiFq2AhBE9tGh4Jn0+4c9O8CY1boCAejbNVvCiW1MXhifiexZSQH+
Kjp+bcUoPDfn83i2+MULo58Wr/mps31V9cx6aEASwDfFnci+zvMCvCkNxt2UAIuX
KEZOyvF+uJtRdfwNzlgNQg==
=EyWQ
-----END PGP SIGNATURE-----

@xiaokangwang
Copy link
Contributor

@lovetcp 我已经在 xiaokangwang/AndroidLibV2ray#10 回复你了

@kailiu42
Copy link

SSR的确是支持这个功能,使用起来会方便一些。比如我client端现在要配置socks和http两个inbound端口,然后后面有TCP/mKCP/WS三个协议,总共就是6个client端口。server端则需要开3个端口。

如果不同的inbound协议甚至不同的传输协议能共享同一个端口的话端口数会少一些,一个是使用时方便点,另外端口少一些也隐蔽一些,不过作用不太大了。

目前已知的:

  • SSR可以做到对client端socks5和http代理共用一个端口。
  • TCP和UDP是可以共用一个端口的。这样TCP和mKCP传输应该是可以合并端口。WS不知是否也能共用。

@kailiu42
Copy link

@lovetcp 格式是有差别的,你看一下Actinum默认连接的配置文件就清楚了。https://github.com/V2Ray-Android/Actinium/blob/master/app/src/main/assets/conf_default.json

顶级有个port,inbound里面不设置port,顶级有个#lib2ray设置,复制过来就行了。

@ztc1997
Copy link

ztc1997 commented Mar 13, 2017

@Kraml UDP和TCP应该不能同端口,至少通常的Linux内核上面应该不行

@icpz
Copy link

icpz commented Mar 13, 2017

@ztc1997 不同传输层协议当然可以同端口了。

@kailiu42
Copy link

@ztc1997 TCP和UDP可以同端口是非常肯定的,并且也是常用的。比如DNS实现,有同时监听TCP+UDP 53的,比如网络测试软件iperf和netperf,一个端口可以接受TCP/UDP甚至其他传输协议的连接测试。

@husy8
Copy link
Contributor

husy8 commented Mar 14, 2017

[root /]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp6       0      0 :::1433                 :::*                    LISTEN     
tcp6       0      0 :::443                  :::*                    LISTEN     
udp6       0      0 :::1433                 :::*                               

@ztc1997 我读书少,不要骗我

@lovetcp
Copy link
Author

lovetcp commented Mar 14, 2017

TCP和UDP是可以共用同一个协议端口,这个没有问题,但是我上面说的是V2RAY中HTTP协议端口和SOCKET端口无法共用。尤其在手机客户端无法实现VPN拦截方式的端口共用。

@DarienRaymond
Copy link
Contributor

非 core 的问题,有问题去 Android 那边讨论

@Justsoos
Copy link

Justsoos commented Mar 3, 2018

@Kraml ssr csharp 应该是通过主程序识别、调度,将 http 代理分给内置的 provixy,做成了双协议使用同一个端口,非常方便。这还真就是 v2ray core 的问题。

另外就是 v2rayN 目前版本直接废了 http 代理,只开 socks ,非常不方便,有很多命令行,都还需要用系统变量来调用 http 代理才能用,比如播放器 mpv,用来播放youtube
2dust/v2rayN#18

@marxangels
Copy link

@2dust

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants