Sun Java logo     上一页      目录      索引      下一页     

Sun logo
Sun Java System Web Proxy Server 4.0.1 管理指南 

第 15 章
使用 SOCKS

本章介绍如何配置和使用 Sun Java System Web Proxy Server 随附的 SOCKS 服务器。Proxy Server 支持 SOCKS 版本 4 和 5。

本章包括以下各节:


关于 SOCKS

SOCKS 是一种联网代理协议,用于重定向来自 SOCKS 服务器相对两侧主机的连接请求,通过该协议,无需直接 IP 可达性,一侧的主机便能够获得对另一侧主机的完全访问权。SOCKS 常被用作网络防火墙,以使 SOCKS 服务器后面的主机能够获得对 Internet 的完全访问权,同时又能防止在未经授权的情况下从 Internet 访问内部主机。

SOCKS 服务器是一个通用的防火墙守护进程,它基于点对点模式通过防火墙对访问进行控制。SOCKS 服务器可以对请求进行验证和授权、建立代理连接以及中转数据。SOCKS 服务器工作于网络层而非应用层,因此它对用于传送请求的协议或方法毫无所知。由于 SOCKS 服务器对协议毫无所知,所以可以使用它来传递 Proxy Server 不支持的那些协议(如 Telnet)。

图 15-1 SOCKS 服务器在网络中的位置

图中展示了 SOCKS 服务器在网络中的位置。


使用捆绑的 SOCKS v5 服务器

Sun Java System Web Proxy Server 包含自己的 SOCKS 守护进程,它认识其他 SOCKS 守护进程所使用的 socks5.conf 文件格式。此守护进程可以由 Proxy Server 用来为请求选择路由,也可以独立于 Proxy Server 运行以提供附加的网络功能。有关配置 Proxy Server 以通过 SOCKS 服务器路由请求的更多信息,参见配置路由选择条目

Proxy Server 随附的 SOCKS 守护进程在默认情况下被禁用,可以从 Server Manager 界面的 "SOCKS" 选项卡或是从命令行来启用它。有关更多信息,参见启动和停止 SOCKS v5 服务器


在 Proxy Server 4 中,SOCKS 守护进程的名称已从 ns-sockd 改为 sockd


下面是使用 Proxy Server 随附的 SOCKS 服务器所必须采取的高级步骤:

  1. 配置 SOCKS 服务器(参见配置 SOCKS v5 服务器)。
  2. 如果 SOCKS 服务器即将在具有多个接口的计算机上运行,请创建 SOCKS 路由选择条目(参见配置路由选择条目)。
  3. 创建验证条目(参见配置 SOCKS v5 验证条目)。
  4. 创建连接条目(参见配置 SOCKS v5 连接条目)。
  5. 启用 SOCKS 服务器(参见启动和停止 SOCKS v5 服务器)。

关于 socks5.conf

Sun Java System Web Proxy Server 使用 socks5.conf 文件来控制对 SOCKS 服务器及其服务的访问。每一行定义了 Proxy Server 在收到的请求与该行相符时所执行的操作。在 Server Manager 中所做的选择将被写入 socks5.conf。还可以手动编辑该文件。socks5.conf 文件位于如下的安装根目录 (server_root):

server_root/proxy-serverid/config 目录

本节提供了有关 socks5.conf 的一般信息。有关该文件及其指令和语法的详细信息,参见 Proxy Server Configuration File Reference

验证

可以将 SOCKS 守护进程配置成使用其服务时要求进行验证。验证基于连接客户机的主机名和端口号来进行。如果选择要求用户名和口令,则会针对 socks5.conf 文件所引用的用户名和口令文件进行信息验证。如果所提供的用户名和口令与口令文件中的列表不匹配,则拒绝访问。口令文件中的用户名和口令格式为 username password,其中用户名和口令以空格隔开。还可以禁止用户。若想要求进行用户名和口令验证,必须向 socks5.conf 添加 SOCKS5_PWDFILE 指令。有关该指令及其语法的更多信息,参见 Proxy Server Configuration File Reference 中的 socks5.conf 一节。

还可以针对已配置的 LDAP 服务器(而不仅仅是文件)执行用户名和口令验证。

访问控制

可使用 socks5.conf 文件中的一组有序行来执行访问控制。每一行均包含单个指令,用以允许或拒绝对资源的访问。指令按其在配置文件中的出现顺序进行处理。不符合任何允许指令的请求将被拒绝访问。

日志记录

SOCKS 守护进程会将错误消息和访问消息全都记入 SOCKS 日志文件。可在 socks5.conf 中指定日志文件位置和日志记录类型。

SOCKS 守护进程每小时还会生成一个统计条目,用以提供守护进程的统计信息。

调节

可以使用 socks5.conf 文件来确定 SOCKS 服务器使用的工作线程和接受线程的数目。这些数值会影响 SOCKS 服务器的性能。

有关工作线程和接受线程设置及其对性能的影响的更多信息,参见配置 SOCKS v5 服务器


启动和停止 SOCKS v5 服务器

可以从 Server Manager 或命令行中启动和停止 SOCKS 服务器。

从 Server Manager 启动和停止 SOCKS 服务器
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Start/Stop SOCKS Server" 链接。
  3. 启动或停止 SOCKS 服务器。
从命令行启动和停止 SOCKS 服务器

运行 server_root/proxy-serverid 目录中已有的脚本,其中 server_root 为安装根目录:


配置 SOCKS v5 服务器

配置 SOCKS 服务器
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Configure SOCKS v5" 链接。
  3. 在 "SOCKS Port" 字段中,输入 SOCKS 服务器将要侦听的端口号(默认情况下为 1080)。
  4. 选择要使用的 SOCKS 选项。可用选项如下:
    • Disable Reverse DNS Lookup。对 SOCKS 服务器禁用反向 DNS 查找。反向 DNS 用于将 IP 地址转换成主机名。禁用反向 DNS 查找可优化网络资源的使用。默认情况下会禁用此选项(即,默认情况下会选中 "Disable Reverse DNS Lookup" 复选框)。如果禁用了反向 DNS 查找而使用主机名请求 URL,则服务器不会将主机名映射到 IP 地址。如果启用了反向 DNS 查找,则服务器将会执行映射,并向 SOCKS 日志文件添加一个条目,列出该 DNS 转换。
    • Use Client-specific Bind Port。允许客户机在“绑定”请求中指定端口。禁用此选项后,SOCKS 将忽略客户机请求的端口并指定一个随机端口。默认情况下将禁用此选项。
    • Allow Wildcard As Bind IP Address。允许客户机在“绑定”请求中指定一个全部由零组成的 IP 地址 (0.0.0.0),它表示可以连接任何 IP 地址。禁用此选项后,客户机必须指定将要连接到绑定端口的 IP 地址,而且 SOCKS 服务器会拒绝绑定到 0.0.0.0 的请求。默认情况下将禁用此选项。
    • Quench Updates。禁用每小时一次自动写入 stat 文件。如果禁用,则每次请求时都会进行写入(参见日志记录)。


      用户界面中显示有 "Quench Updates" 元素,但是它在本 Proxy Server 4 发行版本中并未实现。


  5. 在 "Log File" 字段中,输入 SOCKS 日志文件的完整路径名。默认值为 server_root/proxy-serverid/logs/socks5.log
  6. 从 "Log Level" 下拉式列表中,选择日志文件应只包含警告和错误,还是应包含所有请求或是调试消息。
  7. 选择 RFC 1413 ident 响应。Ident 允许 SOCKS 服务器确定客户机的用户名。一般而言,仅当客户机运行某种风格的 UNIX 时,此特性才起作用。可用选项如下:
    • Don't Ask。从不使用 ident 来确定客户机的用户名。此为默认设置,建议使用。
    • Ask But Don't Require。询问所有客户机的用户名,但不必非得提供。此选项使用 ident 仅为进行日志记录。
    • Require。询问所有客户机的用户名,并且仅允许访问做出了有效响应的客户机。
  8. 在 "SOCKS Tuning" 部分,指定 SOCKS 服务器应使用的工作线程和接受线程的数目(这些数值对 SOCKS 服务器的性能有影响),然后单击 "OK":
    • Number Of Worker Threads。默认值为 40。如果 SOCKS 服务器太慢,请增大工作线程数。如果服务器不稳定,则应减小该数值。更改此数值时,从默认值开始,根据需要增大或减小。典型的工作线程数介于 10 到 150 之间。绝对最大值是 512,但数量超过 150 往往会造成浪费且不稳定。
    • Number Of Posted Accepts。默认值为 1。如果 SOCKS 服务器丢弃连接,请增大接受线程数。如果服务器不稳定,则应减小该数值。更改此数值时,从默认值开始,根据需要增大或减小。典型的接受线程数介于 1 到 10 之间。绝对最大值是 512,但数量超过 60 往往会造成浪费且不稳定。这是一个非常重要的设置。如果在 SOCKS 服务器并未超负荷的情况下请求失败而且连接被丢弃,请调节此设置。


配置 SOCKS v5 验证条目

SOCKS 验证条目用于确定 SOCKS 守护进程应接受来自哪些主机的连接,以及 SOCKS 守护进程验证这些主机时应使用何种类型的验证。

本节包括以下主题:

创建验证条目

创建 SOCKS 验证条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Authentication" 链接。
  3. 单击 "Add" 按钮。
  4. 在 "Host Mask" 字段中,输入 SOCKS 服务器将要验证的主机的 IP 地址或主机名。如果输入的是 IP 地址,地址后面应跟一个正斜杠以及要应用于传入 IP 地址的掩码。SOCKS 服务器会将此掩码应用于 IP 地址来确定它是否是有效主机。请勿在主机掩码条目中使用空格。如果不输入主机掩码,则验证条目适用于所有主机。
  5. 例如,可在 "host mask" 字段输入 155.25.0.0/255.255.0.0。如果主机的 IP 地址是 155.25.3.5,则 SOCKS 服务器会将该掩码应用于该 IP 地址,并断定主机的 IP 地址与验证记录所适用的 IP 地址 (155.25.0.0) 匹配。

  6. 在 "Port Range" 字段中,输入 SOCKS 服务器将要验证的主机端口。请勿在端口范围条目中使用空格。如果不输入端口范围,则验证条目适用于所有端口。
  7. 可以使用方括号 [ ] 包括范围两端的端口号,也可使用圆括号 ( ) 将它们排除在外。例如,[1000-1010] 表示其间包括 1000 和 1010 在内的所有端口号,而 (1000-1010) 表示其间不包括 1000 和 1010 在内的所有端口号。也可混合使用方括号和圆括号。例如,(1000-1010] 表示 1000 与 1010 之间不包括 1000 但包括 1010 在内的所有号码。

  8. 从 "Authentication Type" 下拉式列表中选择验证类型。可用选项如下:
    • Require user-password。访问 SOCKS 服务器时需要用户名和口令。
    • User-password, if available。如果提供了用户名和口令,则应使用它们来访问 SOCKS 服务器(但它们并不是访问所必需的)。
    • Ban。禁止访问 SOCKS 服务器。
    • None。不必验证即可访问 SOCKS 服务器。
  9. 从 "Insert" 下拉式列表中,选择此条目在 socks5.conf 文件中的位置,然后单击 "OK"。由于可以采用多种验证方法,所以必须指定其评判顺序。这样,如果客户机不支持所列的第一种验证方法,则会改用第二种方法。如果客户机不支持所列的任何验证方法,则 SOCKS 服务器不接受请求而断开连接。

编辑验证条目

编辑验证条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Authentication" 链接。
  3. 选择要编辑的验证条目,然后单击 "Edit" 按钮。
  4. 根据需要进行更改,然后单击 "OK"。

删除验证条目

删除验证条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Authentication" 链接。
  3. 选择要删除的验证条目,然后单击 "Delete" 按钮。

移动验证条目

各条目按其在 socks5.conf 文件中出现的顺序进行评判。可以通过移动来更改其顺序。

移动验证条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Authentication" 链接。
  3. 选择要移动的验证条目,然后单击 "Move" 按钮。
  4. 从 "Move" 下拉式列表中,选择此条目在 socks5.conf 文件中的位置,然后单击 "OK"。


配置 SOCKS v5 连接条目

SOCKS 连接条目指定 SOCKS 守护进程应允许还是拒绝某个请求。

本节包括以下主题:

创建连接条目

创建连接条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Connections" 链接。
  3. 单击 "Add" 按钮。
  4. 从 "Authentication Type" 下拉式列表中,选择此访问控制行所适用的验证方法。
  5. 从 "Connection Type" 下拉式列表中,选择该行所匹配的命令类型。可能的命令类型有:
    • Connect
    • Bind
    • UDP
    • All
  6. 在 "Source Host Mask" 字段中,输入连接控制条目所适用的主机的 IP 地址或主机名。如果输入的是 IP 地址,地址后面应跟一个正斜杠以及要应用于源 IP 地址的掩码。SOCKS 服务器会将此掩码应用于源 IP 地址来确定它是否是有效主机。请勿在主机掩码条目中使用空格。如果不输入主机掩码,则连接条目适用于所有主机。
  7. 例如,可在 "host mask" 字段输入 155.25.0.0/255.255.0.0。如果主机的 IP 地址是 155.25.3.5,则 SOCKS 服务器会将该掩码应用于该 IP 地址,并断定主机的 IP 地址与连接控制条目所适用的 IP 地址 (155.25.0.0) 匹配。

  8. 在 "Port Range" 字段中,输入连接控制条目所适用的源计算机端口。请勿在端口范围条目中使用空格。如果不指定端口范围,则连接条目适用于所有端口。
  9. 可以使用方括号 [ ] 包括范围两端的端口号,也可使用圆括号 ( ) 将它们排除在外。例如,[1000-1010] 表示其间包括 1000 和 1010 在内的所有端口号,而 (1000-1010) 表示其间不包括 1000 和 1010 在内的所有端口号。也可混合使用方括号和圆括号。例如,(1000-1010] 表示 1000 与 1010 之间不包括 1000 但包括 1010 在内的所有号码。

  10. 在 "Destination Host Mask" 字段中,输入连接条目所适用的 IP 地址或主机名。如果输入的是 IP 地址,地址后面应跟一个正斜杠以及要应用于传入 IP 地址的掩码。SOCKS 服务器会将此掩码应用于目标计算机的 IP 地址来确定它是否是有效目标主机。请勿在主机掩码条目中使用空格。如果不输入目标主机掩码,则连接条目适用于所有主机。
  11. 例如,可在目标主机掩码字段中输入 155.25.0.0/255.255.0.0。如果目标主机的 IP 地址是 155.25.3.5,则 SOCKS 服务器会将该掩码应用于该 IP 地址,并断定目标主机的 IP 地址与代理条目所适用的 IP 地址 (155.25.0.0) 匹配。

  12. 在 "Port Range" 字段中,输入连接控制条目所适用的目标主机端口。请勿在端口范围条目中使用空格。如果不输入端口范围,则连接条目适用于所有端口。

  13. 大多数 SOCKS 应用程序都请求端口 0 来执行绑定请求,这表示它们没有端口首选项。因此,与绑定相应的目标端口范围始终都应包括端口 0。


    可以使用方括号 [ ] 包括范围两端的端口号,也可使用圆括号 ( ) 将它们排除在外。例如,[1000-1010] 表示其间包括 1000 和 1010 在内的所有端口号,而 (1000-1010) 表示其间不包括 1000 和 1010 在内的所有端口号。也可混合使用方括号和圆括号。例如,(1000-1010] 表示 1000 与 1010 之间不包括 1000 但包括 1010 在内的所有号码。

  14. 在 "User Group" 字段中,输入想要允许或拒绝访问的组。如果未指定组,则连接条目适用于所有用户。
  15. 从 "Action" 下拉式列表中,为所创建的连接选择允许或拒绝访问。
  16. 从 "Insert" 下拉式列表中,选择此条目在 socks5.conf 文件中的位置,然后单击 "OK"。由于可以发出多个连接指令,所以必须指定其评判顺序。

编辑连接条目

编辑连接条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Connections" 链接。
  3. 选择要编辑的连接条目,然后单击 "Edit" 按钮。
  4. 根据需要进行更改,然后单击 "OK"。

删除连接条目

删除连接条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Connections" 链接。
  3. 选择要删除的连接条目,然后单击 "Delete" 按钮。

移动连接条目

各条目按其在 socks5.conf 文件中出现的顺序进行评判。可以通过移动来更改其顺序。

移动连接条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Connections" 链接。
  3. 选择要移动的连接条目,然后单击 "Move" 按钮。
  4. 从 "Move" 下拉式列表中,选择此条目在 socks5.conf 文件中的位置,然后单击 "OK"。


配置 SOCKS v5 服务器链

可以采用与 Proxy Server 相同的方式将多个 SOCKS 服务器链在一起,这表示一个 SOCKS 服务器可以路经另一 SOCKS 服务器。

配置 SOCKS 服务器链
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Routing" 链接。
  3. 在 "Server Chaining" 部分,输入用于向链式 Proxy Server 进行验证的用户名和口令(如果代理链中的下游代理服务器要求验证才会为请求提供服务),然后单击 "OK"。


配置路由选择条目

可以使用路由选择条目来配置 Proxy Server,使其通过 SOCKS 服务器为请求选择路由。路由选择条目有两种类型,即 SOCKS v5 路由和 SOCKS v5 代理路由:

本节包括以下主题:

创建 SOCKS v5 路由选择条目

创建路由选择条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Routing" 链接。
  3. 在 "Routing" 部分,单击 "Add" 按钮。
  4. 在 "Host Mask" 字段中,输入与拨入和拨出连接必须经过的指定接口相对应的 IP 地址或主机名。如果输入的是 IP 地址,地址后面应跟一个正斜杠以及要应用于传入 IP 地址的掩码。SOCKS 服务器会将此掩码应用于 IP 地址来确定它是否是有效主机。请勿在主机掩码条目中使用空格。如果不输入主机掩码,则 SOCKS v5 条目适用于所有主机。
  5. 例如,可在 "host mask" 字段输入 155.25.0.0/255.255.0.0。如果主机的 IP 地址是 155.25.3.5,则 SOCKS 服务器会将该掩码应用于该 IP 地址,并断定主机的 IP 地址与路由选择条目所适用的 IP 地址 (155.25.0.0) 匹配。

  6. 在 "Port Range" 字段中,输入与拨入和拨出连接必须经过的指定接口相对应的端口。端口范围不能含有空格。如果不指定端口范围,则 SOCKS v5 条目适用于所有端口。
  7. 可以使用方括号 [ ] 包括范围两端的端口号,也可使用圆括号 ( ) 将它们排除在外。例如,[1000-1010] 表示其间包括 1000 和 1010 在内的所有端口号,而 (1000-1010) 表示其间不包括 1000 和 1010 在内的所有端口号。也可混合使用方括号和圆括号。例如,(1000-1010] 表示 1000 与 1010 之间不包括 1000 但包括 1010 在内的所有号码。

  8. 在 "Interface/Address" 字段中,输入拨入和拨出连接必须经过的接口的 IP 地址或名称。
  9. 从 "Insert" 下拉式列表中,选择此条目在 socks5.conf 文件中的位置,然后单击 "OK"。由于可以采用多种路由选择方法,所以必须指定其评判顺序。

    拨入和拨出连接都应使用指定的接口,否则,将会因传入路由不同于所配置的接口而收到错误消息。


创建 SOCKS v5 代理路由选择条目

创建代理路由选择条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Routing" 链接。
  3. 在 "Proxy Routing" 部分,单击 "Add" 按钮。
  4. 从 "Proxy Type" 下拉式列表中,选择所路经的 Proxy Server 的类型。可用选项如下:
    • SOCKS v5
    • SOCKS v4
    • Direct connection
  5. 在 "Destination Host Mask" 字段中,输入连接条目所适用的 IP 地址或主机名。如果输入的是 IP 地址,地址后面应跟一个正斜杠以及要应用于传入 IP 地址的掩码。SOCKS 服务器会将此掩码应用于目标计算机的 IP 地址来确定它是否是有效目标主机。请勿在主机掩码条目中使用空格。如果不输入目标主机掩码,则连接条目适用于所有主机。
  6. 例如,可在 "destination host mask" 字段输入 155.25.0.0/255.255.0.0。如果目标主机的 IP 地址是 155.25.3.5,则 SOCKS 服务器会将该掩码应用于该 IP 地址,并断定目标主机的 IP 地址与代理条目所适用的 IP 地址 (155.25.0.0) 匹配。

  7. 在 "Destination Port Range" 字段中,输入代理条目所适用的目标主机端口。请勿在端口范围条目中使用空格。如果不指定端口范围,则代理条目适用于所有端口。
  8. 可以使用方括号 [ ] 包括范围两端的端口号,也可使用圆括号 ( ) 将它们排除在外。例如,[1000-1010] 表示其间包括 1000 和 1010 在内的所有端口号,而 (1000-1010) 表示其间不包括 1000 和 1010 在内的所有端口号。也可混合使用方括号和圆括号。例如,(1000-1010] 表示 1000 与 1010 之间不包括 1000 但包括 1010 在内的所有号码。

  9. 在 "Destination Proxy Address" 字段中,输入要使用的 Proxy Server 的主机名或 IP 地址。
  10. 在 "Destination Proxy Port" 字段中,输入 Proxy Server 对于 SOCKS 请求将要侦听的端口号。
  11. 从 "Insert" 下拉式列表中,选择此条目在 socks5.conf 文件中的位置,然后单击 "OK"。由于可以采用多种路由选择方法,所以必须指定其评判顺序。

编辑路由选择条目

编辑路由选择条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Routing" 链接。
  3. 选择要编辑的条目,然后单击 "Edit" 按钮。
  4. 根据需要进行更改,然后单击 "OK"。

删除路由选择条目

删除路由选择条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Routing" 链接。
  3. 选择要删除的条目,然后单击 "Delete" 按钮。

移动路由选择条目

各条目按其在 socks5.conf 文件中出现的顺序进行评判。可以通过移动来更改其顺序。

移动路由选择条目
  1. 访问服务器实例的 Server Manager,然后单击 "SOCKS" 选项卡。
  2. 单击 "Set SOCKS v5 Routing" 链接。
  3. 选择要移动的条目,然后单击 "Move" 按钮。
  4. 从 "Move" 下拉式列表中,选择此条目在 socks5.conf 文件中的位置,然后单击 "OK"。


上一页      目录      索引      下一页     


文件号码 819-3162。版权所有 2005 Sun Microsystems, Inc. 保留所有权利。