Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: lz 23. 06. 2018, 17:14:40
-
Zdravím, rád bych vás poprosil o radu. Hraju si s Qemu a chci se připojit k internetu. Postupoval jsem podle návodu na následujícím odkazu https://blog.elastocloud.org/2015/07/qemukvm-bridged-network-with-tap.html . Bohužel tímto si vždy znemožním prohlížení internetu na hostitelském počítači. Víte někdo, jak by bylo možné nakonfigurovat síť, aby běžela jak na hostitelském PC, tak na virtuálu?
Díky za odpovědi!
-
Bridge na hostu a do něj připojit sitovku v guestu. Dostanete adresu z DHCP a máte přístup k internetu.
-
U bridge je ale problém se napojit host<->guest i když má každý svou adresu z DHCP. Pokud by tak chtěl provozovat třeba NFS mezi nimi. Jen pro info.
-
U bridge je ale problém se napojit host<->guest i když má každý svou adresu z DHCP. Pokud by tak chtěl provozovat třeba NFS mezi nimi. Jen pro info.
V čem? Sice tam neprovozuji NFS, ale to, co používám (WebDAV, DNS, SSH), tam funguje bez problémů. Úplně stejně jako u bridge mezi fyzickými síťovkami.
-
V čem?
Host Debian 9, Guest W10. V režimu bridge nefungovalo spojení Guest->Host. Při hledání řešení jsem narazil na větu, kterou jsem napsal. Jedu tak přes NAT a to funguje.
Výhodou v určitých situacích může být, že to funguje i když Host není připojen do žádné sítě.
-
V čem?
Host Debian 9, Guest W10. V režimu bridge nefungovalo spojení Guest->Host. Při hledání řešení jsem narazil na větu, kterou jsem napsal. Jedu tak přes NAT a to funguje.
Výhodou v určitých situacích může být, že to funguje i když Host není připojen do žádné sítě.
Taky moc nechápu proč by nemělo fungovat spojení Guest->Host při řežimu bridge. A jet by to mělo i když Host (česky: hostitel) není připojen do žádné sítě, říká se tomu Host-Only Networking - viz https://wiki.archlinux.org/index.php/QEMU#Host-only_networking
-
@původní tazatel: Kdy přesně se ti "znemožním prohlížení" na hostitelském počítači? Když zapneš VM nebo když zadáš nějaký příkaz?
Ten návod se mi zdá být v pořádku a to co popisuješ by se dít nemělo. Sice místo ručního vytváření TAP zařízení bych ti doporučil používat qemu-bridge-helper, který si sám vytvoří TAP zařízení a přiřadí ho do br0:
-netdev bridge,id=device-name0,br=br0,helper=/usr/lib/qemu/qemu-bridge-helper
ale myslím, že v tom tvůj problém nebude.
Pro qemu-bridge-helper je ještě potřeba přidat do souboru /etc/qemu/bridge.conf řádek:
allow br0
-
@původní tazatel: Kdy přesně se ti "znemožním prohlížení" na hostitelském počítači? Když zapneš VM nebo když zadáš nějaký příkaz?
Ten návod se mi zdá být v pořádku a to co popisuješ by se dít nemělo. Sice místo ručního vytváření TAP zařízení bych ti doporučil používat qemu-bridge-helper, který si sám vytvoří TAP zařízení a přiřadí ho do br0:
-netdev bridge,id=device-name0,br=br0,helper=/usr/lib/qemu/qemu-bridge-helper
ale myslím, že v tom tvůj problém nebude.
Pro qemu-bridge-helper je ještě potřeba přidat do souboru /etc/qemu/bridge.conf řádek:
allow br0
Nakonec vypadá, že mi to znemožní prohlížení kompletně. Vytvořil jsem ty zařízení, přidal je do bridge, a od toho okamžiku se jednoduše nedostanu na internet. V guestu se mi to očividně opakovaně pokouší připojit přes DHCP, ale nikdy se to nepodaří. Prozatím netuším, čím to je, případně co bych měl kde povolit. Přes VirtualBox nemám problém, ale tam je to řešené přes NAT. Rád bych to rozchodil přes Qemu, protože mi připadá, že nabízí více možností, byť se někdy z toho datlování do příkazového řádku můžu zbláznit.
-
Nakonec vypadá, že mi to znemožní prohlížení kompletně. Vytvořil jsem ty zařízení, přidal je do bridge, a od toho okamžiku se jednoduše nedostanu na internet.
Tak to vypadá, že do bridge nemáš dobře napojené fyzické zařízení, které si ti napojuje do internetu. Používáš v příkazu místo "eth0" skutečně správné zařízení?
Mušeš komunikovat Host<>Guest?
Nezkoušíš ten bridge náhodou na bezdrátovém zařízení? Bridge se totiž dá použít pouze na drátové.
-
... ještě v tom návodu nevidím:
sysctl net.ipv4.ip_forward=1
nebo pro permanentní povolení:
change net.ipv4.ip_forward = 0
to net.ipv4.ip_forward = 1
in /etc/sysctl.d/99-sysctl.conf
-
Nakonec vypadá, že mi to znemožní prohlížení kompletně. Vytvořil jsem ty zařízení, přidal je do bridge, a od toho okamžiku se jednoduše nedostanu na internet.
Tak to vypadá, že do bridge nemáš dobře napojené fyzické zařízení, které si ti napojuje do internetu. Používáš v příkazu místo "eth0" skutečně správné zařízení?
Mušeš komunikovat Host<>Guest?
Nezkoušíš ten bridge náhodou na bezdrátovém zařízení? Bridge se totiž dá použít pouze na drátové.
Správné zařízení používám, na výběr jich ostatně ani moc není. Mohl bych to napojit omylem tak leda na loopback.
Ping jsem bohužel nezkoušel, protože jsem se dočetl, že bez nějakého konkrétního povolení nemusí fungovat. Nevěděl bych, jestli jde o vlastnost TAP nebo o nefunkčnost bridge.
-
... ještě v tom návodu nevidím:
sysctl net.ipv4.ip_forward=1
nebo pro permanentní povolení:
change net.ipv4.ip_forward = 0
to net.ipv4.ip_forward = 1
in /etc/sysctl.d/99-sysctl.conf
Díky za Vaši radu, situace se změnila. Teď jsem schopný se připojit alespoň přes hosta. Vypadá, že ten net.ipv4.ip_forward mi alespoň částečně pomohl. Guest stále síť nemá, ale ještě uvidím, co se s tím dá dělat...
-
Pokud je to QEMU, v režimu bridge, a nefunguje DHCP v Guestovi, tak zkus toto:
sudo bash -c 'echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables'
Jestli ti ale původně vypadávalo připojení na Hostovi, tak bych řekl, že ten bridge je opravdu nastavený špatně.
-
Pokud je to QEMU, v režimu bridge, a nefunguje DHCP v Guestovi, tak zkus toto:
sudo bash -c 'echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables'
Jestli ti ale původně vypadávalo připojení na Hostovi, tak bych řekl, že ten bridge je opravdu nastavený špatně.
Bohužel, thuhle cestu na mém počítači nenajdu. Zkoušel jsem se podívat na /proc/sys/net/ipv4/conf/br0/ , ale tam jsem taky nic podobného nenašel.
-
Jinak ten bridge je po restartu nastavený znovu.
-
Jinak ten bridge je po restartu nastavený znovu.
Nevím přesně co tím chtěl básník říci :) , ale bridge by po restartu PC nastavený být neměl. Ty příkazy co jsou v tom příkladu nevytváří bridge permanentně. Takže si musíš vytvořit vlastní scripty a spustit je před spuštěním Qemu nebo bridge vytvořit přes NetworkManager a zaškrtnout "Automatické připojování" po startu OS.
Teď jsem schopný se připojit alespoň přes hosta. Vypadá, že ten net.ipv4.ip_forward mi alespoň částečně pomohl. Guest stále síť nemá, ale ještě uvidím, co se s tím dá dělat...
Guest by měl dostat IP adresu od DHCP stejně jako ji získal Host. Předpokládám, že od routeru. Takže jediné co mě napadá, že ti blokuje firewall na Guestovi příchozí spojení z DHCP.
-
Vím, že je to stará diskuze, ale něco jsem zrovna nastavoval a narazil jsem na stejný problém, protože jsem zapomněl na jednu drobnost a možná, že to byl i problém tazatele (případně dalších kdo narazí na tuto diskuzi).
Po provedení těch příkazů z toho odkazu v úvodním komentáři je nutné na hostiteli odpojit připojení eth0 a následně je nutné, aby si most br0 získal IP adresu z routeru (takže pokud používáte NetworkManager, tak u připojení br0 změníte ze "Zakázané" na "Automaticky DHCP"). Pak by se vám hostitel měl již sám připojit pomocí rozhraní br0.
Kdyby to chtěl někdo vizuálně, tak horní obrázek je špatně, spodní správně: https://unix.stackexchange.com/questions/191174/how-to-understand-virtual-switch-in-linux
-
Jedna rada k ladění: pokud máte zaplý bridge i guesta, měly by procházet broadcasty. Tj. třeba i ARPy. Měli byste aspoň něco vidět (dejme tomu v tcpdumpu), i když provoz negenerujete a jen nasloucháte.