[systemd-devel] .socket in a network namespace
Alex Polvi
alex at polvi.net
Sat Jan 18 11:19:44 PST 2014
On Sat, Jan 18, 2014 at 7:45 AM, Peeters Simon <peeters.simon at gmail.com> wrote:
> 2014/1/18 Alex Polvi <alex at polvi.net>:
>> Hello,
>>
>> Is there a way to have a .socket bind in a particular network
>> namespace? The use case is to have a container with isolated
>> networking be able to start a service, or tunnel to a remote service,
>> that exists outside the containers namespace.
>>
>> Thank you for any leads. I could not find anything related to this in
>> the documentation.
>>
>> Regards,
>>
>> -Alex
>
> just wondering, does "JoinsNamespaceOf=" work for this?
> If it doesn't can it be extended to support this situation?
Just tried it out, and it appears that it does not work for sockets.
$ cat test.service
[Service]
ExecStart=/usr/bin/sleep 30000
PrivateNetwork=true
$ cat join.service
[Service]
ExecStart=/usr/bin/sleep 3000
$ cat join.socket
[Unit]
JoinsNamespaceOf=test.service
[Socket]
ListenStream=8080
$ systemctl status join.socket
join.socket
Loaded: loaded (/run/systemd/system/join.socket; static)
Active: active (listening) since Sat 2014-01-18 19:10:58 UTC; 1min 46s ago
Listen: [::]:8080 (Stream)
Jan 18 19:10:58 localhost systemd[1]: Starting join.socket.
Jan 18 19:10:58 localhost systemd[1]: Listening on join.socket.
$ systemctl status test.service
test.service
Loaded: loaded (/run/systemd/system/test.service; static)
Active: active (running) since Sat 2014-01-18 19:07:45 UTC; 5min ago
Main PID: 567 (sleep)
CGroup: /system.slice/test.service
└─567 /usr/bin/sleep 30000
Jan 18 19:07:45 localhost systemd[1]: Started test.service.
The .socket is still bound on the general namespace
nsenter will join the network namespace of 567 (the sleep process with
PrivateNetworking)
$ sudo nsenter -t 567 -n -- netstat -lnt | grep 8080
$ netstat -lnt | grep 8080
tcp6 0 0 :::8080 :::* LISTEN
The socket is still listening on the host networking.
-Alex
More information about the systemd-devel
mailing list