配置apt在vagrant box中使用proxy

Modified on: Mon, 20 May 2019 04:40:02 +0800

我正在使用Vagrant设置虚拟机进行测试。我想在虚拟机内部使用主机上的代理来允许所有下载的缓存在虚拟机运行的实例之间保持不变,这不仅是为了提高速度,还允许我在我拥有时启动流浪者实例没有互联网连接。

我已经设置了正在运行的代理,而且我认为我已经告诉他们通过在Vagrant脚本中设置它来使用它:

config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; HTTP { Proxy "http://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'
config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; FTP { Proxy "ftp://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'
config.vm.provision :shell, :inline => 'echo \'Acquire { Retries "0"; HTTPS { Proxy "https://10.0.2.2:3128"; }; };\' >> /etc/apt/apt.conf'

它正在部分工作,即当我的wifi连接被禁用但Squid正在运行并且在其缓存中有一些条目时,源的初始请求到达缓存并工作。我还可以看到一些请求从Squids日志文件中击中Squid:

1367492453.816     34 127.0.0.1 TCP_REFRESH_MODIFIED/200 592 GET http://security.ubuntu.com/ubuntu/dists/precise-security/Release.gpg - DIRECT/91.189.92.181 -
1367492453.987    168 127.0.0.1 TCP_REFRESH_MODIFIED/200 49973 GET http://security.ubuntu.com/ubuntu/dists/precise-security/Release - DIRECT/91.189.92.181 -
1367492453.999    325 127.0.0.1 TCP_MISS/404 588 GET http://us.archive.ubuntu.com/ubuntu/dists/precise/InRelease - DIRECT/91.189.91.13 text/html
1367492454.113    114 127.0.0.1 TCP_MISS/404 596 GET http://us.archive.ubuntu.com/ubuntu/dists/precise-updates/InRelease - DIRECT/91.189.91.13 text/html

然而,大部分软件包的下载都没有被缓存,并且似乎根本没有通过Squid,即我可以看到它们在下载时出现大量网络使用,并且它们没有出现在Squid访问日志中

所以我的问题是如何配置Apt为其所有请求使用代理?

btw我也尝试通过设置环境变量http_proxy进行配置:

 config.vm.provision :shell, :inline => "echo 'export http_proxy=http://10.0.2.2:3128' >> /etc/profile.d/proxy.sh"

这具有相同的效果 - 一些请​​求似乎是在击中Squid而不是所有请求,特别是不是实际的包。

作者:Danack

最佳答案

apt可能会为其所有请求使用squid,但是squid没有缓存结果。您可以通过嗅探流量来验证这一点,或者在apt正在下载包并查看它们是否失败时关闭squid。你的squid配置中的maximum_object_size是什么?

作者:sciurus

相关问答

添加新评论