端口转发和代理有什么关系和区别?

端口转发和代理有什么关系和区别?

是一个执行的实体转发端口被视为代理?如果不是,那是什么?

  1. 代理对其代理服务器的客户端的用户是透明的:用户将请求发送到目的地,但没有意识到该请求实际上已发送到代理。用于本地或远程端口转发的一对 SSH 客户端和 SSH 服务器对其“代理”服务器的客户端用户可见。用户显式向 SSH 客户端(或服务器)发送请求,而不必意识到 SSH 会将请求转发到不同的目的地。

  2. 代理可以将收到的请求转发到该请求所要求的任何目的地。一对用于本地或远程端口转发的 SSH 客户端和 SSH 服务器似乎只将任何收到的请求转发到固定目的地。是否可以让 SSH 将请求转发到该请求所要求的任何目的地,就像代理一样?

代理是否一定要通过端口转发来实现?

谢谢。

答案1

1.) 是:如果您指定本地端口转发(-LOpenSSH 中的选项),您的 SSH 客户端将充当代理,将传入指定本地端口/套接字的连接转发到 SSH 远程端的指定目标联系。如果您指定远程端口转发(-ROpenSSH 中的选项),sshd远程端的守护程序将充当代理,将传入指定远程端口/套接字的连接转发到 SSH 连接本地端的指定目标。

在这两种情况下,SSH 客户端和sshd守护程序一起工作来实现功能,但无论哪一个接受传入连接,都可以说充当 SSH 连接另一端实际服务的代理。

2.) 也可以,但是必须使用 SSH 理解的协议来指定请求。 A动态的端口转发(-DOpenSSH 中的选项)就是这样做的,支持 SOCKS4 和 SOCKS5 协议。

例如:

您可能有一个服务器机房,里面装满了具有基于 Web 的远程控制台功能的设备。由于这些并不总是可更新到最新的 TLS 标准,因此您已将它们连接到只能通过特定网络管理员工作站访问的严格本地网段。该工作站有两个网卡:一个连接到常规网络,另一个连接到远程控制台网段,但它被有意配置为不是充当路由器。当然,网络管理员的工作站运行 Linux :-)

你正在享受一个应得的假期,这时大老板打电话告诉你,你的替身食物中毒了,服务器机房里的一些旧路由器需要尽快重新启动。您距离服务器机房数百英里。通过公司VPN,您可以远程访问网络管理员的工作站,但您从经验中知道,使用X11转发运行远程浏览器速度非常慢。所以你会怎么做?

<connect VPN>
laptop$ ssh -D 1234 tim@netadmin_workstation.company.intra
netadmin_workstation$

现在,只要 SSH 连接建立,您就可以启动本地浏览器,将其配置为使用位于 的 SOCKS 代理,localhost:1234并且来自该浏览器的所有传出网络连接都将通过 SSH 连接传出到网络管理员的工作站,并从那里作为常规 TCP 连接到浏览器中指定的任何地址。实际上,您的浏览器的网络连接现在似乎源自网络管理员的工作站,而浏览器(以及任何相关的 Java 小程序)仍将完全在本地运行,延迟最小。

因此,您可以使用远程访问该讨厌的旧路由器的基于 Java 的 Web GUI有些可容忍的延迟水平...

(如果您使用的是 Firefox,您可能需要将选项设置about:confignetwork.proxy.socks_remote_dnsTrue以便浏览器也通过 SOCKS 代理连接转发任何 DNS 请求,这样您也可以使用网络管理员工作站的 DNS 解析。)

(免责声明:上述描述与任何内容有任何相似之处特别的现实生活中的一系列事件完全是巧合。类似的事情可能在世界各地很多不同的地方发生过很多很多次。)

相关内容