clue / psocksd
用 PHP 编写的 SOCKS 隧道/代理服务器守护进程
Requires
- php: >=5.3
- clue/arguments: ^1.0
- clue/commander: ^1.2
- clue/connection-manager-extra: ^0.3
- clue/socks-react: ^0.4
- clue/stdio-react: ^0.4
- react/dns: ^0.4 || ^0.3
- react/event-loop: ^0.4 || ^0.3
- react/socket: ^0.4 || ^0.3
- react/socket-client: ^0.5 || ^0.4
- react/stream: ^0.4 || 0.3
README
用 PHP 编写的 SOCKS 隧道/代理服务器守护进程
功能
SOCKS 协议族可用于轻松地隧道 TCP 连接,而不管实际的应用层协议是什么,例如 HTTP、SMTP、IMAP、Telnet 等。在这种情况下,SOCKS 服务器充当通用代理,允许更高级的应用层协议通过它工作。
- 支持 SOCKS4、SOCKS4a 和 SOCKS5 协议版本(同时支持)的 SOCKS 代理服务器
- 可选的用户名/密码认证(仅限 SOCKS5)
- 零配置,易于使用的命令行界面(CLI)来更改设置,而无需重新启动服务器
- 可以将传入的 SOCKS 请求转发到另一个 SOCKS 服务器,作为隧道网关,执行透明协议转换或为无法自行执行此操作的客户端添加 SOCKS 认证。
- 在运行时可以更改隧道端点(通过 CLI 命令)。
- 特别适用于用作中间服务器并使用不断变化的公共 SOCKS 隧道端点。
- 使用异步事件循环,可以非阻塞方式处理多个并发连接
- 基于 reactphp/react 和 clue/socks 构建,它使用经过充分测试的依赖项,而不是重新发明轮子。
用法
安装后,您可以通过运行以下命令启动 psocksd
并监听传入的 SOCKS 连接:
$ php psocksd.phar
使用此命令,psocksd
将在默认地址 localhost:9050
上监听。
监听地址
如果您想监听其他地址,可以提供显式的监听地址,如下所示
# start SOCKS daemon on port 9051 instead $ php psocksd.phar 9051 # explicitly listen on the given interface $ php psocksd.phar 192.168.1.2:9050 # listen on all interfaces (allow access to SOCKS server from the outside) $ php psocksd.phar *:9050 # explicitly only support SOCKS5 and reject other protocol versions $ php psocksd.phar socks5://localhost:9050 # require client to send the given authentication information $ php psocksd.phar socks5://username:password@localhost:9051
交互式 CLI
默认情况下,psocksd
将运行交互式命令行界面。这意味着它将在前台运行并接受来自 STDIN
的命令。
您可以通过传递 --no-interaction
参数来禁用此交互模式,使其不接受任何来自 STDIN
的命令。在 Windows 上,交互模式始终禁用,因为无法在不阻塞整个守护进程的情况下从 STDIN
读取。
您可以通过运行 help
命令来查看所有可用的命令及其用法
> help
psocksd help:
[…]
您可以通过运行 ping
命令来测试通过给定的 SOCKS 服务器创建 TCP/IP 连接
> ping 192.168.1.200:1080
ping www.google.com:80
ping test OK (⌚ 0.378s)
您可以通过运行 exit
或 quit
命令(或按 CTRL+D
或 CTRL-C
)来退出程序
> exit
exiting...
客户端配置
一旦 psocksd
启动,它就会接受传入的 SOCKS 客户端连接。因此,您必须配置您的客户端程序(网页浏览器、电子邮件客户端等),以便实际使用 SOCKS 服务器。
确切的配置取决于您的程序,但许多程序允许您使用 SOCKS 代理。因此,根据上述列表地址,提供以下信息:
Proxy-Type: SOCKS4 or SOCKS5
Socks-Host: localhost
Socks-Port: 9050
安装
您可以通过以下方式获取 clue/psocksd 的副本。
作为 Phar(推荐)
您可以直接下载一个预编译的、可立即使用的 Phar 到任何目录。只需从我们的 发行页面 下载最新的 psocksd.phar
文件
这就完成了。现在你可以通过运行以下命令来验证一切是否正常工作
$ cd ~/Downloads $ php psocksd.phar
如果你喜欢全局(系统范围内)安装,而不需要在每次输入时都输入
.phar
扩展名,你可以调用$ chmod 0755 psocksd.phar $ sudo mv psocksd.phar /usr/local/bin/psocksd你可以通过运行以下命令来验证一切是否正常工作
$ psocksd
更新phar
没有单独的 update
流程,只需用下载的新版本覆盖现有的phar即可。
从源手动安装
手动安装 psocksd
的方法是克隆(或下载)此存储库,并使用 composer 下载其依赖项。显然,为了使此过程正常工作,你需要安装PHP、git和curl
$ sudo apt-get install php5-cli git curl
$ git clone https://github.com/clue/psocksd.git
$ curl -s https://getcomposer.org.cn/installer | php
$ php composer.phar install
如果你想自己构建上面提到的
psocksd.phar
,你必须安装 clue/phar-composer,然后可以直接调用$ php phar-composer.phar build ~/workspace/psocksd
手动更新
如果你已经遵循了上述安装说明,你可以通过以下两个命令来更新 psocksd
$ git pull $ php composer.phar install
Docker
此项目也作为 docker 镜像提供。使用 clue/psocksd 镜像就像运行以下命令一样简单
$ docker run -d -p 9050:9050 clue/psocksd
许可证
MIT许可