Zuweisen einer Outlet-IP für eine Libvirt-VM mithilfe eines gerouteten Netzwerks

Zuweisen einer Outlet-IP für eine Libvirt-VM mithilfe eines gerouteten Netzwerks

Meine Host-Netzwerkschnittstelle hat zwei IPs. Derzeit betreibe ich meine VMs in einemweitergeleitetNetzwerk.

Die Netzwerkschnittstelle des Hosts ist Mitglied der publicZone in firewalld, wobei beidenach vorneUndMaskeradeermöglicht.

firewalldMit dem zuvor beschriebenen Setup kann die VM eine Verbindung zum Internet herstellen und ich kann der VM mit 's Portweiterleitungen hinzufügen --add-forward-port.

Nun möchte ich jedoch die IP-Adresse einer meiner VMs ändern (die IP-Adresse, diemaskiertzu) zu einer anderen IP, die in der Netzwerkschnittstelle meines Hosts verfügbar ist. Ich habe versucht, eine Regel zu meinem
hinzuzufügen, da dies nicht unterstützt wird. Der von mir verwendete Befehl war , dies führt dazu, dass die VM vom Internet getrennt wird, aber weiterhin eine Verbindung mit der in festgelegten Portweiterleitung herstellen kann .SNATnftablesfirewalldnft add rule nat POSTROUTING snat to ip saddr map { <VM's IP> : <public ip> }firewalld

Ich habe bei Google danach gesucht und nicht viele Informationen dazu gefunden.

Hier sind einige Konfigurationen.

Die standardmäßige öffentliche IP wird auf redigiert 10.0.0.1, und die sekundäre öffentliche IP wird auf redigiert 10.0.0.2.

Die NAT-IP der VM 1 wird auf redigiert 192.168.122.1, und die NAT-IP der VM 2 wird auf redigiert 192.168.122.2.

FirewallD

libvirt (active)                                                                                                                                                                                                                                                                                                                                         
  target: ACCEPT                                                                                                                                                                                                                                                                                                                                         
  icmp-block-inversion: no
  interfaces: virbr0
  sources: 
  services: custom--ms-wbt-server-ms-wbt-server dhcp dhcpv6 dns ssh tftp
  ports: 
  protocols: icmp ipv6-icmp
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
        rule priority="32767" reject

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp1s0f0
  sources: 
  services: cockpit dhcpv6-client libvirt libvirt-tls mdns ssh steam-streaming vnc-server
  ports: 
  protocols: 
  forward: yes
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
        rule family="ipv4" destination address="10.0.0.2" forward-port port="33412" protocol="tcp" to-port="3389" to-addr="192.168.122.2" # another public ip is the ip that i want to change to
        rule family="ipv4" destination address="10.0.0.1" forward-port port="33411" protocol="udp" to-port="3389" to-addr="192.168.122.1" # default public ip is the default outlet ip
        rule family="ipv4" destination address="10.0.0.1" forward-port port="33411" protocol="tcp" to-port="3389" to-addr="192.168.122.1"
        rule family="ipv4" destination address="10.0.0.2" forward-port port="33412" protocol="udp" to-port="3389" to-addr="192.168.122.2"

virsch

<network connections='2'>
  <name>default</name>
  <uuid>(network uuid)</uuid>
  <forward mode='route'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='<mac address>'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

ip addr

enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether <mac address> brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 brd <broadcast addr> scope global noprefixroute enp1s0f0
       valid_lft forever preferred_lft forever
    inet 10.0.0.2/25 brd <broadcast addr> scope global noprefixroute enp1s0f0
       valid_lft forever preferred_lft forever

ip route

default via <default public ip gateway> dev enp1s0f0 proto static metric 100 
<default public ip subnet> dev enp1s0f0 proto kernel scope link src 10.0.0.1 metric 100 
<secondary public ip subnet> dev enp1s0f0 proto kernel scope link src 10.0.0.2 metric 100 
<virsh network subnet> dev virbr0 proto kernel scope link src 192.168.122.1

Mein Server läuft Fedora 37mit firewalld 1.2.2und nftables 1.0.4.

verwandte Informationen