Ich möchte einfach, dass meine QEMU-VMs eine öffentliche IP haben, damit ich mehrere Server auf derselben Maschine ausführen kann. Ich habe viele Wikis, Anleitungen, Tutorials, Forenthreads und alles, was damit zu tun hat, gelesen, aber immer noch keine nützliche Antwort gefunden. Ich weiß bereits über die Bridges-Sache Bescheid und habe alles gemacht, was die meisten Tutorials tun.
1) Erstellen Sie die Brücke mit iproute2 (sagen wir br0
)
2) Erstellen Sie die TAP-Schnittstelle (sagen wir tap0
)
3) Bridge eth0
(in meinem Fall enp2s0
) und tap0
zubr0
Aber das einzige, was ich erreichen kann, ist (abgesehen von Kopfschmerzen), dafür zu sorgen, dass die VM als eine andere Maschine im internen Netzwerk erkannt wird. Ich möchte jedoch, dass das externe Netzwerk meine Maschine mit ihrer eigenen öffentlichen IP-Adresse sieht und nicht mit der gleichen wie die übrigen physischen Maschinen, die mit dem Router verbunden sind.
Seiten, die ich mir angesehen habe:
-https://wiki.archlinux.org/index.php/QEMU#Networking
-https://wiki.archlinux.org/index.php/Network_bridge
-KVM - Hinzufügen einer öffentlichen IP über die Bridge
-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
Meine QEMU-Befehlsargumente:
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 \
Andere Befehlsausgaben:
$ 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
Host-Systeminfo:
- Betriebssystem: Parabola GNU/Linux-libre (Arch-basiert)
- Architektur: x86_64
Habe ich etwas übersehen? Eine iptables-Regel? Einen Sysctl-Befehl? Vielen Dank im Voraus für die Hilfe.