「TSOCKS」- 命令及选项

tsocks(1)

透明地允许应用程序使用SOCKS代理,是Shell包装器,简化了tsocks(8)库的使用

命令语法格式

tsocks [application [application’s arguments]]

tsocks [-on|-off]

tsocks

命令描述

介于libtsocks.so和被代理的程序之间的一个包装器。实际上,tsocks命令是一个脚本。

命令支持的选项及含义

[application [application’s arguments]]
与环境变量LD_PRELOAD中的设置一起运行程序,这样tsocks将代理程序中的SOCKS连接。

[-on|-off]
用于添加或删除LD_PRELOAD环境变量的值。当libtsocks.so(tsocks(8))存在于环境变量LD_PRELOAD中时,所有的应用将自动使用代理来访问网络。

如果想使用此功能,必须在Shell脚本中加入如下source /usr/bin/tsocks或者. /usr/bin/tsocks

  • . tsocks -on — 将libtsocks.so添加到LD_PRELOAD中。别忘记前导的点号。
  • . tsocks -off — 将libtsocks.so从LD_PRELOAD中移除。别忘记前导的点号。

[-show|-sh]
显示LD_PRELOAD变量的值。

<without any argument>
用值为libtsocks.so的LD_PRELOAD变量创建一个新的SHELL。

手册上是这么写的。但是,就目前的情况看,单纯的执行tsocks命令会返回”缺少参数”错误。查阅tsocks的脚本程序之后,发现使脚本写的由问题。注释参数检查的行。

相关手册

tsocks.conf(5) tsocks(8)

参考文献

man 1 tsocks, Version 1.8beta5+ds1-1

inspectsocks(1)

man 1 inspectsocks, version tsocks 1.8beta5+ds1-1

检测SOCKS服务使用的协议版本

命令行语法格式

inspectsocks server [port]

server:SOCKS5协议客户端的IP地址或者主机名。

port:可选的端口号。默认为1080。

注意事项

该命令作用于SOCKS协议的客户端,也就是说:

  • server: 指的是SOCKS协议客户端的主机名
  • port: 指的是客户端监听的端口号。

该命令不用于SOCKS5协议的服务端。

简单示例

执行如下命令获取当前SOCKS服务的协议版本号:

# inspectsocks socks.nec.com 1080

Connecting to 123.4.5.6…

Reply indicates server is a version 5 socks server

上面的命令尝试检测主机socks.nec.com使用的SOCKS协议版本。如上输出,协议为SOCKS5。

相关手册

tsocks.conf(5) tsocks(8)

validateconf(1)

man 1 validateconf, Version tsocks 1.8beta5+ds1-1

用于验证tsocks.conf配置文件

命令描述

validateconf可用于验证配置文件。 它检查文件的格式以及错误的内容。读完文件后,它会以格式化,可读的方式将配置转储到屏幕上。 这在调试问题时非常有用。

通常,validateconf只是将配置读取转储到屏幕上(以可读的格式),但它也有一个有用的“测试”模式。在配置文件中可以为不同网络指定不同的SOCKS服务器,在命令行上传递hostname时,如-t <hostname>,validateconf确定tsocks将使用配置文件中指定的哪个SOCKS服务器来访问指定的主机。

命令行语法格式

validateconf [-f config file] [-t hostnameip[:port]]

命令支持的选项及含义

-f config file
指定要检查的配置文件。如果未指定该选项,从编译时指定的位置读取配置文件。

-t hostname[:port]
测试tsocks将使用配置文件中的哪个SOCKS服务器来访问主机hostname

相关文档

tsocks.conf(5), tsocks(8)

saveme(8)

取消连接ld.so.preload

命令描述

该程序属于tsocks软件包。用于静态连接,如果用户破坏了它们的ld.so.preload文件,并且无法运行任何动态连接的程序,saveme可以删除违规的ld.so.preload文件

参考文献

man 8 saveme, Version 1.8beta5+ds1-1

tsocks.conf(5)

man 5 tsocks.conf, version tsocks 1.8beta5+ds1-1
源码目录下的 tsocks.conf.5

tsocks.conf,tsocks 的配置文件;

配置文件概述

由于某些站点需要代理,而某些不需要代理,tsocks 的配置可以是从两行到几百行之间的任何内容。基本思想是:定义出机器可以直接访问的网络(即不使用 SOCKS),并定义一个或多个 SOCKS Server 用于代理访问其他网络(包括“default”服务器);

配置文件中,“local”关键字声明本地网络。当应用程序尝试连接到标记为本地网络中的计算机时,tsocks 的不会代理连接;

显然,如果连接不是本地可访问的网络,则需要通过 SOCKS Server 进行代理。然而,有时需要使用不同的 SOCKS 服务器访问不同的内部(和外部)网络。因此,配置文件允许定义“path”以及默认 SOCKS 服务器;

`path`在配置文件中被声明为块。也就是说,它们以配置文件中的“path {”行开始,以’}‘行结尾。在块内部的指令用于声明一个 SOCKS Server(如本手册页面后面所述),并且使用“reaches”指令来声明网络,甚至是使用这个 SOCKS Server 来访问的网络中的目标端口。注意:每个`path`中必须定义一个 SOCKS Server 并包含一个或多个“reaches”指令;

未包含在“path”块内的 SOCKS Server 将视为默认 SOCKS Server。如果 tsocks 需要通过 SOCKS 服务器连接到机器(比如:它不是一个被声明为“local”的网络),并且没有“path”声明到达该网络的方法,则使用默认服务器协商连接;

配置文件语法

配置文件中,所有行的基本结构如下:

<directive> = <parameters>

例外情况是’path’块的定义,看起来像:

path {
	 <directive> = <parameters>
}

空行会被忽略,井号(#)开始的行也会被忽略;

在 tsocks.conf 文件中,支持使用以下指令:

server
SOCKS Server 的 IP 地址(例如“server = 10.1.4.253”)。这里的 SOCKS Server 指的使 local server;
每个`path`块只能指定一个 SOCKS Server,也可以在`path`块之外指定一个 SOCKS Server(将用于定义默认服务器);
除非在编译时,指定了–disable-hostnames,否则可以将 SOCKS Server 指定为主机名(例如“server = socks.nec.com”)

server_port
SOCKS Server 监听端口;
每个`path`块可以指定一个 server_port,或者在`path`块外面定义(对于默认服务器);
默认 1080 端口;

server_type
由服务器使用的 SOCKS 版本。支持版本 4 和 5(但仅用于连接操作);
默认值为 4。每个`path`块只能指定一个 server_type,或者在`path`块外面定义;
可以使用inspectsocks来确定服务器的类型,参阅“UTILITIES”部分;

default_user
指定在 SOCKS 版本 5 中,用于认证的默认用户名。此选项对于 SOCKS 版本 4 的服务器无效;
为了确定要使用的用户名(如果 socks server 需要用户名和密码认证),tsocks 首先查找环境变量TSOCKS_USERNAME,然后查找此default_user配置选项,然后尝试获取本地用户名;
每个`path`块只能指定一个default_user,也可以在`path`块外部指定一个default_user(对于默认服务器)

default_pass
指定在 SOCKS 版本 5 中,用于认证的默认密码。此选项对于 SOCKS 版本 4 的服务器无效;
为了确定要使用的密码(如果 socks 服务器需要用户名和密码认证),tsocks 首先查找环境变量 TSOCKS_PASSWORD,然后查找default_pass配置选项;
每个`path`块只能指定一个default_pass,也可以在`path`块外部指定一个default_pass(对于默认服务器)

local
使用 IP/Subnet 对指定直接访问的网络。(例如“local = 10.0.0.0/255.0.0.0”);
显然,所有 SOCKS Server 的 IP 地址必须在本地的网络中,否则需要一个 SOCKS Server 才能到达另外一个 SOCKS Server;

reaches
它的参数形成为IP[:start‐port[-endport]]/Subnet,它指定了使用此`path`块中指定的 SOCKS Server 访问的网络(以及该网络上的端口范围)。该指令仅在`path`块内有效;
例如,在`path`块“reaches = 150.0.0.0:80-1024/255.0.0.0”中,表示要使用当前`path`块中指定的 SOCKS Server 来访问 150.0.0.0 到 150.255.255.255 范围内的任何 IP,且连接请求的端口为 80-1024;

fallback
如果配置中没有默认服务器,并且 fallback=yes,则直接连接;
如果 fallback=no 或未指定,并且没有默认服务器,则 tsocks 会发出错误消息并中止;
此参数保护用户不会意外地建立不需要的不认可(即直接)连接;

配置文件搜索顺序

/etc/tsocks.conf

与配置文件相关的程序

有两个与 tsocks 有关的程序,可用于创建和验证 tsocks 配置文件;

使用 inspectsocks(1)来检测 SOCKS 服务端的协议版本;

使用 validateconf 来验证 tsocks.conf 文件的配置是否正确;

相关手册

tsocks(8)