mirror of https://github.com/containers/podman.git
Merge pull request #17963 from Luap99/slirp-dns-userns
fix slirp4netns resolv.conf ip with a userns
This commit is contained in:
commit
9369a3c336
|
@ -1003,6 +1003,8 @@ func (c *Container) completeNetworkSetup() error {
|
||||||
nameservers = append(nameservers, server.String())
|
nameservers = append(nameservers, server.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
nameservers = c.addSlirp4netnsDNS(nameservers)
|
||||||
|
|
||||||
// check if we have a bindmount for /etc/hosts
|
// check if we have a bindmount for /etc/hosts
|
||||||
if hostsBindMount, ok := state.BindMounts[config.DefaultHostsFile]; ok {
|
if hostsBindMount, ok := state.BindMounts[config.DefaultHostsFile]; ok {
|
||||||
entries, err := c.getHostsEntries()
|
entries, err := c.getHostsEntries()
|
||||||
|
|
|
@ -2037,8 +2037,13 @@ func (c *Container) generateResolvConf() error {
|
||||||
}
|
}
|
||||||
// first add the nameservers from the networks status
|
// first add the nameservers from the networks status
|
||||||
nameservers = networkNameServers
|
nameservers = networkNameServers
|
||||||
|
|
||||||
// slirp4netns has a built in DNS forwarder.
|
// slirp4netns has a built in DNS forwarder.
|
||||||
nameservers = c.addSlirp4netnsDNS(nameservers)
|
// If in userns the network is not setup here, instead we need to do that in
|
||||||
|
// c.completeNetworkSetup() which knows the actual slirp dns ip only at that point
|
||||||
|
if !c.config.PostConfigureNetNS {
|
||||||
|
nameservers = c.addSlirp4netnsDNS(nameservers)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set DNS search domains
|
// Set DNS search domains
|
||||||
|
|
|
@ -196,8 +196,18 @@ load helpers.network
|
||||||
@test "podman run with slirp4ns adds correct dns address to resolv.conf" {
|
@test "podman run with slirp4ns adds correct dns address to resolv.conf" {
|
||||||
CIDR="$(random_rfc1918_subnet)"
|
CIDR="$(random_rfc1918_subnet)"
|
||||||
run_podman run --rm --network slirp4netns:cidr="${CIDR}.0/24" \
|
run_podman run --rm --network slirp4netns:cidr="${CIDR}.0/24" \
|
||||||
$IMAGE grep "${CIDR}" /etc/resolv.conf
|
$IMAGE cat /etc/resolv.conf
|
||||||
is "$output" "nameserver ${CIDR}.3" "resolv.conf should have slirp4netns cidr+3 as a nameserver"
|
assert "$output" =~ "nameserver ${CIDR}.3" "resolv.conf should have slirp4netns cidr+3 as first nameserver"
|
||||||
|
no_userns_out="$output"
|
||||||
|
|
||||||
|
if is_rootless; then
|
||||||
|
# check the slirp ip also works correct with userns
|
||||||
|
run_podman run --rm --userns keep-id --network slirp4netns:cidr="${CIDR}.0/24" \
|
||||||
|
$IMAGE cat /etc/resolv.conf
|
||||||
|
assert "$output" =~ "nameserver ${CIDR}.3" "resolv.conf should have slirp4netns cidr+3 as first nameserver with userns"
|
||||||
|
assert "$output" == "$no_userns_out" "resolv.conf should look the same for userns"
|
||||||
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "podman run with slirp4ns assigns correct ip address container" {
|
@test "podman run with slirp4ns assigns correct ip address container" {
|
||||||
|
|
Loading…
Reference in New Issue