Habe hier ein Problem mit firewalld und NAT. Beiträge zu Firewalls sollen zwar eigentlich im Forum Sicherheit einsortiert werden, aber ich orientiere mich mal an den existierenden Beiträgen.
Der Host soll als NAT-Router (mit DHCP-Service) zwischen zwei internen Netzen eingerichtet werden. Basis ist eine Default-Installation mit Ubuntu-22-LTS (Desktop) auf einem Desktop-PC mit insgesamt 7 Interfaces, davon 3 Paare als bond. Konfiguriert wurde per netplan und firewalld. Paketfilter ist nftables (= default). ufw ist deinstalliert, SELinux ist nicht installiert, der Service AppArmor ist disabled.
Problem: Ein "interner" Client-PC bekommt per DHCP eine Adresse, kann aber weder per DNS noch per ping auf Hosts am "external" Interface zugreifen. ping vom Client auf den NAT-Router ist erfolgreich. tcpdump zeigt am internen Interface:
1 2 3 4 | 12:44:39.883855 IP 192.168.201.10 > 10.1.239.239: ICMP echo request, id 1, seq 37950, length 40 12:44:39.883953 IP 192.168.201.254 > 192.168.201.10: ICMP host 10.1.239.239 unreachable - admin prohibited filter, length 68 12:44:40.694644 IP 192.168.201.254 > 192.168.201.10: ICMP host 10.1.239.14 unreachable - admin prohibited filter, length 73 12:44:40.694649 IP 192.168.201.254 > 192.168.201.10: ICMP host 10.1.239.13 unreachable - admin prohibited filter, length 73 |
(.13 und .14 sind DNS-Server, .239 ein externer Router, alle direct connected an bondup)
Schalte ich den Service firewalld ab, verschwinden diese Meldungen, aber natürlich funktioniert dann auch das NAT nicht und dementsprechend kommt kein reply.
Auf dem externen Interface zeigt tcpdump keinen Traffic zwischen NAT-Router und .239, außer, wenn man vom NAT-Router selbst aus pingt.
Es sieht also so aus, als würde der NAT-Router selber den Traffic des Clients ablehnen.
Routingtabelle:
1 2 3 4 5 6 7 8 | # ip r default via 10.1.239.239 dev bondup proto static 10.1.239.0/24 dev bondup proto kernel scope link src 10.1.239.248 10.3.193.0/24 via 172.29.171.254 dev eno1 proto static 10.3.199.0/24 dev vlan170 proto kernel scope link src 10.3.199.248 172.29.171.0/24 dev eno1 proto kernel scope link src 172.29.171.248 192.168.201.0/24 dev bond1 proto kernel scope link src 192.168.201.254 192.168.202.0/24 dev bond2 proto kernel scope link src 192.168.202.254 linkdown |
(bond2 ist konfiguriert, aber nicht verbunden)
firewalld-Konfiguration:
1 2 3 4 5 6 7 | # firewall-cmd --get-active-zones external interfaces: bondup internal interfaces: bond1 bond2 mgmt interfaces: vlan170 eno1 vlan170@bondup |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # firewall-cmd --zone=external --list-all external (active) target: default icmp-block-inversion: no interfaces: bondup sources: services: ssh ports: protocols: forward: yes masquerade: yes forward-ports: source-ports: icmp-blocks: rich rules: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # firewall-cmd --zone=internal --list-all internal (active) target: default icmp-block-inversion: no interfaces: bond1 bond2 sources: services: dhcpv6-client dns mdns samba-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # firewall-cmd --zone=mgmt --list-all mgmt (active) target: default icmp-block-inversion: no interfaces: eno1 vlan170 vlan170@bondup sources: services: ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" service name="ssh" accept |
Bitte melden, falls weitere Informationen benötigt werden. Das Setup entspricht m.E. den Anleitungen zu firewalld, die es zu Dutzenden im Web gibt. Im Moment fällt mir nichts mehr ein, an welcher Stelle ich noch suchen könnte.
Vorab Danke!
Gruß, Tobias.