#:This FAQ includes information taken from the FAQs of Jacques GÃ©linas and Paul Sladen.
Are there other FAQs available?
#:Yes. There are other (mostly older) FAQ's available:
Where can I find a overview of Linux-VServer?
How to verify that a setup is working properly?
#*To verify that your setup works properly, there are some test scripts to check basic functionality.
- primarily testme.sh and testfs.sh (see ((TestScripts)) for more details)
What hardware is supported by linux-vserver?
#:The following platforms are supported in the stable versions of linux-vserver.
- i386 and higher (and compatible)
- ia32 / ia64
- mips / mips64
- hppa / hppa64
- ppc / ppc64
- sparc / sparc64
- s390 / s390x
- x86_64 (AMD64)
Which kernel versions are supported?
#: recent 2.4 and 2.6 kernels (stable), recent 2.6 kernels (development).
- Some ancient versions of Linux-VServer are backported to 2.2.x kernels. You can find more information here.
Can I run Linux-vserver on my favorite distribution?
#:Linux-VServer was originally developed on Red Hat/Mandriva, but it is rather distribution independent. It runs fine with other distributions (Debian, SuSE). Some distributions run a patched kernel, which can make it a bit harder to build a new kernel with Linux-VServer support
What's the latest version of Linux-VServer?
Where can I find prereleases and release candidates?
D. Tools (util-vserver and vserver)
What do I need them for?
#:These are the userspace tools for Linux-VServer. You need them to use the functionality of Linux-VServer.
What's the difference between vserver and util-vserver?
#:The vserver package are the 'legacy utilities', written by Jacques GÃ©linas.
- The util-vserver package is a reimplementation of these tools in C by Enrico Scholz, which follows the kernel development more closely.
- util-vserver tools are currently considered the mainstream tools (You can't use both packages on the same machine.)
- Both packages have their own version numbering. Don't let the version numbering confuse you.
Which version of the tools packages do I need? Do I have to upgrade?
*:It can be useful to have a recent version of the tools package installed on your box. It's a good idea to upgrade your tools when you upgrade your kernel. In the next list you find the versions you need to have at least, but it's a good idea to use more recent versions.
- linux-vserver 1.00
- vserver 0.26
- util-vserver 0.24
- linux-vserver 1.20
- vserver 0.28
- util-vserver 0.25
- linux-vserver 2.00
- util-vserver 0.30 or 0.30.209
Where can I dowload the latest version of:
Distribution specific packages
- This script installs Debian straight off the web from Debian.org's world-wide network of mirrors.
F. Network Usage?
Is IPv6 supported?
#:At this moment, only IPv4 (the current most frequently used standard) is supported.
Can I put my vservers in different networks?
#:Yes you can. You have to bind your vserver to a interface on the host machine, but you can choose the interface in the configuration file of your vserver (in /etc/vservers/SERVER.conf). Make sure your host server does have an interface in the network you need on your vserver.
Is it possible for a vserver to have a other default gateway than the host machine does use?
#:Yes. Use iproute2 to set the default gateway.
- You can find more information on routing in linux-vserver in this posting on the mailinglist.
Can I use more than one IP address in a vserver
#:Yes you can. Edit the configuration file of the vserver (/etc/vservers/SERVER.conf).
- In case you want to use example IP addresses on one interface
- IPROOT="10.1.2.3 10.1.2.12"
- In case you want to use 2 or more interfaces
- IPROOT="eth0:10.1.2.3 eth1:10.1.2.12"
- In case you want to use IP-number in different subnets
- IPROOT="eth0:10.1.2.3/255.255.255.0 eth0:10.1.3.12/255.255.0.0"
- If you are using vserver 2.0+ you have to create subdirectories in /etc/vserver/<vserver-name>/interfaces/
- for each IP you want to use, i.e.
- These subdirectories have to contain files with the options you want to set. See the Flower page for more info
Is it possible to use the real device (eth0, eth1) instead of the device alias created by vserver?
#:Yes. Set up the IP aliases yourself on the host server
- Set IPROOT= to those IPs
- Unset IPROOTDEV so the vserver script won't try to setup the IP aliases.
Can I modify the behavior of my vservers?
Were can I find more information on networking in Linux-VServer?
#:You can find more information on the internals of networking in Linux-VServer here
G. Software compatibility
Bind does not work in a vserver
#* capset failed
- The bind package expect to have the capability CAP_SYS_RESOURCE.
- It expects this because it was compiled this way on Linux and to increase its ulimit.
- By default, a vserver does not have this capability for a good reason, you may have a look at 'man capabilities' to see how much control that capability allows.
- A vserver starts with some ulimit values and can only reduce them, not enlarge them.
- If you know what you are doing, you can give the capability to the vserver running bind.
- A securer solution is to compile bind without that requirement by specifying './configure --disable-linux-caps'
- It looks like you only can run bind as root once you compile bind with this option, but this should be fine inside a vserver.
- bind does not respond to queries
- Bind seems to have problems with a query socket check. Bind believes the query is comming on a non-query socket, and doesn't answer the request.
- putting "query-source address YOUR_VSERVER_IP;" in your named.conf solves this problem.
Is DHCP possible in a vserver?
#:It's possible to run a DHCP server inside a vserver, but it required a CAP_NET_RAW capability.
- The solution for 2.6 kernel with new-style config is to add CAP_NET_RAW entry in the /etc/vserver/<vserver-name>/bcapabilities file, and it might be unnecessary to add 255.255.255.255 into bcast file, please read The Great Flower Page for more details. If you are still use the legacy config, please read the answer below.
- It's possible to run a DHCP server inside a vserver, but there is a catch. The set_ipv4root assigns one IP and one broadcast address to a vserver. UDP service listening to 0.0.0.0 (bind any) in a vserver are indeed listening to the vserver IP and vserver broadcast.
- This is all they will get. This is fine for most services.
- Unfortunately, dhcpd is receiving special broadcasts. Its clients are unaware of their IP number, so they are using special broadcast 255.255.255.255 address.
- A vserver generally runs with the broadcast address of the network device (the one used to setup the IP alias). This network device has a broadcast address which is never 255.255.255.255. Those special broadcast are not sent to the vserver. The solution is to set the IPROOTBCAST entry in the vserver configuration file like this IPROOTBCAST=255.255.255.255
- Restart your vserver and dhcpd will work. There is a catch (at least with 2.4.18ctx-9). If you are using other services in the save vserver, also relying on broadcast for proper operation (samba for one), they won't operate properly.
- One solution would be to enhance the semantics a little: A vserver would listen for its IP address, its broadcast address and also for 255.255.255.255.
- The dhcpd case is probably very specific though.
#:It's not posible to run a NFS-kernel server inside a vserver, to work securely this would need a lot of work.
- You can try to run the NFS userspace server, the traditional Linux user space NFS server and UNFS3 are both reported to work.
- take a look at ((NFS and portmap)) if you have problems with your portmap
Run Level Based Distributions as Ververs (Red Hat and such ....)
#: If you see errors after the command vserver <name> stop like these:
- Syncing hardware clock to system time hwclock is unable to get I/O port access: the iopl(3) call failed FAILED]
- Turning off swap: Not superuser. [FAILED]
- Turning off quotas: quotaoff: Can't stat() mounted device /dev/hdv1: No such file or directory
- Unmounting file systems: umount2: No such file or directory umount: /vservers: not found
- Then look for S* links in /etc/rc6.d/ and remove the one responsible for the errors. In RH9 it is called S01reboot
- A 'normal' server does some stuff on shutdown, like saving the time to the hwclock, or storing random pool data and finally invokes the reboot. Some of those actions are just not allowed in a vserver.
Vservers and X Windows
#: Please see the ((Vservers and X)) page for information about this.
sshd with X11-Forwarding in a vserver
#: add ```'X11UseLocalhost no'``` to your sshd_config
See also: [ProblematicPrograms]
== H. Help ==
Where can I find more information on the Linux-VServer project?
#:First have a look at the ((documentation)) section of the website. In case you can't find the answer here, have a look at the mailinglist archives. If this doesn't help jou, there is still a mailinglist and a IRC channel were you can ask for help.
Does the Linux-VServer project have a mailing list?
#:Yes. You can subscribe here
. Archives are located here
Is there a IRC channel
#:Yes, join #vserver on irc.oftc.net.
When starting or entering a vserver I get "Error: /proc must be mounted". 'vserver-stat' and 'vps' are failing with "open("/proc/uptime"): No such file or directory". Sometimes, other files in /proc are mentioned. What can I do?
script. See ((Proc-Security)) also.
Inside a vserver I can still use mknod to create devices, even without CAP_MKNOD capability. What's wrong? (this probably applies to all other capabilities but that was not tested)
#:This is probably a problem in your kernel configuration. If you include "Enable different security models" (CONFIG_SECURITY), then make sure to also include "Default Linux Capabilities" (CONFIG_SECURITY_CAPABILITIES) or compile it as a module. In this latter case you must insert the 'capability' module into the kernel. This is for example true for current (18.104.22.168) debian kernel configurations.
After stopping/restarting a vserver my network is gone! What the hell?
#: See above.
Only root can access any files in the vserver
#: Check the permissions of the vserver's / directory. The 2.4 branch's chroot-escape blocker (chmod 0000 and chattr +t) is meant to be applied to the directory containing the vservers (for example /vservers) not the vservers' root directories themselves. If you revoked all permissions for a vserver's root directory, re-grant them with "chmod 0755 /path/to/vserver-root".
"daemon() failed: Success" - What? Succesfully failing?
#: Not really vserver related but here's the answer: Somebody replaced your /dev/null with a regular file, create a real /dev/null and it will start working again. We got no idea why the error message happens to be so funny(?).
When I start a vserver, "FATAL: kernel too old" message appears and vserver can't be started
#:Edit your /etc/vservers/<vsname>/uts/release and define a value greater than kernel version
- example, if you have a kernel "2.6.11", set "2005" for example :-)
I switched from old to new configuration and now all my ip addresses are gone!
#:They are not, ifconfig just doesn't show them. The new tools use 'iproute' instead of 'ifconfig' which allows you to use multiple interface addresses with the same label. In such cases, ifconfig shows only the first address for each label, which probably isn't available in the vserver. Unless you specify a name for an ip address, it will be given the interface name as label, eg. eth0, and ifconfig breaks. You can assign names to your interface addresses in the vserver configuration, see The Great Flower Page
- Earlier, we said that the interface addresses were "nameless", this was wrong. As said above, the addresses in question actually all have the same name/label. Knowing this we could actually virtualize the ioctl interface which ifconfig uses in a meaningful way, making ifconfig show the vserver's ip addresses as expected, even when it shares its label with other ip addresses (of course only if there aren't multiple ip addresses in the same vserver that share the same label, but that's an ifconfig limitation, not a vserver bug). The patch should apply to most Linux-VServer versions for kernel 2.6 and will probably be included in future versions.
When I enter/ssh into a vserver I can see all of the interfaces and interface aliases with ifconfig.
#:I experienced this after upgrading from a 2.4 to 2.6 kernel with vs-2.0 patch using legacy-method .conf files. Upgrading from legacy-method to the new one (see Converting From Legacy to New
) caused the problem to go away.
I keep my vserver roots on their own devices. I can unmount them but the device (like drbd or lvm) remains in use until all of my vservers are killed off ("Someone has opened the device for RW access").
#: When you mount something it is recorded in the current namespace. When you start a vserver it makes copy of the namespace. You can then unmount in the original namespace without any problems, however the device is still in use. This is because the device is still mounted in the new namespace. You can do something like this: "vnamespace -e runningVserver umount /mnt/point". After this you should be able to remove the device (drbdadm secondary /dev/drbd0 or whatever).
- More information:
- WARNING: if you use the kernel cleanup feature then make sure you know what you are doing. I didn't, it was ugly.
When I stop a vserver its network alias does not go away, I am getting 'RTNETLINK answers: Cannot assign requested address
- Try running 'ip addr' and see if the interface names are being truncated (note: I came across a thread that seems to suggest that this might happen even if the interface name is not being truncated?). The function that kills the interface specifies its name, if it is truncated then 'ip' will not be able to find the interface.
- Another cause might be that the IP was added (or already present at startup) with a different netmask, and therfore can not be removed properly
- My solution to this is very, very gross. Open up your vserver.functions file and find the disableInterfaces function. If you change
- IP_ADDR) $_IP addr del "$@";;
- IP_ADDR) $(echo $_IP addr del "$@"
Why does the vserver run on a BSD fs (ufs) ?!
#* I see something like: /dev/hdv1 / ufs defaults 0 0
- The ufs part is correct and it is so to trick the quota tools to not try to lowlevel access the fs. The entry is FAKE anyway, ufs just solved this quota userland issue nicely (more or less).
- When I issue a ping it returns:
- [root@VServerGuest /]# ping 22.214.171.124
- connect: Invalid argument
- When I issue a DNS lookup it returns:
- [root@VServerGuest /]# host www.yahoo.ca
- socket.c: internal_send: 126.96.36.199#53: Invalid argument
- ;; connection timed out; no servers could be reached
- When I try to run vyum it returns:
- [root@VServerGuest /]# vyum VServerGuest -- check-update
- Cannot find a valid baseurl for repo: core
- Error: Cannot find a valid baseurl for repo: core
- Make sure that you have either a Public IP setup on the VServer Guest, or that you have a proper SNAT/DNAT rules setup on your VServer Host. After that, restart the vserver guest with the verbose option to see what your ipv4root is set to:
- [root@VServerGuest /]# vserver -v VServerGuest start
- ipv4root is now 127.0.0.10 188.8.131.52
- New security context is 49156
- You must make sure the order of the interfaces are correct. The very first Interface (decided upon by alphabetical order of the interface directory name) for the VServer is the default IP used for all network connections. This must be either a public IP or an IP that has been D/SNAT'd.