Fórum Root.cz
Hlavní témata => Server => Téma založeno: Pavel M 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 (http://yalb.blogspot.cz/2012/04/wireless-bridging-for-kvm.html) navod, ale nepodarilo se mi to zprovoznit.
-
prerekvizity:uml-utilities
#!/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
-
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:
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
-
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.