
Meine Host-Netzwerkschnittstelle hat zwei IPs. Derzeit betreibe ich meine VMs in einemweitergeleitetNetzwerk.
Die Netzwerkschnittstelle des Hosts ist Mitglied der public
Zone in firewalld
, wobei beidenach vorneUndMaskeradeermöglicht.
firewalld
Mit 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 .SNAT
nftables
firewalld
nft 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 37
mit firewalld 1.2.2
und nftables 1.0.4
.