配置 APT 使用特定 IP 地址或网络接口

配置 APT 使用特定 IP 地址或网络接口

我遇到过这样的情况:一台服务器有两个 IP 地址,都分配给同一个接口。如何告诉 APT 使用特定 IP 下载软件包和更新缓存?

基本上我正在寻找类似--interfacein 的东西curl(1),仅适用于 APT。

     --interface <name>

          Perform an  operation using a specified  interface. You
          can enter interface  name, IP address or  host name...

我已经调查过apt.conf(5)apt-transport-http(1)发现那里没有选择。

我想到了两种解决方法:

  1. 设置一个能够识别不同接口/IP 的代理,并用于Acquire::http::Proxy告诉 APT 通过该代理。

  2. 也许我可以设置一些网络命名空间来实现这一点,尽管我还没有深入研究文档。

APT 是否可以使用特定的网络接口/IP 地址?如果没有,更好的解决方法是什么?

以下是具体情况:

一台服务器被分配了两个 IP 地址,每个地址都位于通往 Internet 的 NAT 后面。 (这里的bridge只是为了方便配置管理,实际上只是enp1s0在后面br0。)

$ ip address show br0
9. br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/22 brd 192.168.3.255 scope global dynamic br0
       valid_lft 1055sec preferred_lft 1055sec
    inet 192.168.0.3/22 brd 192.168.3.255 scope global secondary br0
       valid_lft forever preferred_lft forever
    inet6 fe80::5867:78ff:fef8:7146/64 scope link 
       valid_lft forever preferred_lft forever

这两个 IP 在不同的公共 IP 后面进行 NAT。其中之一 ( 192.168.0.3) 具有较高的 Internet 带宽,适合下载 APT 软件包。然而,几乎所有其他网络连接都应该通过其他 IP,因此它 ( 192.168.0.2) 被设置在默认路由中。

期望的效果是APT用来192.168.0.3下载包和缓存。

答案1

如果您有多个可以路由到更新服务器的接口,那么您需要确保选择路由到一组给定的 IP 地址(您的更新服务器):策略路由

这是一篇博客文章,讨论了我认为与您需要的类似的内容:https://osric.com/chris/accidental-developer/2019/03/linux-policy-based-routing/

相关内容