行至水穷处

坐看云起时

F5BIGIP配置socks服务

F5 bigip自11.5.0版本后增加了socks profile的支持,即可以利用LTM提供socks4,4a以及socks5的服务。socks位于OSI模型的会话层上,可以透明的为TCP或UDP提供中转代理服务。

socks profile配置项含义

protocol versions:选择需要支持的协议版本,可以为4,4a,5,默认则全部支持

DNS resolver:一个需要提前在网络部分配置好的resolver(只需配置resolver,无需配置系统级的DNS IP),以提供4a,5版本对访问目标地址为域名时的代理解析支持。即address type=domain,例如:

抓包范例: 本地下载

Route domain:指LTM代理发起新连接时,新连接所走网络应该处于的route domain。

Tunnel name:  指LTM发起的代理新连接处于哪个tunnel里,所以如果需要额外VS来处理LTM发起的代理新连接,则这个额外的VS应该监听在这里指定的tunnel上

Default Connect handling: 指明发起的代理新连接是否需要额外的VS来处理,勾选表示无需额外VS,不勾选表示需要额外VS。 注意:即便勾选时,如果相应tunnel有可以处理代理连接的额外VS,则这些额外VS还是会接管这些流量(即一旦tunnel有额外vs能处理这些代理连接,则是否勾选都会有一样的行为)。
利用将代理连接交给额外的VS处理,可以实现对代理连接的进一步控制和处理,例如实现代理连接走指定线路出去等。

另外,对于配置socks profile的VS,其中的目的地址和目的端口转换选项必须保持勾选状态。

不同配置组合下的行为

enable Default Connect Handling + tunnel内无可转发流量vs + socks VS无snat = 无法代理访问 本地下载

enable Default Connect Handling + tunnel内无可转发流量vs + socks VS有snat = 可以代理访问,访问源地址是socks vs的SNAT地址. 此时route-domain设置无效。 本地下载

enable Default Connect Handling + tunnel内有可转发流量vs + socks VS无snat = 可以代理访问,访问源地址去往可转发流量vs的时候使用原始客户端地址,经过转发vs后按转发vs规则处理 本地下载

enable Default Connect Handling + tunnel内有可转发流量vs + socks VS有snat = 可以代理访问,访问源地址去往可转发流量vs的时候使用SNAT后的地址,经过转发vs后按转发vs规则处理 本地下载

disable Default Connect Handling + tunnel内无可转发流量vs + socks VS有snat = 无法代理访问
disable Default Connect Handling + tunnel内无可转发流量vs + socks VS无snat = 无法代理访问
disable Default Connect Handling + tunnel内有可转发流量vs + socks VS无snat = 可以代理访问,访问源地址去往可转发流量vs的时候使用原始客户端地址,经过转发vs后按转发vs规则处理
disable Default Connect Handling + tunnel内有可转发流量vs + socks VS有snat = 可以代理访问,访问源地址去往可转发流量vs的时候使用原始客户端地址,经过转发vs后按转发vs规则处理

socks irule

目前支持三个socks命令:

SOCKS::allowed 返回控制状态或设置控制是否容许使用socks

SOCKS::destination 返回或设置代理连接的目标域名/IP/port,例如:

SOCKS::version 返回连接所用的版本

一个事件:

SOCKS_REQUEST 事件在socks连接发起到验证前被触发

udp associate穿透

目前还不支持UDP的穿透(ID591610),在特定环境下,可以使用irule来模拟解决(需使用V12.1.2HF1以上版本.ID641360)

配置一个前端vs(不关联socks profile),关联以下irule。 然后该vs通过virtual 命令引导vs处理后的流量到真实的socks vs vs_proxy_real_sock

在UDP vs上关联:

需要注意,上述两个vs(关联socks profile的tcp,udp)是两个完全独立的连接,根据socks协议规范,tcp和udp两个连接是伴生关系,因此注意tcp vs的idle timeout不要过早的删除连接导致udp跟着断开.

BIND连接方法

不支持,以下测试服务器未返回消息

(echo -ne “\x05\x01\x00”; sleep 1; echo -ne “\x05\x02\x00\x01\xb8\x18\x62\x62\x00\x50”;sleep 1;) | nc ip 1080

socks服务代理验证

待更新

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注