* Re: Connecting back to the host through a dummy veth interface
[not found] <176606116131.2775.3279769610610037541@maja>
@ 2025-12-20 14:12 ` Stefano Brivio
2025-12-20 14:28 ` Felix Rubio
0 siblings, 1 reply; 4+ messages in thread
From: Stefano Brivio @ 2025-12-20 14:12 UTC (permalink / raw)
To: Felix Rubio; +Cc: passt-user
Hi Felix,
On Thu, 18 Dec 2025 13:32:36 +0100
Felix Rubio <felix@kngnt.org> wrote:
> Hi everybody,
>
> I am trying to run a number of rootless podman pods and containers by different
> users, while still being able to talk to each other. To this end I am creating
> a dummy veth interface and publishing all the exposed ports there (this works:
> I can communicate from other host services with those containers), and I am
> also trying to set that dummy veth interface as the default gateway for the
> pods/containers (with the expectation that then they will be able to reach
> each other). However, this is not working... and I am pretty lost.
>
> For example, I am running the following command, trying to connect a ldap
> client container to a ldap server container, unsuccessfully.
>
> podman run --rm --dns=10.255.255.1 --network=pasta:--outbound-
> if4=cluster_dns0,--gateway=10.255.255.1 --add-host=ldap.host.internal:host-gateway sh -c "ip add && ip route && ldapwhoami -H ldaps://
> ldap.host.internal:1636"
>
> Is this something impossible to do, or am I doing something wrong?
Sorry, I'm a bit swamped at the moment, and I plan to get back to you
in a bit, but meanwhile, I think the dummy veth trick is unnecessarily
complicated.
I think you could simply connect "to the host" and redirect from there
to the containers by means of mapped ports. See:
https://blog.podman.io/2024/10/podman-5-3-changes-for-improved-networking-experience-with-pasta/
for a couple of details. But I'll try to come up with a full example
next.
--
Stefano
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Connecting back to the host through a dummy veth interface
2025-12-20 14:12 ` Connecting back to the host through a dummy veth interface Stefano Brivio
@ 2025-12-20 14:28 ` Felix Rubio
2025-12-21 10:47 ` Stefano Brivio
0 siblings, 1 reply; 4+ messages in thread
From: Felix Rubio @ 2025-12-20 14:28 UTC (permalink / raw)
To: Stefano Brivio; +Cc: passt-user
Hey Stefano,
Thank you for your answer! I know I can run rootful containers, and that then
I can access the host's network ns. However, this exposes a number of
potential issues:
* In case the an attacker manages to break out of the container, gets root
* That enables connecting back to the host loopback, but then from that
container any service listening to the loopback can be reached as well.
The reason for looking for a way of binding those services to 10.255.255.1 (so
that only exposed services will be in that interface) and running fully
rootless, if works, provides a more secure system... in general.
About the mapped ports, I am a bit lost: for what I have tested, running
rootless disables the possibility to connect back to the host, right?
Regards, and thank you!
Felix
On Saturday, 20 December 2025 15:12:24 Central European Standard Time Stefano
Brivio wrote:
> Hi Felix,
>
> On Thu, 18 Dec 2025 13:32:36 +0100
>
> Felix Rubio <felix@kngnt.org> wrote:
> > Hi everybody,
> >
> > I am trying to run a number of rootless podman pods and containers by
different
> > users, while still being able to talk to each other. To this end I am
creating
> > a dummy veth interface and publishing all the exposed ports there (this
works:
> > I can communicate from other host services with those containers), and I
am
> > also trying to set that dummy veth interface as the default gateway for
the
> > pods/containers (with the expectation that then they will be able to reach
> > each other). However, this is not working... and I am pretty lost.
> >
> > For example, I am running the following command, trying to connect a ldap
> > client container to a ldap server container, unsuccessfully.
> >
> > podman run --rm --dns=10.255.255.1 --network=pasta:--outbound-
> > if4=cluster_dns0,--gateway=10.255.255.1 --add-
host=ldap.host.internal:host-gateway sh -c "ip add && ip route &&
> > ldapwhoami -H ldaps:// ldap.host.internal:1636"
> >
> > Is this something impossible to do, or am I doing something wrong?
>
> Sorry, I'm a bit swamped at the moment, and I plan to get back to you
> in a bit, but meanwhile, I think the dummy veth trick is unnecessarily
> complicated.
>
> I think you could simply connect "to the host" and redirect from there
> to the containers by means of mapped ports. See:
>
> https://blog.podman.io/2024/10/podman-5-3-changes-for-improved-networking-experience-with-pasta/
>
> for a couple of details. But I'll try to come up with a full example
> next.
--
Felix Rubio
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Connecting back to the host through a dummy veth interface
2025-12-20 14:28 ` Felix Rubio
@ 2025-12-21 10:47 ` Stefano Brivio
0 siblings, 0 replies; 4+ messages in thread
From: Stefano Brivio @ 2025-12-21 10:47 UTC (permalink / raw)
To: Felix Rubio; +Cc: passt-user
On Sat, 20 Dec 2025 15:28:43 +0100
Felix Rubio <felix@kngnt.org> wrote:
> Hey Stefano,
>
> Thank you for your answer! I know I can run rootful containers, and that then
> I can access the host's network ns. However, this exposes a number of
> potential issues:
> * In case the an attacker manages to break out of the container, gets root
> * That enables connecting back to the host loopback, but then from that
> container any service listening to the loopback can be reached as well.
Sure. That's the whole point behind pasta(1) and rootless containers
with Podman / rootlesskit. I certainly won't be the one suggesting that
you'd run anything as root. :)
> The reason for looking for a way of binding those services to 10.255.255.1 (so
> that only exposed services will be in that interface) and running fully
> rootless, if works, provides a more secure system... in general.
Indeed.
> About the mapped ports, I am a bit lost: for what I have tested, running
> rootless disables the possibility to connect back to the host, right?
Hah, I see now. No, that's not the case. You can run rootless
containers and connect to the host from them, in two ways:
1. disabled by default in Podman's pasta integration, not what you want:
via the loopback interface, see -U / -T in 'man pasta' and
--host-lo-to-ns-lo for the other way around.
In that case, packets appear to be local (source address is
loopback) in the other namespace ("host" or initial namespace for
packets from a container, and container for packets from host).
This gives you better throughput but making connections appear as if
they were local is risky (cf. CVE-2021-20199), so it's disabled by
default, and not what I'm suggesting (at least in general)
2. what you get as default in Podman: using pasta's --map-guest-addr.
The current description of this option in pasta(1) isn't great, hence
https://bugs.passt.top/show_bug.cgi?id=132, but the idea is that you
will reach the host from the container with a non-loopback address,
as if the connection was coming from another host (which should
represent the expected container usage).
So here's an example:
$ podman run --rm -ti -p 8089:80 traefik/whoami
2025/12/21 10:42:16 Starting up on port 80
[in another terminal]
$ podman run --rm -ti fedora curl host.containers.internal:8089
Hostname: ab94f49b5042
IP: 127.0.0.1
IP: ::1
IP: **.***.*.***
IP: ****:***:***:***::*
IP: ****::****:****:****:****
RemoteAddr: 169.254.1.2:46592
GET / HTTP/1.1
Host: host.containers.internal:8089
User-Agent: curl/8.15.0
Accept: */*
...doesn't that work for you? Note that you'll need somewhat recent
versions of pasta (>= 2024_08_21.1d6142f) and Podman (>= 5.3).
--
Stefano
^ permalink raw reply [flat|nested] 4+ messages in thread
* Connecting back to the host through a dummy veth interface
@ 2025-12-18 12:32 Felix Rubio
0 siblings, 0 replies; 4+ messages in thread
From: Felix Rubio @ 2025-12-18 12:32 UTC (permalink / raw)
To: passt-user
Hi everybody,
I am trying to run a number of rootless podman pods and containers by different
users, while still being able to talk to each other. To this end I am creating
a dummy veth interface and publishing all the exposed ports there (this works:
I can communicate from other host services with those containers), and I am
also trying to set that dummy veth interface as the default gateway for the
pods/containers (with the expectation that then they will be able to reach
each other). However, this is not working... and I am pretty lost.
For example, I am running the following command, trying to connect a ldap
client container to a ldap server container, unsuccessfully.
podman run --rm --dns=10.255.255.1 --network=pasta:--outbound-
if4=cluster_dns0,--gateway=10.255.255.1 --add-host=ldap.host.internal:host-gateway sh -c "ip add && ip route && ldapwhoami -H ldaps://
ldap.host.internal:1636"
Is this something impossible to do, or am I doing something wrong?
Thank you very much for any help you can provide!
--
Felix
Felix Rubio
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-12-21 10:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <176606116131.2775.3279769610610037541@maja>
2025-12-20 14:12 ` Connecting back to the host through a dummy veth interface Stefano Brivio
2025-12-20 14:28 ` Felix Rubio
2025-12-21 10:47 ` Stefano Brivio
2025-12-18 12:32 Felix Rubio
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).