Fedora – dnsmasq für vmbr0: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 46: Zeile 46:
  
 
== firewalld ==
 
== firewalld ==
;Zone der Bridge über NetworkManager setzen
+
# Interfaces den richtigen Zonen zuweisen
*nmcli connection modify vmbr0 connection.zone internal
+
sudo nmcli connection modify vmbr0 connection.zone internal
*nmcli connection down vmbr0
+
sudo nmcli connection modify enp2s0f1 connection.zone external
*nmcli connection up vmbr0
+
sudo nmcli connection modify wlxb0dcef324aa1 connection.zone external
  
;DHCP und DNS im internen Netz erlauben
+
# Interfaces neu starten
*firewall-cmd --permanent --zone=internal --add-service=dhcp
+
sudo nmcli connection down vmbr0; sudo nmcli connection up vmbr0
*firewall-cmd --permanent --zone=internal --add-service=dns
+
sudo nmcli connection down enp2s0f1; sudo nmcli connection up enp2s0f1
 +
sudo nmcli connection down wlxb0dcef324aa1; sudo nmcli connection up wlxb0dcef324aa1
  
;Masquerading auf der Uplink-Zone aktivieren (Standard: FedoraWorkstation)
+
# Firewall-Regeln (einmalig)
*firewall-cmd --permanent --zone=FedoraWorkstation --add-masquerade
+
sudo firewall-cmd --permanent --zone=internal --add-forward
 +
sudo firewall-cmd --permanent --zone=external --add-masquerade
 +
sudo firewall-cmd --permanent --zone=internal --add-service={dhcp,dns,ssh}
 +
sudo firewall-cmd --permanent --zone=external --add-service={ssh}
  
;Regeln laden
+
# Regeln laden
*firewall-cmd --reload
+
sudo firewall-cmd --reload
  
;Kontrolle
+
# Prüfen
*firewall-cmd --get-active-zones
+
sudo firewall-cmd --get-active-zones
 +
sudo firewall-cmd --zone=internal --list-all
 +
sudo firewall-cmd --zone=external
  
 
== dnsmasq ==
 
== dnsmasq ==

Version vom 19. Februar 2026, 20:21 Uhr

Fedora – Interne Bridge vmbr0 mit generischem NAT (firewalld)

Ziel

  • Bridge vmbr0 mit 192.168.16.1/24
  • Internes Netz 192.168.16.0/24
  • Permanenter Carrier über dummy0
  • DHCP/DNS über dnsmasq
  • NAT unabhängig vom verwendeten Uplink (LAN, WLAN, etc.)
  • NAT über firewalld (kein iptables, kein rc.local)

Bugfix für noarp

  • vi /etc/NetworkManager/dispatcher.d/pre-up.d/dummy.sh
#!/bin/bash
if test "$1" = "dummy0"
then
 ip link set dummy0 arp on
fi
  • chmod +x /etc/NetworkManager/dispatcher.d/pre-up.d/dummy.sh

Bridge und Dummy Device

Modul laden und persistent machen
  • modprobe dummy
  • echo "dummy" > /etc/modules-load.d/dummy.conf
Netzwerkbrücke erstellen
  • nmcli con add type bridge autoconnect yes con-name vmbr0 ifname vmbr0
  • nmcli con modify vmbr0 ipv4.addresses 192.168.16.1/24
  • nmcli con modify vmbr0 ipv4.method manual
  • nmcli con modify vmbr0 ipv6.method ignore
  • nmcli con up vmbr0
Dummy-Device zur Brücke hinzufügen
  • nmcli con add type dummy con-name dummy0 ifname dummy0 master vmbr0
  • nmcli con modify dummy0 ipv4.method disabled
  • nmcli con modify dummy0 ipv6.method ignore
  • nmcli con modify dummy0 connection.autoconnect yes
  • nmcli con up dummy0

Forwarding

IP-Forwarding aktivieren
  • echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-ipforward.conf
  • sysctl --system


firewalld

  1. Interfaces den richtigen Zonen zuweisen

sudo nmcli connection modify vmbr0 connection.zone internal sudo nmcli connection modify enp2s0f1 connection.zone external sudo nmcli connection modify wlxb0dcef324aa1 connection.zone external

  1. Interfaces neu starten

sudo nmcli connection down vmbr0; sudo nmcli connection up vmbr0 sudo nmcli connection down enp2s0f1; sudo nmcli connection up enp2s0f1 sudo nmcli connection down wlxb0dcef324aa1; sudo nmcli connection up wlxb0dcef324aa1

  1. Firewall-Regeln (einmalig)

sudo firewall-cmd --permanent --zone=internal --add-forward sudo firewall-cmd --permanent --zone=external --add-masquerade sudo firewall-cmd --permanent --zone=internal --add-service={dhcp,dns,ssh} sudo firewall-cmd --permanent --zone=external --add-service={ssh}

  1. Regeln laden

sudo firewall-cmd --reload

  1. Prüfen

sudo firewall-cmd --get-active-zones sudo firewall-cmd --zone=internal --list-all sudo firewall-cmd --zone=external

dnsmasq

Installation
  • dnf install dnsmasq -y
Konfiguration
  • vi /etc/dnsmasq.d/vmbr0.conf
interface=vmbr0
bind-interfaces

domain=lab.local
expand-hosts

dhcp-range=192.168.16.100,192.168.16.200,12h
dhcp-option=option:router,192.168.16.1
dhcp-option=option:dns-server,192.168.16.1

listen-address=192.168.16.1
Dienst aktivieren
  • systemctl enable --now dnsmasq

Kontrolle

  • ip addr show vmbr0
  • ip addr show dummy0
  • firewall-cmd --list-all --zone=internal
  • reboot