Configure o qemu-system para usar a ponte virtual do lado do host

2

Vou executar a seguinte configuração com o qemu-system como hypervisor:

Hostsetup:

Hypervisor machine (Ubuntu 16.04)           Second Machine 
qemuVm--tap0--br123--eth0--|Hardware hub|--eth42--SecondPC
Portanto, esta é uma rede que contém uma máquina virtual hospedada pelo qemu-system e é conectada por uma interface de toque a uma ponte virtual. A ponte virtual é criada pelo host. A ponte virtual NÃO é a ponte padrão do libvirt / virt-manager ou de outros sistemas. A bridge virtual tem uma placa de rede eth0 real. Esta placa de rede é conectada por fio com um hub real. Conectado ao hub é um outro pc Real. Todos os clientes usam endereços IP estáticos. Eu gostaria de usar todos os serviços como ICMP, UDP, TCP, FTP etc. entre todas as máquinas conectadas

Lista de IPs:

  • win7qemuVm: 10.0.0.10
  • br123: 10.0.0.100 (eu não quero usar a ponte padrão do qemu)
  • tap0: ? É possível / necessário atribuir um endereço IP?
  • eth0: ? necessário para atribuir um endereço IP?
  • eth42 10.0.0.201 (interface do segundo pc)

Eu gostaria de trabalhar com -netdev / -device não com o antigo -net nic .

Quais parâmetros de linha de comando eu preciso para o meu win7qemuVm conectá-lo ao dispositivo de toque?

Existem rotas IP, ipforwarding e iptables. Preciso alterar as configurações padrão do Ubuntu para tornar possível essa rede?

Minha rede host já está configurada assim:

iface tap11 inet manual
    pre-up tunctl -t tap0
    up ifconfig tap0 up
    down ifconfig tap0 down

auto br123
iface br123 inet static
   address 10.0.0.100
   netmask 255.255.255.0
   bridge_ports eth0
   bridge_ports tap0
   bridge_stp off
   bridge_fd 0.0
   pre-up ifdown eth0
   pre-up ifdown tap0
   pre-up ifup eth0
   pre-up ifup tap0
   post-down ifdown eth0
   post-down ifdown tap0

O gerenciador de rede está desativado.

    
por Cutton Eye 08.01.2018 / 12:05

1 resposta

1

A configuração superior está correta para resolver o problema. O primeiro sucesso é quando sua noiva / batida, etc, permanece em pé. Então, isso diz que é usado, o sistema está funcionando. deve ficar assim:

$ ip link show
# Output modified and formatted:
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
   master br123 state UP 
   mode DEFAULT group default qlen 1000
   link/ether 68:05:ca:51:8e:ff brd ff:ff:ff:ff:ff:ff
5: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast 
   master br123 state UP
   mode DEFAULT group default qlen 1000
   link/ether ce:c4:55:91:86:6f brd ff:ff:ff:ff:ff:ff
6: br123: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
   state UP mode DEFAULT group default qlen 1000
   link/ether 68:05:ca:51:8e:ff brd ff:ff:ff:ff:ff:ff

Você pode ver a linha, onde mestre e estado são mencionados, esses são os mais importantes.

O próximo desafio é encontrar um dispositivo de rede que suporte essa coisa de toque. Eu usei o virtio network device e baixei o virtio driver para o meu XP. Eu não testei ainda outro sistema operacional e apenas algumas placas de rede virtual, então pode haver a possibilidade de que outras também funcionem. Mas o importante é que nem todos os drivers de dispositivos virtuais estão funcionando com dispositivos de toque. POR ISSO, por exemplo, a placa de rede no Windows pode estar ativa e funcionando, mas você não pode entrar nem sair de nenhum ping. Se o seu firewall estiver desativado e tudo estiver configurado corretamente, talvez você tenha adicionado um adaptador, no qual não há suporte para um dispositivo de toque.

A conexão de rede é um par 1: 1, portanto, você usa duas etapas para isso. A configuração do lado do host começa com -netdev , onde você define um adaptador de rede conectado ao host (aqui). tap0 é parte disso. Importante é definir o ID .

Este ID é usado na configuração do lado do cliente onde a interface para o convidado é definida. %código%. -device é o adaptador de rede usado neste exemplo.

exec qemu-system-x86_64 \
-enable-kvm \
-hda W_XP.img \
-m 1G \
-monitor stdio \
-cdrom /media/img/SharedImages/driver/W_XP/virtio-win-0.1.126.iso \
-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=mynet0,id=mynet0,mac=52:54:00:c9:18:27 \
$@

Fonte para comandos

Controlling State of bridge durante ou após a execução da máquina

$ dmesg
[time in sec ]
[13649.332345] br123: port 2(tap0) entered blocking state
[13649.332346] br123: port 2(tap0) entered forwarding state
  machine running
[13674.309067] br132: port 2(tap0) entered disabled state
  machine stopped

Eu verifiquei a configuração com os seguintes adaptadores com o winXP SP3, todos trabalhando com o dispositivo de toque:

Apenas para alguns você precisa instalar um driver externo.

rtl8139 Realtak RTL8139-Familie-PCI-Fast Ethernet-NIC   
   5.398.613.2003 RTL8139.sys   100 
ne2k_pci    Realtek RTL8029(AS)-basierender Ethernetadapter (Standard)
   5.508.803.2000 RTL8029.sys   10
e1000-82545em   Intel(R) PRO/1000 MT Network Connectiion
   Intel 8.10.3.0 e1000325.sys uvm. 1000
e1000   Intel(R) PRO/1000 MT Network Connectiion
   Intel 8.10.3.0 e1000325.sys uvm. 1000
virtio-net-pci  Red Hat VirtIO Ethnernet Adapter    
   51.73.104.12600 netkvm.sys 1000
    
por 08.01.2018 / 19:17