This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
docs:lxc [2013-11-24 15:13] glen loginuid issue |
docs:lxc [2013-12-09 15:33] glen load iptables from hook |
||
---|---|---|---|
Line 24: | Line 24: | ||
Build the guest container. | Build the guest container. | ||
+ | |||
==== Bare minimum, no template ==== | ==== Bare minimum, no template ==== | ||
Line 62: | Line 63: | ||
!!! WARNING: pld template for LXC is yet to be written !!! | !!! WARNING: pld template for LXC is yet to be written !!! | ||
- | ===== Vserver comparision ===== | + | ===== Common problems / Useful tricks ===== |
- | When in Vserver, guest processes are not visible in host, then in LXC all guest processes are visible. Beware when running ''killall(1)'' commands on host. | + | ==== lxc-stop is not graceful ==== |
- | Also, unfortunately ''/proc/PID/root'' points to ''/'' for LXC guests as well, so ''rc-scripts'' ''filter_chroot()'' can't differentiate between host and guest processes. | + | Currently ''lxc-stop -n test'' sends ''SIGPWR'' to init inside container, but ''rc-scripts'' fails to shutdown things properly (shutdown scripts are not invoked). For workaround, stop services manually before issueing ''lxc-stop'' or run ''poweroff''/''halt''/''reboot'' from container. |
- | Also, ''dmesg(1)'' in guest sees hosts' dmesg by default, you can turn this off by setting ''kernel.dmesg_restrict=1'' sysctl param, available since ''2.6.37'' kernel. | + | Details: In process table is only this process runrning, no further actions from ''rc-scripts'': |
+ | <file> | ||
+ | /sbin/shutdown -f -h +2 Power Failure; System Shutting Down | ||
+ | </file> | ||
- | ''pam_loginuid.so'' does not allow ''sshd'' to login. similar problem as [[http://kb.parallels.com/en/112597|here]]. | + | ==== loginuid ==== |
- | Workaround: | + | having ''audit_control'' dropped: |
- | Disable "pam_loginuid.so" in the authentication rules: | + | <file config config> |
+ | lxc.cap.drop = audit_control | ||
+ | </file> | ||
+ | |||
+ | ''pam_loginuid.so'' does not allow ''sshd'' to login: | ||
+ | <file> | ||
+ | Nov 24 16:02:10 test sshd[2694]: error: PAM: pam_open_session(): Cannot make/remove an entry for the specified session | ||
+ | </file> | ||
+ | |||
+ | You can either [[http://kb.parallels.com/en/112597|workaround]] to disable ''pam_loginuid.so'' in the authentication rules: | ||
<file> | <file> | ||
# sed '/pam_loginuid.so/s/^/#/g' -i /etc/pam.d/* | # sed '/pam_loginuid.so/s/^/#/g' -i /etc/pam.d/* | ||
</file> | </file> | ||
+ | |||
+ | Or just **do not** drop the capability. | ||
+ | ===== Vserver comparision ===== | ||
+ | |||
+ | When in Vserver, guest processes are not visible in host, then in LXC all guest processes are visible. Beware when running ''killall(1)'' commands on host. | ||
+ | |||
+ | Also, unfortunately ''/proc/PID/root'' points to ''/'' for LXC guests as well, so ''rc-scripts'' ''filter_chroot()'' can't differentiate between host and guest processes. | ||
+ | |||
+ | Also, ''dmesg(1)'' in guest sees hosts' dmesg by default, you can turn this off by setting ''kernel.dmesg_restrict=1'' sysctl param, available since ''2.6.37'' kernel. | ||
+ | |||
**Commands:** | **Commands:** | ||
Line 94: | Line 117: | ||
- you can't filter it from host's firewall | - you can't filter it from host's firewall | ||
- you HAVE to set mac. If not - on every container start you'll have different one (your router will not pass the traffic). | - you HAVE to set mac. If not - on every container start you'll have different one (your router will not pass the traffic). | ||
+ | - iptables is initialized from lxc.hook.pre-mount hook (ran in the container's namespace and having macvlan interface visible) | ||
+ | |||
first boot with ''hwaddr'' line disabled, look what the random address was assigned, set it in config. | first boot with ''hwaddr'' line disabled, look what the random address was assigned, set it in config. | ||
Line 112: | Line 137: | ||
lxc.network.ipv4 = 192.168.2.160/23 | lxc.network.ipv4 = 192.168.2.160/23 | ||
lxc.network.ipv4.gateway = 192.168.2.1 | lxc.network.ipv4.gateway = 192.168.2.1 | ||
+ | |||
+ | lxc.hook.pre-mount = /sbin/service iptables start | ||
+ | lxc.cap.drop = net_admin | ||
</file> | </file> |