XenNetworking/Examples

From Xen
Jump to: navigation, search
Icon todo.png Needs Review

Not clear whether this page is up-to-date and works with Xen 4.x. I copied it from the old wiki as it was linked to from the Debian wiki.


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 <<EOF >> /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 <<EOF > /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
  • 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=<PublicIP>,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

Also see