# iptables - masquerading - bridge - funktioniert nicht

## ConiKost

Moin!

Ich komme hier langsam ans Verzweifeln...

Ich will hier auf einem kleinen Thin Client nen Gentoo Router bauen.

Drin gibt es eth0, ath0. Aus den beiden habe ich eine bridge br0 erstellt.

Mittels ppp0 stelle ich eine Verbindung her. Auf dem Thin Client selbst ist das Internet verfügbar durch ppp0 und es läuft.

Damit es ja nun im Netzwerk von anderen PCs genutzt werden kann, ist via iptables ein Masquerading doch nötig?

Leider will das nicht funktonieren.

 *Quote:*   

> iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE

 

Der Befehl wird zwar angenommen, aber es können trotzdem keine Clients zugreifen. Die melden nur Stupide "Zielhost nicht gefunden"

ABER: Wenn ich die Bridge auflöse, nur eth0 nutze, dann klappt das Masquerading auf eth0 dagegen einwandfrei.

Wo liegt also das Problem? Ist Masquerading mit einer Bridge nicht machbar?

Meine Aktuelle Netzwerkconfig:

 *Quote:*   

> # Netzwerkkonfiguration
> 
> # Realtek RTL8139D
> 
> config_eth0=( "null" )
> ...

 

----------

## ChrisJumper

Servus ConiKost,

 *Quote:*   

> Ich will hier auf einem kleinen Thin Client nen Gentoo Router bauen.

 

ist dein Thin-Client noch ein Klassischer Thin-Client?! Weil ihn als Router zu benutzen.. macht keinen Sinn!

 (Nicht das bei mir immer alles sinn manchen muss)

Hast du zufällig die Hardware über und magst daraus einfach einen Router basteln? Dann setzt man den aber nicht mit Bridge auf.. sondern ganz normal. Mit IP-Tables und Mascarding, DHCP und DNS.. 

Eine Bridge vereint zwei Netzwerk-Devices.. aber nicht wie beim Mascarding.. halt eher so wie ein Switch. Sie schaut nach und reicht sie weiter ohne die IP-Adresse zu verkleiden.

Und das willst du nicht.. es sei denn dein "Thin-Client" baut "eine Brücke" auf, zu einem anderen Netzwerk von dir über z.B. die Telefonleitung :)

 *Quote:*   

> Auf dem Thin Client selbst ist das Internet verfügbar durch ppp0 und es läuft.
> 
> Damit es ja nun im Netzwerk von anderen PCs genutzt werden kann, ist via iptables ein Masquerading doch nötig?

 

Genau! Ich würde aber auch noch einen dnsmasq installieren damit die Namensauflösung auch weitergereicht wird.

Howto_setup_a_home_server

Viel Erfolg

----------

## ConiKost

Hallo ChrisJumper,

oke vielleicht war das ein falscher Begriff  :Very Happy: 

Es handelt sich um ein klenen MiniPC mit Geode LX, LAN-Port und solche Späße.

Darauf laufen bereits DNS (BIND), DHCP (DHCPD) und andere benötige Dienste.

Das ganze wollte ich nun komplett ausbauen, in dem das Ding auch das Routing übernimmt.

Die Bridge ist wgen dem WLAN! Ich will, dass das Ding nen WLAN-AP mit an Board hat.

Also im Prinzip alles was du beschreibst?

Oder habe ich dich missverstanden?

Aktuell: MiniPC -> br0 -> Switch -> DSL Modem (Leider hat die Kiste nur ein LAN Port)

Das ath0 ist die WLAN Karte, welche ich mit einer Bridge mit eth0 vereinen will wegen WLAN-AP.

Am Switch hängen meine weiteren PCs, welche dann ins Internet über den MiniPC sollen.

Darum wäre br0 somit meine Schnittstelle ins Netzwerk gleichzeitig.

Mit dem iptables habe ich bereits einige Regeln aufgestellt, es fehlt mir nur Schlussendlich das Masquarding.

Ebenso via sysctl das Port Forwarding. Eben wie in den Howtos so beschrieben.

----------

## apraxas

 *ConiKost wrote:*   

> Moin!
> 
> ...
> 
> ```
> ...

 

Sollte das nicht:

```

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

```

heißen?

und ip_forward nicht vergessen.

----------

## ConiKost

 *apraxas wrote:*   

> 
> 
> Sollte das nicht:
> 
> ```
> ...

 

Hab ebenfalls dieses nun probiert. Klappt ebenso wenig  :Sad: 

ip_forward ist bereits auf "1" ...

----------

## bbgermany

Hi,

1. bridge firewalling wird ebtables gemacht.

2. bist du dir sicher, dass du eine Bridge verwendest? Kannst du mal bitte die Ausgabe von ifconfig und brctl show posten?

MfG. Stefan

----------

## schmutzfinger

Lass das "-o" einfach ganz weg. So auf die Art:

```

iptables -I INPUT -s 192.168.0.0/24  -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

```

Ich vermute das es damit geht. Dannach solltest du doch mal das Handbuch in die Hand nehmen.

"-o br0" ist auf jeden Fall falsch ppp0 müsste schon richtig sein.

Hast du deinen Router auch als Gateway in an den angeschlossenen Rechnern eingetragen?

----------

## ConiKost

 *bbgermany wrote:*   

> Hi,
> 
> 1. bridge firewalling wird ebtables gemacht.
> 
> 2. bist du dir sicher, dass du eine Bridge verwendest? Kannst du mal bitte die Ausgabe von ifconfig und brctl show posten?
> ...

 

Hallo Stefan.

Ich bin mir sicher, dass das eine Bridge ist.

Hier die Ausgaben:

ifconfig

```
ath0      Protokoll:Ethernet  Hardware Adresse xx:xx:xx:xx:xx:xx

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:2290  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:15687 errors:0 dropped:5 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:0

          RX bytes:0 (0.0 B)  TX bytes:1706233 (1.6 MiB)

br0       Protokoll:Ethernet  Hardware Adresse xx:xx:xx:xx:xx:xx

          inet Adresse:192.168.0.254  Bcast:192.168.0.255  Maske:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:93601 errors:0 dropped:0 overruns:0 frame:0

          TX packets:63302 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:0

          RX bytes:93309835 (88.9 MiB)  TX bytes:5334363 (5.0 MiB)

eth0      Protokoll:Ethernet  Hardware Adresse xx:xx:xx:xx:xx:xx

          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1

          RX packets:93849 errors:0 dropped:0 overruns:0 frame:0

          TX packets:63300 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:1000

          RX bytes:94660221 (90.2 MiB)  TX bytes:5377999 (5.1 MiB)

          Interrupt:10 Basisadresse:0xe000

lo        Protokoll:Lokale Schleife

          inet Adresse:127.0.0.1  Maske:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:303 errors:0 dropped:0 overruns:0 frame:0

          TX packets:303 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:0

          RX bytes:28864 (28.1 KiB)  TX bytes:28864 (28.1 KiB)

ppp0      Protokoll:Punkt-zu-Punkt Verbindung

          inet Adresse:xx.xxx.xxx.xxx  P-z-P:81.14.248.191  Maske:255.255.255.255

          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:1492  Metric:1

          RX packets:67290 errors:0 dropped:0 overruns:0 frame:0

          TX packets:51615 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:3

          RX bytes:90451502 (86.2 MiB)  TX bytes:2795273 (2.6 MiB)

wifi0     Protokoll:UNSPEC  Hardware Adresse 00-C0-CA-19-F0-A2-00-00-00-00-00-00-00-00-00-00

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:533 errors:0 dropped:0 overruns:0 frame:1528540

          TX packets:15815 errors:49 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:199

          RX bytes:42390 (41.3 KiB)  TX bytes:2318474 (2.2 MiB)

          Interrupt:5

```

route

```

Kernel IP Routentabelle

Ziel            Router          Genmask         Flags Metric Ref    Use Iface

81.14.248.190   *               255.255.255.255 UH    0      0        0 ppp0

192.168.0.0     *               255.255.255.0   U     0      0        0 br0

loopback        Bl4ckB0x.Kostec 255.0.0.0       UG    0      0        0 lo

default         81.14.248.190   0.0.0.0         UG    4006   0        0 ppp0

```

brctl show

```

bridge name     bridge id               STP enabled     interfaces

br0             8000.0050f6263e80       no              ath0

                                                        eth0

```

 *schmutzfinger wrote:*   

> Lass das "-o" einfach ganz weg. So auf die Art:
> 
> ```
> 
> iptables -I INPUT -s 192.168.0.0/24  -j ACCEPT
> ...

 

Hallo Schmutzfinger,

also die Befehle da leider erlauben weiterhin keinen Zugriff seitens der Clients. Da aber Stefan schreibt, man braucht ebtables kann es wohl dann damit auch nicht gehen. Aber wie soll ich dann mit ebtables routen? Den das maskiert ja nicht, soweit ich weis?

Ja, der DHCP arbeitet korrekt und die Clients haben den Server als Gateway in der Liste. Er ist auch anpingbar und via SSH erreichbar.Last edited by ConiKost on Sun Jul 06, 2008 11:11 am; edited 1 time in total

----------

## schmutzfinger

Nein ebtables brauchst du wenn du nicht alles über die Bridge drüber lassen willst. In deinem Fall nutzt du die aber nur um WLAN und LAN auf ethernet-Level zu verbinden. Ich unterstelle mal das du zwischen LAN und WLAN nix filtern willst. Und wenn du das doch willst dann solltest du dir überlegen das auf IP--Ebene zu machen, also mit nem anderen Subnetz und iptables auf dem Router.

----------

## ConiKost

 *schmutzfinger wrote:*   

> Nein ebtables brauchst du wenn du nicht alles über die Bridge drüber lassen willst. In deinem Fall nutzt du die aber nur um WLAN und LAN auf ethernet-Level zu verbinden. Ich unterstelle mal das du zwischen LAN und WLAN nix filtern willst. Und wenn du das doch willst dann solltest du dir überlegen das auf IP--Ebene zu machen, also mit nem anderen Subnetz und iptables auf dem Router.

 

Ja, da hast du völlig Recht. Ich möchte nicht zwischen WLAN und LAN filtern. Das hier ist ein kleines privates Netzwerk, welches ich als einziger Nutzen werde  :Very Happy:  (oder je nach dem auch mal nen Gast ...)

Aber wie gesagt, es will einfach nicht durchrouten  :Sad: 

----------

## bbgermany

Hi ConiKost,

ich sehe jetzt auch was du machen möchtest. Hast du mal versucht dir IP-Adresse der PPP Verbindung anzupingen? Kannst du zusätzlich mal bitte die Ausgabe von iptables -L -nv und iptables -L -nv -t nat posten? Bei einer Bridge kann man mit iptables auch via physdev target und physdev-in und physdev-out arbeiten  :Wink:  Siehe hier: http://wiki.xensource.com/xenwiki/XenNetworking

MfG. Stefan

----------

## ConiKost

 *bbgermany wrote:*   

> Hi ConiKost,
> 
> ich sehe jetzt auch was du machen möchtest. Hast du mal versucht dir IP-Adresse der PPP Verbindung anzupingen? Kannst du zusätzlich mal bitte die Ausgabe von iptables -L -nv und iptables -L -nv -t nat posten? Bei einer Bridge kann man mit iptables auch via physdev target und physdev-in und physdev-out arbeiten  Siehe hier: http://wiki.xensource.com/xenwiki/XenNetworking
> 
> MfG. Stefan

 

Hallo Stefan,

1) Ja, das ist korrekt. Ich kann die PPP Adresse anpingen. Klappt tatsächlich

2) Bitte sehr:

```
Bl4ckB0x / # iptables -L -nv

Chain INPUT (policy ACCEPT 56 packets, 4562 bytes)

 pkts bytes target     prot opt in     out     source               destination

   66  4004 ACCEPT     all  --  *      *       192.168.0.0/24       0.0.0.0/0

Chain FORWARD (policy ACCEPT 5 packets, 263 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 239 packets, 23336 bytes)

 pkts bytes target     prot opt in     out     source               destination

```

```
Bl4ckB0x / # iptables -L -nv -t nat

Chain PREROUTING (policy ACCEPT 2643 packets, 219K bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 1953 packets, 144K bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 MASQUERADE  all  --  *      *       192.168.0.0/24       0.0.0.0/0

Chain OUTPUT (policy ACCEPT 1675 packets, 127K bytes)

 pkts bytes target     prot opt in     out     source               destination

```

3) Oke, das mit physdev target, physdev-in und physdev-out versteh ich jetzt nur so halb. Muss ich also dann via phydev-in eth0 nach phydev-out ppp0 routen lassen? Ist das von der Idee so gemeint? Da bin ich unsicher, wie das nun gehen soll.

[EDIT]

Ich habe nun folgendes probiert:

 *Quote:*   

> iptables -A FORWARD -m physdev --physdev-in eth0 -j ACCEPT 
> 
> iptables -A FORWARD -m physdev --physdev-out eth0 -j ACCEPT 
> 
> iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

 

Scheint aber ebenfalls nicht zu Helfen ...

----------

## bbgermany

Hi,

anstatt die Quelle zu definieren beim NAT, versuch es mal ganz ohne. In der der Art etwa:

```

iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE

```

Damit sollte alles was über pppX geht nur maskiert werden.

MfG. Stefan

----------

## ConiKost

 *bbgermany wrote:*   

> Hi,
> 
> anstatt die Quelle zu definieren beim NAT, versuch es mal ganz ohne. In der der Art etwa:
> 
> ```
> ...

 

Hallo Stefan,

dieses habe ich ebenfalls probiert in der Richtung ohne eine Angabe einer Quelle, aber es kommt trotzdem weiterhin kein Traffic durch.

Was mir aber auffällt:

 *Quote:*   

> Bl4ckB0x / # iptables -L -nv -t nat
> 
> Chain PREROUTING (policy ACCEPT 4577 packets, 383K bytes)
> 
>  pkts bytes target     prot opt in     out     source               destination
> ...

 

Beim POSTROUTING steigt die Anzahl der Pakete, wenn ich z.B. versuche einen Ping abzusetzen, der nicht klappt. Da scheint also die Regeln irgendwie doch zu greifen, aber es wird wohl nicht maskiert?

----------

## bbgermany

Hi,

was passiert denn, wenn du ein traceroute laufen lässt. bis wohin kommst du dann? Das sieht stark danach aus, als wenn die Pakete den Weg nicht zurück finden.

MfG. Stefan

----------

## ConiKost

 *bbgermany wrote:*   

> Hi,
> 
> was passiert denn, wenn du ein traceroute laufen lässt. bis wohin kommst du dann? Das sieht stark danach aus, als wenn die Pakete den Weg nicht zurück finden.
> 
> MfG. Stefan

 

Hallo Stefan,

so sieht es aus:

 *Quote:*   

> C:\>tracert google.de
> 
> Routenverfolgung zu google.de [216.239.59.104] über maximal 15 Abschnitte:
> 
>   1     1 ms    <1 ms    <1 ms  Bl4ckB0x.Kostecki.LAN [192.168.0.254]
> ...

 

ppp0 Adresse:

 *Quote:*   

> C:\>tracert xx.xxx.x.xxx
> 
> Routenverfolgung zu axx-xxx-x-xxx.net-htp.de [xx.xxx.x.xxx] über maximal 30 Absc
> 
> hnitte:
> ...

 

----------

## bbgermany

Nur mal spasseshalber, geht es denn, wenn du keine Bridge hast?

MfG. Stefan

----------

## ConiKost

 *bbgermany wrote:*   

> Nur mal spasseshalber, geht es denn, wenn du keine Bridge hast?
> 
> MfG. Stefan

 

So ist es. Steht auch bereits im ersten Beitrag  :Very Happy: 

Bei Auflösung der Bridge und nur der Nutzung von eth0 direkt klappt es einwandfrei ...

----------

## bbgermany

Sorry, das habe ich überlesen. Nun aber mal was anderes, auf welchem Interface wird die PPP-Verbindung aufgesetzt? Ist das Interface eth0?  Deiner Config nach zu urteilen ja, und dass geht dann natürlich nicht.

MfG. Stefan.

----------

## ConiKost

 *bbgermany wrote:*   

> Sorry, das habe ich überlesen. Nun aber mal was anderes, auf welchem Interface wird die PPP-Verbindung aufgesetzt? Ist das Interface eth0?  Deiner Config nach zu urteilen ja, und dass geht dann natürlich nicht.
> 
> MfG. Stefan.

 

Hallo Stefan,

leider ist es genauso ...

PC -> br0 (eth0/ath0) -> Switch

Und am Switch ist dann das DSL Modem und die anderen Clients.

Auf br0 ist das ppp0 auch gesetzt.

Also ist in dieser Richtung reingarnix zu machen? Muss ich also zwingend ein eigenes eth Interface für ppp0 haben, damit ich das mit einer Bridge nutzen kann?

----------

## bbgermany

 *ConiKost wrote:*   

> Also ist in dieser Richtung reingarnix zu machen? Muss ich also zwingend ein eigenes eth Interface für ppp0 haben, damit ich das mit einer Bridge nutzen kann?

 

iirc leider ja. Aber ne Netzwerkkarte kostet eh nicht die Welt. Außerdem ist das dann sauberer als deine momentane Lösung. Schon aus dem einfachen Grund, dass der Provider keine Ethernetpakete im DSL-Netz hat, die dort nicht sein sollten.

MfG. Stefan

----------

## ConiKost

 *bbgermany wrote:*   

>  *ConiKost wrote:*   Also ist in dieser Richtung reingarnix zu machen? Muss ich also zwingend ein eigenes eth Interface für ppp0 haben, damit ich das mit einer Bridge nutzen kann? 
> 
> iirc leider ja. Aber ne Netzwerkkarte kostet eh nicht die Welt. Außerdem ist das dann sauberer als deine momentane Lösung. Schon aus dem einfachen Grund, dass der Provider keine Ethernetpakete im DSL-Netz hat, die dort nicht sein sollten.
> 
> MfG. Stefan

 

Ja wenns so einfach wäre ... Das Ding hat keine PCI Slots oder so  :Wink:  Ergo kann ich es schlecht erweitern. USB wird wohl meine einzige Möglichkeit sein. Auf jeden Fall ein Dankeschön für deine viele Hilfe.

Ich werde mir dann wohl doch nen USB Adapter anschaffen. Gibt es da was bezüglich der Kompatbilität zu beachten?

----------

