28. def setup_net_namespace(user):
if setns(ns_path('net', user)):
return
veth_id = random_id()
veth_master = 'veth' + veth_id
veth_slave = 'veths' + veth_id
# ip netns add user
# ip link add name veth_master type veth
# peer name veth_slave
# ip link set veth_slave netns user
# ip link set veth_master up
# brctl addif br0 veth_master
pam_container.py netns▸
29. def setup_net_namespace(user):
if setns(ns_path('net', user)):
return
veth_id = random_id()
veth_master = 'veth' + veth_id
veth_slave = 'veths' + veth_id
# ip netns add user
# ip link add name veth_master type veth
# peer name veth_slave
# ip link set veth_slave netns user
# ip link set veth_master up
# brctl addif br0 veth_master/var/run/netns/user
pam_container.py netns▸
30. if not setns(ns_path('net', user)):
raise RuntimeError('Failed to setns into
a freshly created netns')
# ip link set veth_slave name eth0
# ip link set lo up
# ip link set eth0 up
# ip addr add dev eth0 ...
# ip route add default via ...
pam_container.py netns▸
31. if not setns(ns_path('net', user)):
raise RuntimeError('Failed to setns into
a freshly created netns')
# ip link set veth_slave name eth0
# ip link set lo up
# ip link set eth0 up
# ip addr add dev eth0 ...
# ip route add default via ...
DHCP:
- po FS namespace
- proces cały czas w tle :(
pam_container.py netns▸
38. :( brak /proc/self/ns/mnt
mount = restart (poprawione w 3.8)
:) własne /usr/local
ln -s fakeroot sudo
:) nss_extrausers
/var/lib/extrausers/passwd
:) mount / -o remount,ro
uwaga na /home
:) mount /proc -o hidepid=2
w globalnym mntns
pam_container.py mntns▸