mirror of
https://github.com/containers/podman
synced 2024-10-20 01:03:51 +00:00
podman machine: use gvproxy for host.containers.internal
Let the gvproxy dns server handle the host.containers.internal entry.
Support for this is already added to gvproxy. [1]
To make sure the container uses the dns response from gvproxy we should
not add host.containers.internal to /etc/hosts in this case.
[NO TESTS NEEDED] podman machine has no tests :/
Fixes #11642
[1] 1108ea4516
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
parent
ddb3844511
commit
cf28dab9f1
|
@ -2050,35 +2050,39 @@ func (c *Container) getHosts() string {
|
|||
}
|
||||
}
|
||||
|
||||
// Add gateway entry
|
||||
var depCtr *Container
|
||||
netStatus := c.getNetworkStatus()
|
||||
if c.config.NetNsCtr != "" {
|
||||
// ignoring the error because there isn't anything to do
|
||||
depCtr, _ = c.getRootNetNsDepCtr()
|
||||
} else if len(netStatus) != 0 {
|
||||
depCtr = c
|
||||
}
|
||||
// Add gateway entry if we are not in a machine. If we use podman machine
|
||||
// the gvproxy dns server will take care of host.containers.internal.
|
||||
// https://github.com/containers/gvisor-tap-vsock/commit/1108ea45162281046d239047a6db9bc187e64b08
|
||||
if !c.runtime.config.Engine.MachineEnabled {
|
||||
var depCtr *Container
|
||||
netStatus := c.getNetworkStatus()
|
||||
if c.config.NetNsCtr != "" {
|
||||
// ignoring the error because there isn't anything to do
|
||||
depCtr, _ = c.getRootNetNsDepCtr()
|
||||
} else if len(netStatus) != 0 {
|
||||
depCtr = c
|
||||
}
|
||||
|
||||
if depCtr != nil {
|
||||
for _, status := range depCtr.getNetworkStatus() {
|
||||
for _, netInt := range status.Interfaces {
|
||||
for _, netAddress := range netInt.Networks {
|
||||
if netAddress.Gateway != nil {
|
||||
hosts += fmt.Sprintf("%s host.containers.internal\n", netAddress.Gateway.String())
|
||||
if depCtr != nil {
|
||||
for _, status := range depCtr.getNetworkStatus() {
|
||||
for _, netInt := range status.Interfaces {
|
||||
for _, netAddress := range netInt.Networks {
|
||||
if netAddress.Gateway != nil {
|
||||
hosts += fmt.Sprintf("%s host.containers.internal\n", netAddress.Gateway.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if c.config.NetMode.IsSlirp4netns() {
|
||||
gatewayIP, err := GetSlirp4netnsGateway(c.slirp4netnsSubnet)
|
||||
if err != nil {
|
||||
logrus.Warn("failed to determine gatewayIP: ", err.Error())
|
||||
} else if c.config.NetMode.IsSlirp4netns() {
|
||||
gatewayIP, err := GetSlirp4netnsGateway(c.slirp4netnsSubnet)
|
||||
if err != nil {
|
||||
logrus.Warn("failed to determine gatewayIP: ", err.Error())
|
||||
} else {
|
||||
hosts += fmt.Sprintf("%s host.containers.internal\n", gatewayIP.String())
|
||||
}
|
||||
} else {
|
||||
hosts += fmt.Sprintf("%s host.containers.internal\n", gatewayIP.String())
|
||||
logrus.Debug("network configuration does not support host.containers.internal address")
|
||||
}
|
||||
} else {
|
||||
logrus.Debug("network configuration does not support host.containers.internal address")
|
||||
}
|
||||
|
||||
return hosts
|
||||
|
|
Loading…
Reference in a new issue