从私人networking通过公共到互联网的隧道

我有4个服务器下面的configuration:
服务器1和3(Web服务器,邮件服务器各自):NIC1:公用networking,连接到Internet
NIC2:专用networking,服务器之间的通信。

服务器2和4(数据库和备份服务器):
网卡:专用networking,服务器之间的通信。

我试图find一种方法,将apt(仅)从服务器2和4的stream量通过连接到公共networking的两台服务器中的一台路由到互联网,以便我不必将这两台服务器连接到公共networking只是为了apt。 有没有办法做到这一点?

非常感谢。

使用安装在服务器1或3上的代理服务器,configuration为允许从专用networking服务器连接到sources.list的站点。 作为奖励,如果你使用像squid或者approx的caching代理,你将使用更less的带宽来下载服务器通用的包。

对于像squid这样的常规web代理 ,你可以在运行apt之前设置$http_proxy环境variables,或者编辑你的apt.conf文件(如果你在Debian上压缩,看起来configuration被分割成/etc/apt/apt.conf.d/不同文件/etc/apt/apt.conf.d/ ,添加一个新文件)并进行设置

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

如果使用ftp镜像和ftp代理,请用ftpreplacehttp。

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

如果你不想安装一个代理服务器,你可以使用ssh的端口转发方法:

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

 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的“dynamic”SOCKS代理和tsocks为apt-get提供SOCKS支持。 要做到这一点,你将不得不使用从server2 ssh“倒退”到server1

 ssh -D 8080 server1 

在一个terminal,然后在另一个terminal上运行tsocks apt-get update等。 您将在/etc/tsocks.conf设置服务器和端口信息, tsocks “wrapper”程序会将apt中的普通http连接转换为使用ssh提供的socks代理。 这样你就不会对sources.list做任何改变。