SOCKS SERVER

动态端口转发:安装带有 SSH 的 SOCKS 服务器

原创: 译者:firmianay  Linux中国 2017-10-11

当我们谈论使用 SSH 进行动态端口转发时,我们说的是将 SSH 服务器转换为 SOCKS 服务器。

-- Ahmad

编译自 | https://wesharethis.com/2017/07/15/dynamic-port-forwarding-mount-socks-server-ssh/

 作者 | Ahmad

 译者 | firmianay

在上一篇文章(通过 SSH 实现 TCP / IP 隧道(端口转发):使用 OpenSSH 可能的 8 种场景[1])中,我们看到了处理端口转发的所有可能情况,不过那只是静态端口转发。也就是说,我们只介绍了通过 SSH 连接来访问另一个系统的端口的情况。

在那篇文章中,我们未涉及动态端口转发,此外一些读者没看过该文章,本篇文章中将尝试补充完整。

当我们谈论使用 SSH 进行动态端口转发时,我们说的是将 SSH 服务器转换为 SOCKS[2] 服务器。那么什么是 SOCKS 服务器?

你知道 Web 代理[3]是用来做什么的吗?答案可能是肯定的,因为很多公司都在使用它。它是一个直接连接到互联网的系统,允许没有互联网访问的内部网[4]客户端让其浏览器通过代理来(尽管也有透明代理[5])浏览网页。Web 代理除了允许输出到 Internet 之外,还可以缓存页面、图像等。已经由某客户端下载的资源,另一个客户端不必再下载它们。此外,它还可以过滤内容并监视用户的活动。当然了,它的基本功能是转发 HTTP 和 HTTPS 流量。

一个 SOCKS 服务器提供的服务类似于公司内部网络提供的代理服务器服务,但不限于 HTTP/HTTPS,它还允许转发任何 TCP/IP 流量(SOCKS 5 也支持 UDP)。

例如,假设我们希望在一个没有直接连接到互联网的内部网上通过 Thunderbird 使用 POP3 、 ICMP 和 SMTP 的邮件服务。如果我们只有一个 web 代理可以用,我们可以使用的唯一的简单方式是使用某个 webmail(也可以使用 Thunderbird 的 Webmail 扩展[6])。我们还可以通过 HTTP 隧道来起到代理的用途。但最简单的方式是在网络中设置一个 SOCKS 服务器,它可以让我们使用 POP3、ICMP 和 SMTP,而不会造成任何的不便。

虽然有很多软件可以配置非常专业的 SOCKS 服务器,但用 OpenSSH 设置一个只需要简单的一条命令:

Clientessh $ ssh -D 1080 user@servidorssh

或者我们可以改进一下:

Clientessh $ ssh -fN -D 0.0.0.0:1080 user@servidorssh

其中:

选项 -D 类似于选项为 -L 和 -R 的静态端口转发。像那些一样,我们可以让客户端只监听本地请求或从其他节点到达的请求,具体取决于我们将请求关联到哪个地址:

-D [bind_address:] port

在静态端口转发中可以看到,我们使用选项 -R 进行反向端口转发,而动态转发是不可能的。我们只能在 SSH 客户端创建 SOCKS 服务器,而不能在 SSH 服务器端创建。

1080 是 SOCKS 服务器的典型端口,正如 8080 是 Web 代理服务器的典型端口一样。

选项 -N 防止实际启动远程 shell 交互式会话。当我们只用 ssh 来建立隧道时很有用。

选项 -f 会使 ssh 停留在后台并将其与当前 shell 分离,以便使该进程成为守护进程。如果没有选项 -N(或不指定命令),则不起作用,否则交互式 shell 将与后台进程不兼容。

使用 PuTTY[8] 也可以非常简单地进行端口重定向。与 ssh -D 0.0.0.0:1080 相当的配置如下:

PuTTY SOCKS

对于通过 SOCKS 服务器访问另一个网络的应用程序,如果应用程序提供了对 SOCKS 服务器的特别支持,就会非常方便(虽然不是必需的),就像浏览器支持使用代理服务器一样。作为一个例子,如 Firefox 或 Internet Explorer 这样的浏览器使用 SOCKS 服务器访问另一个网络的应用程序:

Firefox SOCKS

Internet Explorer SOCKS

注意:上述截图来自 IE for Linux[9] :如果您需要在 Linux 上使用 Internet Explorer,强烈推荐!

然而,最常见的浏览器并不要求 SOCKS 服务器,因为它们通常与代理服务器配合得更好。

不过,Thunderbird 也支持 SOCKS,而且很有用:

Thunderbird SOCKS

另一个例子:Spotify[10] 客户端同样支持 SOCKS:

Spotify SOCKS

需要关注一下名称解析。有时我们会发现,在目前的网络中,我们无法解析 SOCKS 服务器另一端所要访问的系统的名称。SOCKS 5 还允许我们通过隧道传播 DNS 请求( 因为 SOCKS 5 允许我们使用 UDP)并将它们发送到另一端:可以指定是本地还是远程解析(或者也可以两者都试试)。支持此功能的应用程序也必须考虑到这一点。例如,Firefox 具有参数 network.proxy.socks_remote_dns(在 about:config 中),允许我们指定远程解析。而默认情况下,它在本地解析。

Thunderbird 也支持参数 network.proxy.socks_remote_dns,但由于没有地址栏来放置 about:config,我们需要改变它,就像在 MozillaZine:about:config[11] 中读到的,依次点击 工具 → 选项 → 高级 → 常规 → 配置编辑器(按钮)。

没有对 SOCKS 特别支持的应用程序可以被 sock 化socksified。这对于使用 TCP/IP 的许多应用程序都没有问题,但并不是全部。“sock 化” 需要加载一个额外的库,它可以检测对 TCP/IP 堆栈的请求,并修改请求,以通过 SOCKS 服务器重定向,从而不需要特别编程来支持 SOCKS 便可以正常通信。

在 Windows 和 Linux[12] 上都有 “Sock 化工具”。

对于 Windows,我们举个例子,SocksCap 是一种闭源,但对非商业使用免费的产品,我使用了很长时间都十分满意。SocksCap 由一家名为 Permeo 的公司开发,该公司是创建 SOCKS 参考技术的公司。Permeo 被 Blue Coat[13] 买下后,它停止了 SocksCap 项目[14]。现在你仍然可以在互联网上找到 sc32r240.exe 文件。FreeCap[15] 也是面向 Windows 的免费代码项目,外观和使用都非常类似于 SocksCap。然而,它工作起来更加糟糕,多年来一直没有缺失维护。看起来,它的作者倾向于推出需要付款的新产品 WideCap[16]。

这是 SocksCap 的一个界面,可以看到我们 “sock 化” 了的几个应用程序。当我们从这里启动它们时,这些应用程序将通过 SOCKS 服务器访问网络:

SocksCap

在配置对话框中可以看到,如果选择了协议 SOCKS 5,我们可以选择在本地或远程解析名称:

SocksCap settings

在 Linux 上,如同往常一样,对某个远程命令我们都有许多替代方案。在 Debian/Ubuntu 中,命令行:

$ Apt-cache search socks

的输出会告诉我们很多。

最著名的是 tsocks[17] 和 proxychains[18]。它们的工作方式大致相同:只需用它们启动我们想要 “sock 化” 的应用程序就行。使用 proxychains 的 wget 的例子:

$ Proxychains wget http://www.google.com

ProxyChains-3.1 (http://proxychains.sf.net)

--19: 13: 20-- http://www.google.com/

Resolving www.google.com ...

DNS-request | Www.google.com

| S-chain | - <- - 10.23.37.3:1080-<><>-4.2.2.2:53-<><>-OK

| DNS-response | Www.google.com is 72.14.221.147

72.14.221.147

Connecting to www.google.com | 72.14.221.147 |: 80 ...

| S-chain | - <- - 10.23.37.3:1080-<><>-72.14.221.147:80-<><>-OK

Connected.

HTTP request sent, awaiting response ... 200 OK

Length: unspecified [text / html]

Saving to: `index.html '

    [<=>] 6,016 24.0K / s in 0.2s

19:13:21 (24.0 KB / s) - `index.html 'saved [6016]

要让它可以工作,我们必须在 /etc/proxychains.conf 中指定要使用的代理服务器:

[ProxyList]

Socks5 clientessh 1080

我们也设置远程进行 DNS 请求:

# Proxy DNS requests - no leak for DNS data

Proxy_dns

另外,在前面的输出中,我们已经看到了同一个 proxychains 的几条信息性的消息, 非 wget 的行是标有字符串 |DNS-request|、|S-chain| 或 |DNS-response|的。如果我们不想看到它们,也可以在配置中进行调整:

# Quiet mode (no output from library)

Quiet_mode

via: https://wesharethis.com/2017/07/15/dynamic-port-forwarding-mount-socks-server-ssh/

作者:Ahmad[20] 译者:firmianay 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者

Firmy Yang (firmianay)


请问下,有远程server A和server B,本地客户端可以直接ssh访问A,但是不能直接访问B,从A上可以跳到B上,现在在B所在的所有子网中有一个私网中有一台HTTPserver,地址是私有的,只有B能够访问,那怎么做tunnel能够让本地也访问这台HTTPServer呢?试过很多次,没有成功,这台HTTPServer如果下挂在A所在的私有网络中,尝试是没问题的

这方法早就被墙识别了

墙是啥?那是不可描述的东西——而我们这篇文章,只是告诉大家如

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容

  • 查看网络端口被占用情况 原文 使用命令Netstat –ano|findstr “<端口号>” 查看该PID对应的...
    冯瑞_FR阅读 1,349评论 0 0
  • 初到小城的新鲜感褪去后,陈丁淇开始觉得陌生的周遭环境让她异常孤单,她像一朵迅速蔫儿掉的花儿,终日闷闷的。 01 对...
    独木狼阅读 286评论 0 1
  • 本文系半撇私塾新媒体创意写作项目里程碑作品一。 最焦虑的时光也许就是你最好的成长期 ​1 小言最近分手了。 快要3...
    HHazel阅读 319评论 0 0
  • 买了一堆鸭身零部件追剧,小子懂我哈
    爱跑步的煎鱼片阅读 177评论 0 0
  • 夏天被熟碎的西瓜啃烂 脱落在牙齿的最里层 几元一斤? 从未热的天开始 你就是一把刀 咽不下那一块加引号的石头 我看...
    生后丶阅读 179评论 0 4