如何为环回分配额外的 IP

如何为环回分配额外的 IP

我有几个 docker 容器,它们应该访问 Gentoo 主机上运行的共享 PostgreSQL。如果 dockerized 应用程序使用主机的公共 IP 连接到数据库,则此方法有效。

不过,我想稍微解耦一下通过在环回上使用额外的私有 IP不要使用公共 IP,例如 10.172.17.1。

我不确定要向 /etc/conf.d/net 添加什么,而且由于这是一个我无法物理访问的远程框,所以我有点犹豫,只是随便玩玩。也许有人能给我一些提示?

多谢!

答案1

我自己想出了这个办法:

可以添加config_lo 10.172.17.1/32到 /etc/conf.d/net,然后通过重新启动 net.lo 服务来分配这个额外的 IP rc-service net.lo restart。但是...这将在下次重启后消失。

截至目前,Gentoo 不会启动 net.lo 服务来启动环回,而是使用单独的脚本 /etc/init.d/loopback。该脚本用于ifconfig完成其工作,IP 是硬编码的。修补脚本本身肯定是一个坏主意。

但由于仅在 Docker 容器启动后才需要额外的 IP,因此可以通过本地服务添加:

cat "ip addr add 10.172.17.1/32 dev lo scope host" >/etc/local.d/docker_loopback.start
cat "ip addr del 10.172.17.1/32 dev lo scope host" >/etc/local.d/docker_loopback.stop
chmod a+x /etc/local.d/docker_loopback.*

现在重新启动或者只运行启动脚本然后检查结果:

/etc/local.d/docker_loopback.start
ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.172.17.1/32 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

相关内容