Xen Networking Examples

Index

Contents

1. Xen Networking Examples
1. Single Physical Public - Single Virtual Backend
1. Justification
2. Network Layout
3. dom0 (xend)
4. domU
2. Template
1. Justification
2. Network Layout
3. dom0 (xend)
4. domU

Xen Networking Examples

This page is here because I found it difficult to find information on what I felt was a relatively simple networking case. However it should not be limited by that case - it could become a good reference point for most common networking layouts.

Single Physical Public - Single Virtual Backend

Justification

At Hetzner (a German hosting company - also available in SA) their root servers typically have a single ethernet connection, allowing multiple addresses. I also wanted to have a private network to allow home directory sharing and other such things between various functional Xen domains (www/mail...).

Network Layout

My IP and most of my /29 subnet are avaiable directly on the single ethernet interface provided. The first subnet address is the subnet gateway and is provided by my hosting provider.

Hosting Switch
|
|
|
peth0
|
xenbr0 xenbr1
| - PubIP - dom0 - RFC1918 - |
| - PubIP - domU - RFC1918 - |
...

dom0 (xend)

I run debian as a dom0, and chose to use 172.16.16.0/24 as my RFC1918 range, so I did the following (as root):

modprobe dummy

echo dummy >> /etc/modules

cat <> /etc/network/interfaces
# Xen Backend
auto dummy0
iface dummy0 inet static
address 172.16.16.1
broadcast 172.16.16.255
netmask 255.255.255.0
EOF

ifup dummy0

cat < /etc/xen/scripts/my_network_script
#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=0 netdev=eth0 bridge=xenbr0
"$dir/network-bridge" "$@" vifnum=1 netdev=dummy0 bridge=xenbr1
EOF

chmod +x /etc/xen/scripts/my_network_script

Don't forget to make the new script executable

Then edit /etc/xen/xend-config.sxp to have the following two lines of config:

(network-script my_network_script)
(vif-script vif-bridge)

And restart xend

/etc/init.d/xend restart

If you run ifconfig now you should see the following interfaces:

* lo
* eth0 (Your public IP address)
* dummy0 (172.16.16.1 - or other RFC1918 address)
* xenbr0
* xenbr1

domU

Configure your domU as normal - but edit the cfg file to have the following entry (substitute your public IP and an available private IP):

vif = [ 'ip=,bridge=xenbr0','ip=172.16.16.2,bridge=xenbr1' ]

When you boot it up - set the two interfaces up in /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address x.y.z.2
gateway x.y.z.1
netmask 255.255.255.248

auto eth1
iface eth1 inet static
address 172.16.16.2
netmask 255.255.255.0

Template

Justification

Network Layout

dom0 (xend)

domU