Lo
primero que debemos saber es que UML consta con un daemon que cumple la
función de switch.
El switch
daemon (uml\_switch) puede actuar tanto como switch o como hub para las
máquinas que corran UML. Cada una de éstas consta de tarjetas virtuales,
las cuales se conectan con el daemon usando socket de unix, y realiza el
forwards tal como lo haria un switch.
El switch
daemon también puede conectarse a la tarjeta virtual creada en la
máquina host. De esta forma las máquinas virtuales pueden tener salida
al mundo(internet).
A continuación se muestran los comandos necesarios para la configuración
de la red en suse 9.
-
Crear
un dispositivo tun/tap con tunctl:
$ tunctl -t uml0
-
Luego
debemos configurar este dispositivo en el host:
En SuSE las interfaces se encuentran definidas en el
directorio /etc/sysconfig/network, en los archivos ifcfg-*.
Nosotros debemos crear un archivo llamado ifcfg-uml0, el cual debe
tener algo similar a lo siguiente:
BOOTPROTO="static"
BROADCAST="172.23.42.255"
IPADDR="172.23.42.1"
NETMASK="255.255.255.0"
NETWORK="172.23.42.0"
STARTMODE="onboot"
-
Una
vez creado el archivo, podemos levantar la interfaz escribiendo:
$ ifup uml0
-
Ahora
es necesario configurar el ruteamiento y traslado de paquetes dentro
del sistema. es decir, que los paquetes generados en la red virtual,
tengan salida a la internet.El siguiente script realiza esta
configuración.
NAT_IF="$1"
OUT_IF="${2-eth0}"
if test "$NAT_IF" = ""; then
echo "usage: $0 if1 [ if2 ]"
echo " if1 -- the interface to be NAT'ed"
echo " if2 -- the interface the NAT'ed traffic
should go"
echo " default: eth0"
exit 1
fi
set -ex
# reset tables
iptables -t filter -F
iptables -t mangle -F
iptables -t nat -F
# mark packages which we want NAT
iptables -t mangle -A FORWARD -i "$NAT_IF" -o "$OUT_IF"
-j MARK -- set-mark 1
# allow forward for marked (+related) packages
iptables -t filter -A FORWARD -m state --state
ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -m mark --mark 1 -j
ACCEPT
iptables -t filter -P FORWARD DROP
# translate marked packages
iptables -t nat -A POSTROUTING -m mark --mark 1
-j MASQUERADE
# enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
-
Una
vez creado, es necesario ejecutarlo.
$ uml-nat-setup uml0
-
Hecho
esto, iniciamos el daemon switch:
$ uml\_switch -tap uml0
Para trabajar en modo Hub, basta con colocar -hub cuando se
ejecuta el daemon.
-
Luego
booteamos la maquina UML con la tarjeta virtual seteada:
$ /path/to/linux eth0=daemon,mac-address [ other
args ]
Otra
forma de configurar la red es a través de un bridge. El siguiente script
realiza esta configuración.
#! /bin/sh
# setup bridge
if ip link ls | grep -q hw0; then
echo "### hw0 exists"
else
echo "### setup bridge"
set -ex
modprobe bridge
ip link set eth0 name hw0
brctl addbr eth0
brctl addif eth0 hw0
ip link set hw0 up
set -ex
fi
# setup uml device + add to bridge
if ip link ls | grep -q uml0; then
echo "### uml0 exists"
else
echo "### setup uml0"
set -ex
modprobe tun
tunctl -t uml0 -u 500
brctl addif eth0 uml0
ip link set uml0 up
set -ex
fi
|