[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xen-users] two networks with two networking cards...?


  • To: xen-users@xxxxxxxxxxxxxxxxxxx
  • From: ko0nz <yesiko0nz@xxxxxxxxx>
  • Date: Tue, 6 Nov 2007 19:30:01 +0100
  • Delivery-date: Tue, 06 Nov 2007 10:30:51 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=dOiNViDWWobEgzM4TJm7FEvgF/aT3NoVeDdj7zbCTiXdXf+636ftzfd4kv2aoEO4CN0oQoIjRpe+1uGJ62Dzgmfh6DAfplNvROYdGNdn2OlrF7sm3MuYqy+fc75H71CcMNzKv9/Nq97LpLBVZhphl/WD1GfxE05Zel5YnFD7kKg=
  • List-id: Xen user discussion <xen-users.lists.xensource.com>

here's how i try to did:
-------------------------------
Dom0 : eth0 --> ip   192.168.1.10
                        gw 192.168.1.1

            eth1 --> ip   192.168.2.20
                        gw  192.168.2.1

i'd like to have the the host (Dom0) using the eth0 interface with
192.168.1.10 gw 192.168.1.1

and i'd like to have ONE guest (DomU) using the eth1 interface with
192.168.2.200 gw 192.168.2.1
-----------------------------------------------------------------------------------------------------------------------------------------------
on Dom0:

cat /etc/xen/xend-config.sxp

(network-script network-bond-bridge-setup)
(vif-script vif-bridge)
(dom0-min-mem 196)
(dom0-cpus 0)
------

cat /etc/network/interfaces

auto lo
iface lo inet loopback

auto xenbr0
iface xenbr0 inet static
 address 192.168.1.10
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 172.20.22.255
 gateway 192.168.1.1
 bridge_ports eth0
 # optional
 bridge_maxwait 0

auto xenbr1
iface xenbr1 inet static
        address 192.168.2.20
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 172.20.10.255
        gateway 192.168.2.1
 bridge_ports eth1
 # optional
 bridge_maxwait 0

------------------

cat /etc/xen/scripts/network-bond-bridge-setup

#!/bin/sh

# Usage: transfer_addrs src dst
# Copy all IP addresses (including aliases) from device $src to device $dst.
transfer_addrs () {
    local src=$1
    local dst=$2
    # Don't bother if $dst already has IP addresses.
    if ip addr show dev ${dst} | egrep -q '^ *inet ' ; then
        return
    fi
    # Address lines start with 'inet' and have the device in them.
    # Replace 'inet' with 'ip addr add' and change the device name $src
    # to 'dev $src'.
    ip addr show dev ${src} | egrep '^ *inet ' | sed -e "
s/inet/ip addr add/
s@\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/[0-9]\+\)@\1@
s/${src}/dev ${dst}/
" | sh -e
    # Remove automatic routes on destination device
    ip route list | sed -ne "
/dev ${dst}\( \|$\)/ {
  s/^/ip route del /
  p
}" | sh -e
}

# Usage: transfer_routes src dst
# Get all IP routes to device $src, delete them, and
# add the same routes to device $dst.
# The original routes have to be deleted, otherwise adding them
# for $dst fails (duplicate routes).
transfer_routes () {
    local src=$1
    local dst=$2
    # List all routes and grep the ones with $src in.
    # Stick 'ip route del' on the front to delete.
    # Change $src to $dst and use 'ip route add' to add.
    ip route list | sed -ne "
/dev ${src}\( \|$\)/ {
  h
  s/^/ip route del /
  P
  g
  s/${src}/${dst}/
  s/^/ip route add /
  P
  d
}" | sh -e
}



# Usage: create_bridge bridge
create_bridge () {
    local bridge=$1

    # Don't create the bridge if it already exists.
    if ! brctl show | grep -q ${bridge} ; then
        brctl addbr ${bridge}
        brctl stp ${bridge} off
        brctl setfd ${bridge} 0
    fi
    ip link set ${bridge} up
}

# Usage: add_to_bridge bridge dev
add_to_bridge () {
    local bridge=$1
    local dev=$2
    # Don't add $dev to $bridge if it's already on a bridge.
    if ! brctl show | grep -q ${dev} ; then
        brctl addif ${bridge} ${dev}
    fi
}

# Usage: show_status dev bridge
# Print ifconfig and routes.
show_status () {
    local dev=$1
    local bridge=$2

    echo '============================================================'
    ip addr show ${dev}
    ip addr show ${bridge}
    echo ' '
    brctl show ${bridge}
    echo ' '
    ip route list
    echo ' '
    route -n
    echo '============================================================'
}

op_start () {
    create_bridge xenbr0
    #add_to_bridge xenbr0 vif0.0
    add_to_bridge2 xenbr0 eth0

    #transfer_addrs bond0 xenbr0
    #transfer_routes bond0 xenbr0

    create_bridge xenbr1
    add_to_bridge xenbr1 eth2
        
    ifconfig xenbr1 172.20.0.190 netmask 255.255.255.0 up
    route add default gw 172.20.0.1

    create_bridge xenbr2
    create_bridge xenbr3
}

op_stop () {
    transfer_routes xenbr0 eth0
    ip link set xenbr0 down
    brctl delbr xenbr0

    ip link set xenbr1 down
    brctl delbr xenbr1
}

# adds $dev to $bridge but waits for $dev to be in running state first
add_to_bridge2() {
    local bridge=$1
    local dev=$2
    local maxtries=10

    echo -n "Waiting for ${dev} to negotiate link."
    for i in `seq ${maxtries}` ; do
        if ifconfig ${dev} | grep -q RUNNING ; then
            break
        else
            echo -n '.'
            sleep 1
        fi
    done

    if [ ${i} -eq ${maxtries} ] ; then echo '(link isnt in running state)' ; fi

    add_to_bridge ${bridge} ${dev}
}

case "${1}" in
    start)
        op_start
        ;;

    stop)
        op_stop
        ;;

    status)
        show_status ${netdev} ${bridge}
        ;;

    *)
        echo "Unknown command: ${1}" >&2
        echo 'Valid commands are: start, stop, status' >&2
        exit 1
esac

------------------------------------------------------------------------------------------------------------

on DomU
cat /etc/xen/test0.cfg

#
#  Networking
#
vif  = [ 'ip=192.168.2.200' ]

------------------------
cat /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
 address 192.168.2.200
 gateway 192.168.2.1
 netmask 255.255.255.0
##########################################################################


what's i get:

# brctl show

bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.000ffe6df4e5       no              eth0
                                                vif2.0
xenbr1          8000.0013f70ba95c       no              eth1

----------

eth0      Link encap:Ethernet  HWaddr 00:0F:FE:6D:F4:E5
          inet6 addr: fe80::20f:feff:fe6d:f4e5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12594 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1207 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:2212135 (2.1 MiB)  TX bytes:173429 (169.3 KiB)
          Base address:0x2100 Memory:f0500000-f0520000

eth1      Link encap:Ethernet  HWaddr 00:13:F7:0B:A9:5C
          inet6 addr: fe80::213:f7ff:fe0b:a95c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25128 errors:0 dropped:0 overruns:0 frame:0
          TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9397421 (8.9 MiB)  TX bytes:5273 (5.1 KiB)
          Interrupt:19 Base address:0xa000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:840 (840.0 b)  TX bytes:840 (840.0 b)

vif2.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:235 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10049 errors:0 dropped:1 overruns:0 carrier:0
          collisions:0 txqueuelen:32
          RX bytes:13703 (13.3 KiB)  TX bytes:1830178 (1.7 MiB)

xenbr0    Link encap:Ethernet  HWaddr 00:0F:FE:6D:F4:E5
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20f:feff:fe6d:f4e5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12148 errors:0 dropped:0 overruns:0 frame:0
          TX packets:978 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1939726 (1.8 MiB)  TX bytes:151682 (148.1 KiB)

xenbr1    Link encap:Ethernet  HWaddr 00:13:F7:0B:A9:5C
          inet addr:192.168.2.20  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::213:f7ff:fe0b:a95c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24921 errors:0 dropped:0 overruns:0 frame:0
          TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:8910868 (8.4 MiB)  TX bytes:5015 (4.8 KiB)
--------------------

the problem is that the Dom0 is using the address of eth1 interface:
192.168.2.20.
i'd like it use the the eth0 interface 192.168.1.10.

i can ping work-bond-bridge-setup)
(vif-script vif-bridge)
(dom0-min-mem 196)
(dom0-cpus 0)
------

cat /etc/network/interfaces

auto lo
iface lo inet loopback

auto xenbr0
iface xenbr0 inet static
 address 192.168.1.10
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 172.20.22.255
 gateway 192.168.1.1
 bridge_ports eth0
 # optional
 bridge_maxwait 0

auto xenbr1
iface xenbr1 inet static
        address 192.168.2.20
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 172.20.10.255
        gateway 192.168.2.1
 bridge_ports eth1
 # optional
 bridge_maxwait 0

------------------

cat /etc/xen/scripts/network-bond-bridge-setup

#!/bin/sh

# Usage: transfer_addrs src dst
# Copy all IP addresses (including aliases) from device $src to device $dst.
transfer_addrs () {
    local src=$1
    local dst=$2
    # Don't bother if $dst already has IP addresses.
    if ip addr show dev ${dst} | egrep -q '^ *inet ' ; then
        return
    fi
    # Address lines start with 'inet' and have the device in them.
    # Replace 'inet' with 'ip addr add' and change the device name $src
    # to 'dev $src'.
    ip addr show dev ${src} | egrep '^ *inet ' | sed -e "
s/inet/ip addr add/
s@\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/[0-9]\+\)@\1@
s/${src}/dev ${dst}/
" | sh -e
    # Remove automatic routes on destination device
    ip route list | sed -ne "
/dev ${dst}\( \|$\)/ {
  s/^/ip route del /
  p
}" | sh -e
}

# Usage: transfer_routes src dst
# Get all IP routes to device $src, delete them, and
# add the same routes to device $dst.
# The original routes have to be deleted, otherwise adding them
# for $dst fails (duplicate routes).
transfer_routes () {
    local src=$1
    local dst=$2
    # List all routes and grep the ones with $src in.
    # Stick 'ip route del' on the front to delete.
    # Change $src to $dst and use 'ip route add' to add.
    ip route list | sed -ne "
/dev ${src}\( \|$\)/ {
  h
  s/^/ip route del /
  P
  g
  s/${src}/${dst}/
  s/^/ip route add /
  P
  d
}" | sh -e
}



# Usage: create_bridge bridge
create_bridge () {
    local bridge=$1

    # Don't create the bridge if it already exists.
    if ! brctl show | grep -q ${bridge} ; then
        brctl addbr ${bridge}
        brctl stp ${bridge} off
        brctl setfd ${bridge} 0
    fi
    ip link set ${bridge} up
}

# Usage: add_to_bridge bridge dev
add_to_bridge () {
    local bridge=$1
    local dev=$2
    # Don't add $dev to $bridge if it's already on a bridge.
    if ! brctl show | grep -q ${dev} ; then
        brctl addif ${bridge} ${dev}
    fi
}

# Usage: show_status dev bridge
# Print ifconfig and routes.
show_status () {
    local dev=$1
    local bridge=$2

    echo '============================================================'
    ip addr show ${dev}
    ip addr show ${bridge}
    echo ' '
    brctl show ${bridge}
    echo ' '
    ip route list
    echo ' '
    route -n
    echo '============================================================'
}

op_start () {
    create_bridge xenbr0
    #add_to_bridge xenbr0 vif0.0
    add_to_bridge2 xenbr0 eth0

    #transfer_addrs bond0 xenbr0
    #transfer_routes bond0 xenbr0

    create_bridge xenbr1
    add_to_bridge xenbr1 eth2
        
    ifconfig xenbr1 172.20.0.190 netmask 255.255.255.0 up
    route add default gw 172.20.0.1

    create_bridge xenbr2
    create_bridge xenbr3
}

op_stop () {
    transfer_routes xenbr0 eth0
    ip link set xenbr0 down
    brctl delbr xenbr0

    ip link set xenbr1 down
    brctl delbr xenbr1
}

# adds $dev to $bridge but waits for $dev to be in running state first
add_to_bridge2() {
    local bridge=$1
    local dev=$2
    local maxtries=10

    echo -n "Waiting for ${dev} to negotiate link."
    for i in `seq ${maxtries}` ; do
        if ifconfig ${dev} | grep -q RUNNING ; then
            break
        else
            echo -n '.'
            sleep 1
        fi
    done

    if [ ${i} -eq ${maxtries} ] ; then echo '(link isnt in running state)' ; fi

    add_to_bridge ${bridge} ${dev}
}

case "${1}" in
    start)
        op_start
        ;;

    stop)
        op_stop
        ;;

    status)
        show_status ${netdev} ${bridge}
        ;;

    *)
        echo "Unknown command: ${1}" >&2
        echo 'Valid commands are: start, stop, status' >&2
        exit 1
esac

------------------------------------------------------------------------------------------------------------

on DomU
cat /etc/xen/test0.cfg

#
#  Networking
#
vif  = [ 'ip=192.168.2.200' ]

------------------------
cat /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
 address 192.168.2.200
 gateway 192.168.2.1
 netmask 255.255.255.0
##########################################################################


what's i get:

# brctl show

bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.000ffe6df4e5       no              eth0
                                                vif2.0
xenbr1          8000.0013f70ba95c       no              eth1

----------

eth0      Link encap:Ethernet  HWaddr 00:0F:FE:6D:F4:E5
          inet6 addr: fe80::20f:feff:fe6d:f4e5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12594 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1207 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:2212135 (2.1 MiB)  TX bytes:173429 (169.3 KiB)
          Base address:0x2100 Memory:f0500000-f0520000

eth1      Link encap:Ethernet  HWaddr 00:13:F7:0B:A9:5C
          inet6 addr: fe80::213:f7ff:fe0b:a95c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25128 errors:0 dropped:0 overruns:0 frame:0
          TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9397421 (8.9 MiB)  TX bytes:5273 (5.1 KiB)
          Interrupt:19 Base address:0xa000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:840 (840.0 b)  TX bytes:840 (840.0 b)

vif2.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:235 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10049 errors:0 dropped:1 overruns:0 carrier:0
          collisions:0 txqueuelen:32
          RX bytes:13703 (13.3 KiB)  TX bytes:1830178 (1.7 MiB)

xenbr0    Link encap:Ethernet  HWaddr 00:0F:FE:6D:F4:E5
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20f:feff:fe6d:f4e5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12148 errors:0 dropped:0 overruns:0 frame:0
          TX packets:978 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1939726 (1.8 MiB)  TX bytes:151682 (148.1 KiB)

xenbr1    Link encap:Ethernet  HWaddr 00:13:F7:0B:A9:5C
          inet addr:192.168.2.20  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::213:f7ff:fe0b:a95c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24921 errors:0 dropped:0 overruns:0 frame:0
          TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:8910868 (8.4 MiB)  TX bytes:5015 (4.8 KiB)
--------------------

the problem is that the Dom0 is using the address of eth0 interface:
192.168.1.10.
i'd like it use the the eth0 interface 192.168.2.20.

i can ping 192.168.1.10, 192.168.2.20


my DomU, test0 is using 192.168.2.200 gw 192.168.2.200 gw 192.168.2.1
and it works fine.


what could you suggest, please?
the script, i get it from someone.
is the config correct?

thank you in adavance.

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.