ubuntuusers.de

zwei Subnetze verbinden

Status: Gelöst | Ubuntu-Version: Server 14.04 (Trusty Tahr)
Antworten |

bugblatterbeast

Avatar von bugblatterbeast

Anmeldungsdatum:
30. Januar 2008

Beiträge: 477

Hallo zusammen,

wir haben zwei Modem-Router (easybox). Einen für die Mitarbeiter und einen für Gäste. Die Netzwerke sollen durch unseren Server (Samba, DHCP, ...), der über verschiedene Interfaces mit den jeweiligen Netzen verbunden ist, aufeinander zugreifen können. Das letzte Mal habe ich eine derartige Aufgabe an der Uni erledigt und jetzt scheine ich irgendeine wichtige Sache vergessen zu haben und komme nicht drauf, was es ist.

Den ICS-DHCP habe ich erfolgreich für den Betrieb auf zwei Subnetzen mit verschiedenen Interfaces eingerichtet.

Netz1: 192.168.1.0 Subnetz-Maske 255.255.255.0 Gateway 192.168.1.250
Netz2: 192.168.2.0 Subnetz-Maske 255.255.255.0 Gateway 192.168.2.250

Die Gateways sind die jeweiligen Interfaces des Servers, der dann über einen der Hardware-Router auf das Internet zugreift. Die Clients übernehmen die Konfiguration und können auf's Internet zugreifen. Auf dem Server sind Routes zu den Netzwerken konfiguriert.

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.250 dev eth0
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.250 dev eth1

Der Router kann auf Clients aus beiden Netzwerken zugreifen. Nun habe ich ip-forwarding aktiviert und folgende iptables eingerichtet:

iptables -A FORWARD -i + -o eth1 -d 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i + -o eth0 -d 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT

Ich habe bei der Konfiguration der iptables viele Variationen ausprobiert. Trotzdem ist eine subnetzübergreifende Client-Client-Verbindung nicht möglich. Maskieren möchte ich natürlich nur die Verbindungen ins Internet und nicht zwischen den Subnetzen.

Hat jemand von Euch eine Idee, was ich vergessen oder falsch gemacht haben könnte?

Gruß, bbb

defc0n

Anmeldungsdatum:
21. Mai 2014

Beiträge: 30

Hallo bbb

Droppst Du INPUT und OUTPUT?

Sonst mach mal ein Logging rein, damit Du im Syslog etwas Sinnvolles siehst.

Z.B.

1
2
3
4
5
6
7
8
## oben bei den Filterpolicies (vor der ersten Regel)
iptables -N LOG_FORWARD_REJECT
## deine regeln
...
## am ende
iptables -A FORWARD -j LOG_FORWARD_REJECT
iptables -A LOG_FORWARD_REJECT -m limit --limit 30/s -j LOG --log-prefix "LOG_FORWARD_REJECT: " --log-level 4
iptables -A LOG_FORWARD_REJECT -j REJECT

Es steht Dir frei, weitere Logs einzurichten, z.B. ein INPUT oder OUTPUT reject usw.

Gruss, DC

P.S.: Ich gehe davon aus, dass dein Forwarding 'Test-Regeln' sind und du deine Gäste nicht aufs ganze Intranet loslässt...

chilidude

Avatar von chilidude

Anmeldungsdatum:
18. Februar 2010

Beiträge: 867

bugblatterbeast schrieb:

Hallo zusammen,

iptables -A FORWARD -i + -o eth1 -d 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i + -o eth0 -d 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT

Die iptables Regeln sind unsinnig. Du musst in jedem der beiden Subnetzwerke eine Routing-Regel einführen die beschreibt, über welchen Knoten (die Ip-Adresse des Servers) das jeweils andere Netz zu erreichen ist. Danach beschreibst du mit zwei/drei iptables-Regeln (auf dem Server), dass der Zugriff von einem Netzwerk nur auf das jeweilige andere gestattet ist (also mit: source-ip, dest-ip, accept, drop/reject. Geht sogar mit einer Zeile wenn du den Ausschlussoperator "!", also alles was nicht lokal ist, verwendest.)

ip route add 192.168.2.0/24 via <server.ip> # oder
ip route add 192.168.1.0/24 dev eth0

bugblatterbeast

(Themenstarter)
Avatar von bugblatterbeast

Anmeldungsdatum:
30. Januar 2008

Beiträge: 477

Hallo, danke für Eure Antworten. Ich konnte mich jetzt noch einmal dem Problem widmen.

@chilidude: Es tut mir Leid. Ich glaube, ich habe Deinen Beitrag irgendwie nicht richtig/vollständig verstanden...

@dc: Das mit dem loggen hat mir sehr geholfen... die Anfragen gingen durch, wurden aber nicht beantwortet. Die einfachste Lösung war jetzt die Verbindung zwischen den Subnetzen doch zu maskieren. Sicherheitsbedenken konnten in diesem Fall ignoriert werden. Die Gäste sind sowieso Kooperationspartner und dergleichen - keine Fremden.

Ich habe also meine iptables-Regeln wieder gelöscht und durch diese ersetzt:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Das entsprach zwar nicht meiner Ursprünglichen Idee, war aber die einfachste Lösung. Jetzt läuft's.

Gruß, bbb

Antworten |