将专用网络的流量通过公共网络隧道传输到互联网

将专用网络的流量通过公共网络隧道传输到互联网

我有 4 台服务器,配置如下:
服务器 1 和 3(分别是 Web 服务器和邮件服务器):NIC1:公共网络,连接到 Internet
NIC2:专用网络,服务器之间的通信。

服务器 2 和 4(DB 和备份服务器):
NIC:专用网络,服务器之间的通信。

我正在尝试找到一种方法,将 apt(仅)的流量从服务器 2 和 4 路由到公共网络上连接到互联网的两台服务器之一,这样我就不必仅为了 apt 将这两台服务器连接到公共网络。有什么方法可以做到这一点吗?

多谢。

答案1

使用安装在服务器 1 或 3 上的代理服务器,配置为允许从私有网络服务器连接到站点sources.list。作为奖励,如果您使用像 squid 或approx您将使用更少的带宽来下载服务器常用的软件包。

为了常规网络代理,例如 squid,您可以在运行 apt 之前设置$http_proxy环境变量,或者编辑文件apt.conf(如果您使用的是 Debian squeeze,则配置似乎被拆分成不同的文件/etc/apt/apt.conf.d/,在 中添加一个新文件)并设置

Acquire::http::Proxy "http://user:pass@yourproxyaddress:proxyport";

如果您使用 ftp 镜像和支持 ftp 的代理,请将 http 替换为 ftp。

如果您使用 approx,那么您可以编辑客户端sources.list以指向您的 approx 服务器而不是原始镜像,而不是在您的 shell 或 apt.conf 中设置代理。

如果您不想安装代理,您可以按照以下几种方式使用 ssh 的端口转发:

1:更改服务器 2/4 的 sources.list 以http://localhost:8080/用于镜像。如果您有多个镜像主机,则需要为每个镜像主机选择不同的端口(例如 8081)。在服务器 2/4 上,启用GatewayPorts然后sshd_config ,使用 ssh 从服务器 1 连接到服务器 2/4

ssh -R 127.0.0.1:8080:http.us.debian.org:80 server2

如果有多个镜像需要隧道连接,请使用多个 -R 命令(例如-R 127.0.0.1:8081:security.debian.org:80)。只要此 ssh 连接保持打开状态,您就能够使用 apt。

2:使用 ssh 的“动态”SOCKS 代理并tsocks为 apt-get 提供 SOCKS 支持。为此,您必须使用以下命令从 server2“反向”ssh 到 server1

ssh -D 8080 server1

在一个终端然后运行tsocks apt-get update在另一个终端中输入等。您将设置服务器和端口信息,/etc/tsocks.conf然后tsocks“包装器”程序将转换 apt 中的正常 http 连接以使用 ssh 提供的 socks 代理。这样您就不会对 sources.list 进行任何更改。

相关内容