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

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Fedora – dnsmasq für vmbr0 (192.168.16.0/24) = == Ziel == * DHCP und DNS für das interne Netz 192.168.16.0/24 * Gateway: 192.168.16.1 (vmbr0) == Instal…“)
 
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Fedora – dnsmasq für vmbr0 (192.168.16.0/24) =
+
= Fedora – Interne Bridge vmbr0 mit generischem NAT (firewalld) =
  
 
== Ziel ==
 
== Ziel ==
* DHCP und DNS für das interne Netz 192.168.16.0/24
+
* Bridge vmbr0 mit 192.168.16.1/24
* Gateway: 192.168.16.1 (vmbr0)
+
* 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)
  
== Installation ==
+
== Bugfix für noarp ==
 +
*vi /etc/NetworkManager/dispatcher.d/pre-up.d/dummy.sh
 +
<pre>
 +
#!/bin/bash
 +
if test "$1" = "dummy0"
 +
then
 +
ip link set dummy0 arp on
 +
fi
 +
</pre>
 +
*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 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 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
 +
 
 +
== FIREWALL-KONFIGURATION ==
 +
;Funktioniert mit JEDEM WLAN und LAN ohne weitere Änderungen
 +
 
 +
;Bridge dauerhaft internal
 +
*nmcli connection modify vmbr0 connection.zone internal
 +
 
 +
;WLAN dauerhaft external
 +
*firewall-cmd --permanent --zone=external --add-interface=wlp0s20f3
 +
 
 +
;Optional: weiteres LAN-Interface external
 +
*firewall-cmd --permanent --zone=external --add-interface=enp2s0f1
 +
 
 +
;Masquerading auf dem WAN (external)
 +
*firewall-cmd --permanent --zone=external --add-masquerade
 +
 
 +
;Inter-Zone-Policy: internal → external erlauben
 +
*firewall-cmd --permanent --new-policy int2ext
 +
*firewall-cmd --permanent --policy int2ext --add-ingress-zone internal
 +
*firewall-cmd --permanent --policy int2ext --add-egress-zone external
 +
*firewall-cmd --permanent --policy int2ext --set-target ACCEPT
 +
 
 +
;Regeln laden
 +
*firewall-cmd --reload
 +
 
 +
;FERTIG
 +
 
 +
== dnsmasq ==
 +
;Installation
 
*dnf install dnsmasq -y
 
*dnf install dnsmasq -y
  
== Konfiguration ==
+
;Konfiguration
*rm -f /etc/dnsmasq.d/*
 
 
 
;Neue Datei erstellen
 
 
*vi /etc/dnsmasq.d/vmbr0.conf
 
*vi /etc/dnsmasq.d/vmbr0.conf
 
 
<pre>
 
<pre>
 
interface=vmbr0
 
interface=vmbr0
Zeile 28: Zeile 86:
 
</pre>
 
</pre>
  
== Dienst aktivieren ==
+
;Dienst aktivieren
 
*systemctl enable --now dnsmasq
 
*systemctl enable --now dnsmasq
 
== Firewall anpassen ==
 
*firewall-cmd --permanent --zone=internal --add-service=dns
 
*firewall-cmd --permanent --zone=internal --add-service=dhcp
 
*firewall-cmd --reload
 
  
 
== Kontrolle ==
 
== Kontrolle ==
*ss -tulpn | grep dnsmasq
+
*ip addr show vmbr0
*journalctl -u dnsmasq
+
*ip addr show dummy0
 
+
*firewall-cmd --list-all --zone=internal
== Ergebnis ==
+
*reboot
*Clients im Netz 192.168.16.0/24 erhalten IP per DHCP
 
*Gateway und DNS ist 192.168.16.1
 
*Namensauflösung über dnsmasq
 

Aktuelle Version vom 19. Februar 2026, 21:03 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 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 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

FIREWALL-KONFIGURATION

Funktioniert mit JEDEM WLAN und LAN ohne weitere Änderungen
Bridge dauerhaft internal
  • nmcli connection modify vmbr0 connection.zone internal
WLAN dauerhaft external
  • firewall-cmd --permanent --zone=external --add-interface=wlp0s20f3
Optional
weiteres LAN-Interface external
  • firewall-cmd --permanent --zone=external --add-interface=enp2s0f1
Masquerading auf dem WAN (external)
  • firewall-cmd --permanent --zone=external --add-masquerade
Inter-Zone-Policy
internal → external erlauben
  • firewall-cmd --permanent --new-policy int2ext
  • firewall-cmd --permanent --policy int2ext --add-ingress-zone internal
  • firewall-cmd --permanent --policy int2ext --add-egress-zone external
  • firewall-cmd --permanent --policy int2ext --set-target ACCEPT
Regeln laden
  • firewall-cmd --reload
FERTIG

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