通过代理

通过代理

新手问题。我有三个远程服务器(S1、S2 和 S3)。其中一个有互联网连接(S1),另外两个(S2 和 S3)可以仅有的访问 S1 – 例如,我已经从 S1 到 S2 和 S3 设置了无密码 SSH。

但是,这意味着我无法在 S2 和 S3 上进行任何更新或包管理。有没有办法在 S2 和 S3 上发出 HTTP 请求,该请求通过 S1 进行隧道传输,从而实现互联网访问?SSH 隧道适用吗?如果适用,是否有资源可以逐步指导我如何针对我的情况执行此操作?

谢谢。

答案1

为无法直接访问互联网的系统提供互联网(http/https)访问的最简单方法是使用代理,例如乌贼. 在 S1 上安装代理并配置 S2 和 S3 以使用代理(例如通过设置 http_proxy 环境变量或更新应用程序的配置文件)

答案2

正如 Bert Neef 所建议的,Squid 是一个很好的解决方案。我推荐的另一个选项是 SOCKS 代理,它使用 SSH 隧道,正如您所建议的。它甚至可以与某些包管理器一起使用:https://askubuntu.com/questions/35223/syntax-for-socks-proxy-in-apt-conf

该链接适用于 ubuntu,但 tsocks 不是 ubuntu 专用的。

以下是一个示例:https://www.linode.com/docs/networking/ssh/setting-up-an-ssh-tunnel-with-your-linode-for-safe-browsing

或者直接谷歌搜索“socks proxy ssh”

答案3

通过代理

代理将根据客户端请求进行流量重定向

优点

  • 您可以根据需要重定向您的流量(例如匹配域名)
  • 访问日志集中在服务器1上

通过 Apache

如果你在服务器 1 上使用 Apache,你可以创建虚拟主机来将你的请求代理到服务器 2 和 3

优点

  • 您可以使用不同的域名访问每个 Web 服务器
  • Web 日志将集中在服务器 1
  • 您可以使用中央身份验证
  • 您可以在访问服务器 2 和 3 之前使用服务器 1 上的 apache 规则阻止可疑的网络流量

不方便之处

  • 要连接到 ssh 2 和 3,您必须通过服务器 1 进行连接,然后使用 ssh 命令连接到服务器 2 和 2

通过 NAT

如果你使用 NAT(网络转换地址),你可以设置几个链接到内部 IP+端口的外部 IP+端口

优点

  • 服务器就像直接连接到互联网,因此您只需几个 IP + 端口即可访问它们

不方便之处

  • 每个 Web 服务器和每个 ssh 都需要 1 个端口

相关内容