新手问题。我有三个远程服务器(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 专用的。
或者直接谷歌搜索“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 个端口