Ich verwende Debian 7 und versuche, Anfragen über Firewalld an andere Maschinen weiterzuleiten. Dabei verwende ich das folgende Setup:
--HOSTNAME-- ----IP----- ------------Configuration-------------
Firewall 192.168.0.2 (Debian 7, firewalld, static ip)
DHCP 192.168.0.3 (Debian 7, isc-dhcp-server, static ip)
DNS (Master) 192.168.0.4 (Debian 7, bind9m, static ip)
DNS (Slave) 192.168.0.5 (Debian 7, bind9, static ip)
Meine Firewall-Regeln für DNS (Master und Slave)
<zone>
<short>Public</short>
<port protocol="udp" port="53"/>
<port protocol="tcp" port="53"/>
</zone>
Meine Firewalld-Regeln für die Firewall
<zone>
<short>Public</short>
<forward-port to-addr="192.168.0.4" to-port="53" protocol="tcp" port="53"/>
<forward-port to-addr="192.168.0.4" to-port="53" protocol="udp" port="53"/>
</zone>
Wenn ich versuche,
$ ping hostname.mylocaldomain.com
Von allen Rechnern aus läuft es erfolgreich, da ich in resolv.conf alles so eingerichtet habe, dass mein DNS-Server verwendet wird. Das Problem ist, dass ich den gesamten Datenverkehr durch die Firewall leiten möchte. Ohne auf das Gesamtziel einzugehen, beschreibe ich das vorliegende Problem:
Nehmen wir an, ich ändere /etc/resolv.conf in DHCP so, dass es auf die Firewall verweist, damit diese die Anfrage an die entsprechende Stelle weiterleiten kann:
search mylocaldomain.com
nameserver 192.168.0.4
nameserver 8.8.8.8
nameserver 8.8.4.4
Der Ping schlägt fehl, also habe ich TCP Dump verwendet und bekomme folgendes
# tcpdump port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
18:06:01.377752 IP PingFromMe.mylocaldomain.com.47588 > firewall.mylocaldomain.com.domain: 4279+ A? ns2.mylocaldomain.com. (34)
18:06:01.469696 IP PingFromMe.mylocaldomain.com.37619 > firewall.mylocaldomain.com.domain: 36025+ A? ns2.mylocaldomain.com.mylocaldomain.com. (47)
18:06:01.638045 IP firewall.mylocaldomain.com.42684 > ns1.mylocaldomain.com.domain: 41778+ PTR? 6.0.168.192.in-addr.arpa. (42)
18:06:01.639278 IP ns1.mylocaldomain.com.domain > firewall.mylocaldomain.com.42684: 41778* 1/2/0 PTR firewall.mylocaldomain.com. (113)
18:06:01.639486 IP firewall.mylocaldomain.com.36812 > ns1.mylocaldomain.com.domain: 54761+ PTR? 3.0.168.192.in-addr.arpa. (42)
18:06:01.639881 IP ns1.mylocaldomain.com.domain > firewall.mylocaldomain.com.36812: 54761* 1/2/0 PTR PingFromMe.mylocaldomain.com. (107)
18:06:02.641371 IP firewall.mylocaldomain.com.39348 > ns1.mylocaldomain.com.domain: 6957+ PTR? 4.0.168.192.in-addr.arpa. (42)
18:06:02.642031 IP ns1.mylocaldomain.com.domain > firewall.mylocaldomain.com.39348: 6957* 1/2/0 PTR ns1.mylocaldomain.com. (106)
Ich bin nicht sicher, ob ich das richtig sehe, aber es SCHEINT mir, dass alles funktioniert, der Rückverkehr wird nur nicht zurück zu PingFromMe.mylocaldomain.com geleitet.
Meine Frage ist dreifach.
- Ist das, was meiner Meinung nach hier passiert, der Grund, warum ich keine Hostnamenauflösung bekomme?
- Ist Firewall nicht für ein solches Routing konfiguriert?
- Und natürlich: Wie behebe ich das?
*Hinweis: Die IPsSOLLENmuss mit der Setup-Liste identisch sein. Wenn Sie sich also meine TCP-Erfassung ansehen, beziehen Sie sich der Kürze halber bitte auf die Maschinen mit dem Hostnamen.