iptables: Netz innerhalb eines internen Netzes

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
RaginRob
Beiträge: 27
Registriert: 22.02.2008 01:12:48

iptables: Netz innerhalb eines internen Netzes

Beitrag von RaginRob » 22.11.2011 20:34:17

Hallo zusammen,

ich habe glaube ich einen Denkfehler und hoffe, ihr könnt mir auf die Sprünge helfen. Die Situation ist folgende:
Bild

Ich habe einen Linuxrechner mit 2 NICs als Firewall, an eth1 hängt das Kabelmodem, an eth0 hängt ein Switch. Das interne Netzwerk an eth0 ist 192.168.0.0/24, eth0 an der Firewall hat die 192.168.0.250.

Auf dem Linuxrechner läuft dnsmasq als DHCP- und DNS-Server für die Clients. An dem Switch hängen 3 Clients mit IP's aus dem internen Netz (192.168.0.100, 192.168.0.101 und 192.168.0.102). Diese Clients kommen ins Internet und können problemlos Namen auflösen.

Neben den 3 Clients hängt an dem Switch noch eine Watchguard-Appliance. Diese hat als externe (WAN)-IP die 192.168.0.99 und stellt auf der LAN-Seite ein weiteres Netz zur Verfügung (192.168.10.0/24). Aus diesem Netz ist die Watchguard unter 192.168.10.250 zu erreichen. In diesem Netz befindet sich ein Client mit der IP 192.168.10.1, welche ebenfalls über DHCP von der Watchguard bezogen wird. Auf dem Client wird als Defaultgateway die 192.168.10.250 korrekt per DHCP bezogen, als Nameserver wird die 192.168.0.250 zugeteilt.

Von der 192.168.10.1 aus kann ich die 192.168.0.250 und die Clients (192.168.0.100 etc.) anpingen sowie Hosts im Internet über die IP-Adresse, allerdings nicht über den Hostnamen.

Ich vermute ja, dass noch eine passende Regel in den iptables fehlt, hier ist mein Script mit den momentanen Regeln:

Code: Alles auswählen

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F

iptables -A FORWARD -o eth1 -i eth0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

# Erlaubte Ports für die Clients
iptables -I FORWARD 1 -p tcp -m multiport --dports 21,22,80,443,5900 -j ACCEPT
iptables -I FORWARD 2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD 3 -j DROP

# VNC Client 1
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 60900 -j DNAT --to 192.168.0.100:5900
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 60900 -j ACCEPT

# VNC Client 2
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 60901 -j DNAT --to 192.168.0.101:5900
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 60901 -j ACCEPT
Ich steh gerade auf'm Schlauch - wo ist der Haken? Danke für eure Tipps!

Viele Grüße, Rob

Benutzeravatar
orcape
Beiträge: 1530
Registriert: 07.11.2008 18:37:24
Wohnort: 50°36'23.99"N / 12°10'20.66"E

Re: iptables: Netz innerhalb eines internen Netzes

Beitrag von orcape » 23.11.2011 18:50:53

Hi RaginRob,

das ganze nennt man Router Kaskade und da sollte man folgendes beachten.....
Auf dem Linuxrechner läuft dnsmasq als DHCP- und DNS-Server für die Clients.
....Dein Subnetz......
In diesem Netz befindet sich ein Client mit der IP 192.168.10.1, welche ebenfalls über DHCP von der Watchguard bezogen wird.
Der Linux-Gateway ist also nix weiter wie ein Router, der macht NAT, arbeitet als DHCP-Server und fungiert als DNS-Proxi für Dein LAN.
Gleichzeitig macht die Watchguard ebenfalls DHCP !
Das könnte Probleme machen. (doppelt vergebene IP´s etc.)
Also, auf einem der beiden statische IP´s, ich würde es auf dem Gateway machen.
NAT nur auf dem Gateway.
Die Clients müssen im LAN wie im Subnetz (192.168.10.0/24), Einträge für den Gateway (Linuxrechner) sowie für dns-nameservers in der /etc/network/interfaces bzw. im Netzwerkmanager enthalten. (bei Debian-Clients)
Ist letzteres( dns-nameservers) z.B. nicht eingetragen, funktioniert die Namensauflösung nicht. (Du erreichst das Internet nur per IP)
Dann meine ich, das die IP für die Router mit xxx.xxx.xxx.250 eigentlich für die Broadcast-Adresse reserviert ist.
Du solltest das also ändern.
Ich würde den Gateway auf IP 192.168.0.1, die Watchguard IP auf 192.168.10.1 setzen, da brauchst Du noch nicht mal die Clients ändern.

Gruß orcape

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: iptables: Netz innerhalb eines internen Netzes

Beitrag von Cae » 23.11.2011 19:09:21

Wenn dein Gateway am Kabelmodem der einzige DNS-Server im LAN ist, muss seine IP in /etc/resolv.conf der Clients hinter der "nameserver "-Direktive auftauchen. Des weiteren muss der Watchguard Port 53 UDP/TCP durchlassen und die Antworten. Da du pingen kannst, tut er dies vermutlich.

Was ergibt folgendes?

Code: Alles auswählen

$ dig example.org
$ dig @192.168.0.250 example.org
orcape hat geschrieben:Gleichzeitig macht die Watchguard ebenfalls DHCP !
Das könnte Probleme machen. (doppelt vergebene IP´s etc.)
Falls die Box wirklich auf beiden Interfaces den dhcpd lauschen hat. Ein Gerät, das mit einer Hälfte im Kreuzfeuer hängen soll, dürfte dies nicht der Fall sein. Es ist ein anderes Netz, die Box routet → keine DHCP-Anfragen vom Subnetz an die Linux-Box (ich Router, nix Broadcasts).
orcape hat geschrieben:Dann meine ich, das die IP für die Router mit xxx.xxx.xxx.250 eigentlich für die Broadcast-Adresse reserviert ist.
Das meinst du. Tatsächlich sind a.b.c.255/24, a.b.255.255/16 und a.255.255.255/8 die Broadcast-Addressen für Netze der Klasse C, B und A.

Gruß Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten