我有 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 进行任何更改。