Simplemente quiero que mis máquinas virtuales QEMU tengan una IP pública para poder ejecutar varios servidores en la misma máquina. He leído muchos wikis, guías, tutoriales, hilos de foros y todo lo relacionado con esto, pero todavía no tengo una respuesta útil. Ya sé lo de los puentes e hice todo lo que hacen la mayoría de los tutoriales.
1) Crear el puente con iproute2 (digamos br0
)
2) Crear la interfaz TAP (digamos tap0
)
3) Puente eth0
(en mi caso enp2s0
) y tap0
parabr0
Pero lo único que me queda es (aparte de un dolor de cabeza) hacer que la VM sea reconocida como otra máquina en la red interna, pero lo que quiero es que la red externa vea mi máquina con su propia dirección IP pública, no la misma. como el resto de máquinas físicas conectadas al router.
Páginas que he investigado:
-https://wiki.archlinux.org/index.php/QEMU#Networking
-https://wiki.archlinux.org/index.php/Network_bridge
-KVM: agregar IP pública a través del puente
-http://blog.elastocloud.org/2015/07/qemukvm-bridged-network-with-tap.html
-https://wiki.qemu.org/Documentation/Networking
-http://nairobi-embedded.org/a_qemu_tap_networking_setup.html
-https://en.wikibooks.org/wiki/QEMU/Networking
Mi cmd de QEMU argumenta:
qemu-system-x86_64 \
-monitor stdio \
-soundhw ac97 \
-k es \
-machine accel=kvm \
-m 2024 \
-hda /mnt/hdd/Desarrollo_Eficiente_HDA.img \
-boot once=c,menu=on \
-net nic,vlan=0,macaddr=00:c6:cd:1a:5e:83,model=virtio \
-net tap,vlan=0,ifname=tap0,script=no \
-rtc base=localtime \
Otras salidas de comando:
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.003067a647ca no enp2s0
tap0
$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:30:67:a6:47:ca brd ff:ff:ff:ff:ff:ff
inet6 fe80::da85:a46d:3e50:2642/64 scope link
valid_lft forever preferred_lft forever
9: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:30:67:a6:47:ca brd ff:ff:ff:ff:ff:ff
inet 192.168.0.3/24 brd 192.168.0.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever
inet 192.168.50.14/24 brd 192.168.50.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever
inet6 fe80::230:67ff:fea6:47ca/64 scope link noprefixroute
valid_lft forever preferred_lft forever
10: tap0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 100
link/ether 16:51:80:cd:dd:6b brd ff:ff:ff:ff:ff:ff
inet6 fe80::1451:80ff:fecd:dd6b/64 scope link
valid_lft forever preferred_lft forever
Información del sistema host:
- SO: Parabola GNU/Linux-libre (basado en Arch)
- Arquitectura: x86_64
¿Me he perdido algo? ¿una regla de iptables? ¿un comando syctl? Gracias de antemano por la ayuda.