Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam!
Od dłuższego czasu bawię się serwerkiem na Debianie, którego sobie zainstalowałem na QEMU. Teraz chciałbym żeby druga maszyna (Windows7 na QEMU) mogła się z tym serwerkiem połączyć (pingować itd...) - jednocześnie aby dalej te maszyny miały dostęp do internetu - tak jak domyślnie QEMU zapewnia dostęp do internetu przez gospodarza. Jak to najłatwiej wykonać? Utworzyłem sobie tap0 poleceniem z roota;
ip tuntap add dev tap0 mode tap user kelloco2 group kvm
ustalam IP:
ifconfig tap0 10.0.0.5/24
w QEMU przy odpalaniu dopisuję;
-net nic -net tap,ifname=tap0,script=no,downscript=no
lecz kompletnie nie wiem jak dalej się za to zabrać? Wpisuję na gościu wszystko statycznie i wygląda jakby się połączył, ale internetu nie ma i nie pinguje. Da się na to tap0 postawić jakiś serwer DHCP (mam dnsmasq) abym nie musiał tego wpisywać statycznie?
Pozdrawiam
Offline
Udostępnianie netu na tap - maskarada, i musi działać
Offline
Ok. Dzięki. Dopiero teraz po kilku próbach udało mi się na podstawie twoich wcześniejszych postów coś takiego;
secho 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -j MASQUERADE ip tuntap add dev tap0 mode tap user kelloco2 group kvm ip tuntap add dev tap1 mode tap user kelloco2 group kvm brctl addbr br0 brctl addif br0 tap0 brctl addif br0 tap1 ifconfig br0 192.168.2.1 netmask 255.255.255.0 up dnsmasq --interface=br0 --bind-interfaces --dhcp-range=192.168.2.1,192.168.2.254 ifconfig tap0 up ifconfig tap1 up
Nie wiem czy jest to ładne rozwiązanie, ale działające. Trzeba pamiętać, żeby dopisać przy uruchamianiu macaddr np;
-net nic,macaddr=54:54:82:82:3f:65 -net tap,ifname="tap0",script=no,downscript=no
Goście się widzą, mają internet a i też host widzi każdą z maszyn. Teraz dopiero ten mój Debian na QEMU ma jakiś sens ;D
Offline
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i br0 -o ppp+ -j ACCEPT iptables -t nat -A PREROUTING -i ppp+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
Net idzie przez ppp0 lub czasem ppp1, na każdym tap masz neta po maskaradzie, a jak karta tap ma w systemie własny adres IP, to też się przez nią komunikuje system gospodarza i gościa.
Jeśli tap0 istnieje samodzielnie, to musi mieć własny adres, jak mostkujesz kilka kart, to mostek musi mieć adres.
Dnsmasqa nie używam, adresy radzę dawać statycznie.
Offline
Nie prościej użyć libvirt do konfiguracji? Czas można lepiej marnować, np wyjść na spacer ;).
Offline
to nie marnowanie czasu. używałem coś z libvirt chyba tego virt-managera - i wolę trzymać się od tego z daleka. z tego co pamiętam do działania wymagał roota i porobił mi jakieś śmieci na rootfs co było nie do przyjęcia. gdyby tak wszyscy spacerowali dalej siedzielibyśmy w jaskini
Ostatnio edytowany przez dominbik (2013-10-17 23:44:10)
Offline
U mnie libvirt, virsh i virt-manager wiecznie się sypały na prostej jak sznurek w kieszeni maszynie z kvm.
Okazały się duuużżżoooo trudniejsze od basha i cgroup/cgred.
Doszedłem do wniosku, że libvirt i spółka, to kolejna po NM zabawka z cyklu, zainstalujesz wszędzie, ale działa tylko w RHEL, żebyś widział, za co trzeba płacić. ;)
SOA#1 - u mnie tak:
#!/bin/bash qemu-kvm -hda /media/box/Debian.img -m 512 -net nic,macaddr=00:1d:92:ab:3f:78 -net tap,ifname=tap0,script=no,downscript=no -nographic -alt-grab -name Debian -boot d
A tu z doklejonym łopatologicznie, ultra-prymitywnym cgroup:
#!/bin/bash echo $$ >/sys/fs/cgroup/blkio/kvm/fbsd/tasks echo $$ >/sys/fs/cgroup/cpu/kvm/fbsd/tasks echo $$ >/sys/fs/cgroup/memory/kvm/fbsd/tasks echo $$ >/sys/fs/cgroup/net_cls/kvm/fbsd/tasks qemu-kvm -hda /media/box/FreeBSD9.img -m 1024 -net nic,macaddr=00:1d:82:ac:3f:65 -net tap,ifname=tap1,script=no,downscript=no -alt-grab -name FreeBSD9 -boot d
Przewaga takich skryptów jest taka, że zawsze wiem, co w razie czego poprawić, co w kodzie libvirta i spółki już takie proste nie jest.
Ostatnio edytowany przez Jacekalex (2013-10-18 00:22:40)
Offline
Jak już ktoś potrzebuje klikacza, to lepiej użyć aqemu:
[url=http://www.zimagez.com/zimage/przechwycenieobrazuekranu-18102013-102140.php][img]http://www.zimagez.com/miniature/przechwycenieobrazuekranu-18102013-102140.php[/img][/url]
Nie robi takiego syfu jak libvirt i podobne dziadostwa.
Offline
[quote=Jacekalex]Dnsmasqa nie używam, adresy radzę dawać statycznie.[/quote]
no właśnie, ale jak to wykonać. Internet mam z wlan0, dokładnie;
inet 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.255
i ustawiam to wszystko tak;
echo 1 > /proc/sys/net/ipv4/ip_forward ip tuntap add dev tap0 mode tap user kelloco2 group kvm ip tuntap add dev tap1 mode tap user kelloco2 group kvm brctl addbr br0 brctl addif br0 tap0 brctl addif br0 tap1 ifconfig br0 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255 up iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i br0 -o wlan0 -j ACCEPT iptables -t nat -A PREROUTING -i wlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE ifconfig tap0 up ifconfig tap1 up
odpalam QEMU z dopiskiem np.
-net nic,macaddr=52:52:52:ac:3f:65 -net tap,ifname="tap1",script=no,downscript=no
i ustawiam np. w Windowsie;
[url=http://img855.imageshack.us/img855/3807/l9n7.png][img]http://img132.imageshack.us/img132/167/s0b1.png[/img][/url]
ale dalej jest coś nie tak (gdy nie używam tego dnsmasq).
tap0 zrobiłem dla Debiana.
Ostatnio edytowany przez dominbik (2013-10-19 15:22:49)
Offline
Jak to jak, w Debianie masz ifconfig i ip, w Windows masz klikajło do ustawiania IP.
Standardowa procedura.
Offline
Wiem właśnie - zarówno Debian jak i Windows łączą się do sieci (mogę je pingować z hosta i nawzajem też mogą się pingować), ale nie mają dostępu do sieci. Wpisałem adresy OpenDNS, ale nie działa;/
Offline
Jak się pingują, to znaczy, sieć jest.
ja ostatnio, w nadziei, że zobaczę kiedyś dzialający virt-manager, mam mostek, i maszyny mają różnie, np 10.0.5.10, 10.0.5.12 a mostek 10.0.5.1, udostępnianie netu dla br0 i chodzi.
Na mostku wiszą 2 karty tap.
Wcześniej bez mostka też działało, ale nie pamiętam, jak wtedy ustawiałem IP na gościu.
EDIT:
Mostek:
#!/bin/sh brctl delbr br0 2>/dev/null tunctl -u {pacjent} -t tap0 2>/dev/null tunctl -u {pacjent} -t tap1 2>/dev/null ip link tap0 up 2>/dev/null ifconfig tap0 promisc up 2>/dev/null ip link tap1 up 2>/dev/null ifconfig tap1 promisc up >/dev/null brctl addbr br0 2>/dev/null brctl addif br0 tap0 2>/dev/null brctl addif br0 tap1 2>/dev/null ifconfig br0 10.0.5.1 netmask 255.255.255.0 2>/dev/null ifconfig br0 up 2>/dev/null
SOA#1
Ostatnio edytowany przez Jacekalex (2013-10-19 17:27:59)
Offline
Moim zdaniem to jest kwestia opanowania i zrozumienia konfiguracji (libvirt). Nie narzeka sie na dziwne rzeczy w rootfs w sytuacji gdy maszyna jest przenaczona właśnie pod wirtualizację, anie tradycyjny linuksowy człowiek orkiestra.
Używam libvirt już prawie dwa lata produkcyjnie na dwóch serwerach i jestem zadowolony.
Wmawianie sobie, że jestem mądrzejszy bo wszystkie opcję potrafię ogarnąć w konsoli dawno przestało mnie bawić. KVM używam od lat jednak już uruchomienie i zarządzanie czterema wirtualnymi maszynami z palca do zabawa prawie jak samogwałt.
Ostatnio edytowany przez bobycob (2013-10-20 11:05:51)
Offline
[quote=bobycob]Moim zdaniem to jest kwestia opanowania i zrozumienia konfiguracji (libvirt). Nie narzeka sie na dziwne rzeczy w rootfs w sytuacji gdy maszyna jest przenaczona właśnie pod wirtualizację[/quote]
Wtedy to tak. U mnie tamten system to zwykły desktop i nie lubię na nim jakichkolwiek śmieci.
Offline
Sory za odświeżenie, ale nadal mnie to strasznie denerwuje. Chciałem dzisiaj zrobić sobie porządnie te serwerki bez dnsmasq i tylko statyczne IP, siedzę już 6h i nie mogę udostępnić tym wirtualkom internetu.
Robię mniej więcej tak standardowo:
echo 1 > /proc/sys/net/ipv4/ip_forward ip tuntap add dev tap0 mode tap user kelloco2 group kvm ip tuntap add dev tap1 mode tap user kelloco2 group kvm brctl addbr br0 brctl addif br0 tap0 brctl addif br0 tap1 ifconfig br0 10.0.5.1 netmask 255.255.255.0 ip link set tap0 up ip link set tap1 up ip link set tap0 promisc on ip link set tap1 promisc on
to mi tworzy tap0, tap1 i br0. Uruchamiam sobie pierwszą wirtualkę z Debianem na QEMU, ustawiam w tym Debianie tak:
auto lo iface lo inet loopback auto eth3 iface eth3 inet static address 10.0.5.2 netmask 255.255.255.0 gateway 10.0.5.1
uruchamiam sobie drugą wirtualkę Arch Linuxa na QEMU i w nim konfiguruję tak:
ifconfig ens3 10.0.5.3 ifconfig ens3 up
to wystarcza i wszystkie maszyny (2 wirtualki i moj fizyczny komp) widzą się nawzajem (mogę używać SSH , ping itd...)
10.0.5.1 - IP fizycznego hosta
10.0.5.2 - IP ip gościa debiana
10.0.5.3 - IP ip gościa archa
Do tego momentu wszystko działa super tak jak chce.
i teraz chcę udostępnić tym maszynom internet. robię tak (na maszynie fizycznej)
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i br0 -o wlan0 -j ACCEPT iptables -t nat -A PREROUTING -i wlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
w obu maszynach niestety otrzymuję ;\
ping: unknown host google.pl
jeszcze wyniki ifconfig z fizycznego hosta:
br0 inet 10.0.5.1 netmask 255.255.255.0 broadcast 10.0.5.255
mam już tego dosyć , ma ktoś może jakiś pomysł?
Ostatnio edytowany przez dominbik (2014-06-12 20:30:37)
Offline
Czy maszyny wirtualne widzą usługi (np http) na hoście gospodarza?
Jeśli tak, to powinny się widzieć po adresach kart TAP, jeśli je puścisz bez mostka, to na 100% - przy mostku też.
Zobacz komunikację na linii - gospodarz <=> VM, a potem przejrzyj routing do obu maszyn, czy jest prawidłowy.
Offline
tak. z maszyn wirtualnych mogę połączyć się po ssh do hosta gospodarza np.
ssh dominbik@10.0.5.1
. nie wiem jak sprawdzać taki routing nie znam sie na sieciach ;\ . a jakie IP powinienem ustawić na wirtualkach jako broadcast/gateway.
Offline
Sprawdzanie routingu?
ip r s
route
Na maszynkach wirtualnych też trzeba routing poprawić w razie czego.
Ostatnio edytowany przez Jacekalex (2014-06-12 21:54:51)
Offline
Dobra wklepałem na wirtualnej maszynie adres bramy domyślnej (IP fizycznego hosta)
route add default gw 10.0.5.1
i działa!!!!
tak wyglada wyniik tych komend (wirtualnej i hosta)
[url=http://oi61.tinypic.com/29fw202.jpg][img]http://oi59.tinypic.com/280kqdt.jpg[/img][/url]
na poczatku ta wirtualka nie chciala mi pingowac np. wp.pl pewnie, bo nie mam DNS , wiec zedytowalem na wirtualce /etc/resolv.conf wpisując tam adres IP mojego routera (do którego mam podłączonego fizycznego hosta) i dziala.
nie podejrzewałem nawet, że z tej wirtualki będę mógł pingować fizyczny router (do którego podłączony jest moj laptop na którym zrobiłem tą wirtualkę) oraz reszte komputerów podłączonych do tego routera ^^. przez to z wirtualnej maszyny mogę łączyć się do hosta na dwa sposoby
przez 10.0.5.1 oraz 192.168.1.3 (taki adres ip moj lapek (fizyczny host) dostaje od routera). mam nadzieje że taka konfiguracja jest okey. Dzięki Jacekalex!!!! gdyby nie twoje konfigi i pomoc nigdy by mi się to nie udało.
Ostatnio edytowany przez dominbik (2014-06-12 23:29:34)
Offline
No widzisz?
Po prostu zawsze trzeba sprawdzić wszystkie szczegóły na problematycznych systemach, u ciebie jazda polegała na tym, że musiałeś ogarnąć i zgrać ustawienia na trzech systemach równocześnie.
Jak widać, nie bolało, i działa. ;)
Offline
-net nic,macaddr=00:1d:92:ab:3f:78 -net tap,ifname=tap0,script=no,downscript=no[/quote]
Ale po co, kiedy wystarczy-netdev tap,id=net0 -device e1000,netdev=net0,mac=00:50:56:00:10:af \[/quote]
Offline
Time (s) | Query |
---|---|
0.00015 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00071 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.118.126.44' WHERE u.id=1 |
0.00193 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.118.126.44', 1733047415) |
0.00033 | SELECT * FROM punbb_online WHERE logged<1733047115 |
0.00086 | DELETE FROM punbb_online WHERE ident='185.191.171.11' |
0.00053 | SELECT topic_id FROM punbb_posts WHERE id=269579 |
0.00009 | SELECT id FROM punbb_posts WHERE topic_id=24414 ORDER BY posted |
0.00038 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24414 AND t.moved_to IS NULL |
0.00038 | SELECT search_for, replace_with FROM punbb_censoring |
0.00216 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24414 ORDER BY p.id LIMIT 0,25 |
0.00092 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24414 |
Total query time: 0.00849 s |