KVM: bridge z wlan rozhraní

KVM: bridge z wlan rozhraní
« kdy: 13. 06. 2013, 22:09:56 »
Ahoj,
chtel jsem se zeptat, zda mate nekdo navod jak vytvorit funkcni bridge z wlan0 pro VM v KVM.

Ja jsem nasel jen tento http://yalb.blogspot.cz/2012/04/wireless-bridging-for-kvm.html navod, ale nepodarilo se mi to zprovoznit.
« Poslední změna: 14. 06. 2013, 16:43:54 od Petr Krčmář »


Avogadrus

Re:KVM - jak vytvorit bridge z wlan rozhrazni
« Odpověď #1 kdy: 14. 06. 2013, 08:37:16 »
prerekvizity:uml-utilities

Kód: [Vybrat]
#!/bin/bash
kvm_up(){
    tunctl -u $User -t $tap
    sysctl net.ipv4.ip_forward=1
    sysctl net.ipv4.conf.$Iface.proxy_arp=1
    sysctl net.ipv4.conf.$tap.proxy_arp=1
    ip link set dev $tap up
    route add -host $IPko dev $tap
}

kvm_down(){
    #sysctl net.ipv4.ip_forward=0
    #sysctl net.ipv4.conf.$Iface.proxy_arp=0
    sysctl net.ipv4.conf.$Tap.proxy_arp=0
    ip link set dev $Tap down
    tunctl -d $Tap
}


function usage(){
echo "------------------------------------------------------"
echo "Usage: $(basename $0)  [ -s | -i | -I | -u | -h ]"
echo "-------------------------------"
echo "   -s  ... usage [start|stop]"
echo "   -i  ... ip adress: ipv4"
echo "   -I  ... interface to use"
echo "   -u  ... user which will use tap interface"
echo "   -t  ... tap name "
echo "   -anything else  ... this help"
echo "------------------------------------------------------"
exit 1
}

while getopts :s:i:I:u:t: option
do
    case "${option}"
    in
        s) Stav=${OPTARG};;
        i) IPko=$(echo ${OPTARG} | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}");;
        I) Iface=${OPTARG};;
        u) User=${OPTARG};;
        t) Tap=${OPTARG};;
    esac
done
#echo "$IPko $Iface $User"
if [[ $EUID -ne 0 ]]; then
    echo "-------------------------------"
    echo "This script must be run as root"
    echo "-------------------------------"
    exit 1
else
    case "$Stav" in
        start)
            if [[ -n $IPko && -n $Iface && -n $User ]]; then
                ping -c 3 $IPko | grep "0 received" &>/dev/null
                if [ $? -eq 0 ];then
                    tap="tap$(ip a show | grep tap | wc -l)"
                    kvm_up >/dev/null
                    if [ $? -eq 0 ];then
                        echo $tap
                        exit 0
                    else
                        exit 1
                    fi
                else
                    echo "--------------------------"
                    echo "IP adress is already used'"
                    echo "--------------------------"
                    exit 1
                fi
            else
                echo "----------------------------------------------------------------------------------------------"
                echo "Usage: $(basename $0) -s start -i 'guest IP adress' -I 'interface {ethx|wlanx|...}' -u 'user'"
                echo "----------------------------------------------------------------------------------------------"
                exit 1
            fi
            ;;
        stop)
            if [[ -n $Tap ]]; then
                kvm_down >/dev/null
            else
                # echo "----------------------------------------------------------------------------------------------"
                # echo "Usage: $(basename $0) -s stop -t 'tap name {tapx}' -I 'interface {ethx|wlanx|...}' "
                # echo "----------------------------------------------------------------------------------------------"
                # exit 1
                echo "----------------------------------------------------------------------------------------------"
                echo "Usage: $(basename $0) -s stop -t 'tap name {tapx}' "
                echo "----------------------------------------------------------------------------------------------"
                exit 1
            fi
            ;;
        *)
            usage
            exit 1
            ;;
    esac
fi

příklad
sudo ./script -s start -i 192.168.255.254 -I wlan0 -u vilibald
při úspěchu vrátí tap0, které použiju
kvm -m 64 virtualky/test.img -localtime -net nic,vlan=0,model=e1000,macaddr=52:54:00:00:00:01 -net tap,ifname=tap0,script=no,vlan=0
a virtuálce nastavím ip 192.168.255.254

Re:KVM - jak vytvorit bridge z wlan rozhrazni
« Odpověď #2 kdy: 14. 06. 2013, 16:22:58 »
Ahoj, diky za pomoc. Tvoje reseni mi bohuzel nefunguje. Kdyz spustim VM v QEMU tak to konci BSODem:( Musim to teda poustet pres klikatko "virt-manager". U toho zase nevim kde nastavit jake parametry. Ve VM je taky potreba konfigurovat GW - tam bude jaka IP? Nize moje sitova konfigurace po spusteni skriptu:

Kód: [Vybrat]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master br0 state DOWN qlen 1000
    link/ether 00:1c:25:95:20:bd brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:16:ea:bb:bd:54 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.126/24 brd 192.168.1.255 scope global wlan0
    inet6 fe80::216:eaff:febb:bd54/64 scope link
       valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 00:1c:25:95:20:bd brd ff:ff:ff:ff:ff:ff
    inet 169.254.156.156/16 brd 169.254.255.255 scope link br0:avahi
    inet6 fe80::21c:25ff:fe95:20bd/64 scope link
       valid_lft forever preferred_lft forever
6: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 500
    link/ether 5e:7a:07:09:e9:17 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5c7a:7ff:fe09:e917/64 scope link
       valid_lft forever preferred_lft forever
7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 500
    link/ether fe:54:00:98:6d:8c brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe98:6d8c/64 scope link
       valid_lft forever preferred_lft forever


Avogadrus

Re:KVM: bridge z wlan rozhraní
« Odpověď #3 kdy: 17. 06. 2013, 13:57:29 »
Pravděpodobný důvod proč končíš na BSOD je rozdílnost hw, změnu síťové karty zvládne snad každý OS. Čili si do kvm nadefinuj stejné "železo" jako používáš v tom klikátku. Klikátko neznám, víc neporadím.