# iptables NAT geht nich [geloest]

## robelr

Hallo,

Wenn ich kurz mein Problem schildern darf. Ich hab bei mir ein kleines

Netzwerk aufgebaut. Mehrere PCs welche ueber einen Router zusammen-

geschlossen sind und ins Netz gehen. 

Nun habe ich vor einen PC als Router umzufunktionieren. Zwei Netzwerkkarten sind 

drin, online ist er auch, und eine Verbindung vom Laptop auf den Server klappt auch

Der Server hat nun die Interfaces 

eth0 192.168.2.150/24 (WAN)

und 

eth1 192.168.0.1/24 (LAN)

Mein Laptop hat die Ip 192.168.0.2/24

Jetzt moechte ich den Server dazu veranlassen zu routen..

Ich hab schon ne Menge dazu gelesen und folgenden Befehl gefunden

```
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
```

Dieses bringt folgenden Fehler

```
FATAL: Error inserting ip_tables (/lib/modules/2.6.22-gentoo-r9/kernel/net/ipv4/netfilter/ip_tables.ko): Invalid module format

iptables v1.3.8: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.
```

Auch hierzu hab ich ne Menge gefunden, aber nichts hat geholfen.

Koennt ihr mir evtl helfen?

Danke, RomanLast edited by robelr on Wed Dec 05, 2007 10:45 am; edited 1 time in total

----------

## Gibheer

Du hast wahrscheinlich das iptables modul NAT vergessen in den Kernel einzukompilieren oder nicht geladen.

----------

## robelr

Wie kann ich das testen?

Ich habe es nicht hinbekommen den Kernel von Hand zu kompilieren (ich bekam immer kernel-panic)

und musste daher genkernel verwenden.  :Rolling Eyes: 

Ich habe diesen Einwand schon oft gefunden und eigentlich denke ich auch das ich die NAT und IPTABLES

sachen im menuconfig aktiviert hab.

----------

## schmutzfinger

Da fehlt nicht nur wahrscheinlich ein Modul sondern das ist ziemlich sicher. Der erste Teil der Fehlermeldung sagt doch, dass das Modul ip_tables nicht geladen werden konnte. Wenn du beim Bauen vom Kernel keinen Fehler gemacht hast dann ist der wohl irgendwie kaputt. Ich würde dir raten ein paar andere Versionen zu testen und auch mal zu probieren das Zeug fest einzubauen anstatt als Modul. Und lies dir Howtos zum Kernel bauen und zur Benutzung von genkernel nochmal richtig durch wenn du damit nicht weiter kommst machst du was falsch.

Stell sicher das du nicht nen alten Kernel mit den neuen Modulen verwendest oder umgekehrt. Das kann passieren wenn du "make modules_install" vergisst oder den booloader nicht anpasst.

----------

## ChrisJumper

Oh und such mal ein wenig..! Die Module dafür haben irgendwann heimlich ihre Bezeichnung geänder!

```
Module                  Size  Used by

ipt_MASQUERADE          2132  - 

iptable_nat             5208  - 

nf_nat                 12940  - 

nf_conntrack_ipv4      11296  - 

xt_state                1620  - 

iptable_filter          1908  - 

ip_tables               8328  - 

```

Das sind die Module die ich geladen hab, und bei mir läuft es. Mein Kernel ist ein  2.6.22-gentoo-r8

Vielleicht hilft dir das ja ein wenig weiter. Ich bin mir nicht sicher ob das Modul xt_state auch von nöten ist. Hab jetzt einfach mal den oberen Bereich von lsmod kopiert um alles was mit ip zu tun hat anzuzeigen.

Mfg und viel Erfolg!

----------

## ChrisJumper

 *robelr wrote:*   

> Wie kann ich das testen?
> 
> Ich habe es nicht hinbekommen den Kernel von Hand zu kompilieren (ich bekam immer kernel-panic)
> 
> und musste daher genkernel verwenden. :roll: 
> ...

 

Einen Kernel selber zu kompilieren ist garnicht schwer! Man muss sich nur immer aufschreiben und selber wissen was man braucht. Also welche Treiber für alles mögliche usw. Am besten schaust du mal hier. Dort findest du die Installations-Anleitung für eine manuelle Konfigureation. Wichtig ist das du die den fertigen Kernel nach Boot rüber kopierst. Und wenn du den nvidia-Treiber benutzt dann auch noch mal die Treiber neu kompilierst. (Bei größeren Kernel-Modifikationen wollen die immer neu kompiliert werden).

Und auch das du einen seperaten eintrag in deinem Bootmanager machst damit du, wenn der neue kernel nicht will immer noch den gen-kernel booten kannst!

Wenn du dir bezüglich der Treiber nicht sicher bist. Nehme einfach eine Knoppix CD und überprüfe mit lsmod welche Module sie geladen hat. Aber eigentlich ist die Kernelkonfiguration gut dokumentiert.

Du kannst wenn du  make menuconfig verwendest mit / (slash!) suchen und mit der Fragezeichen Taste bekommst du eine etwas genauere Erklärung auf Englisch. Wenn dir make menuconfig über die Console mit ncoursers (so heißt diese edele blaue grafische Unterstützung für die Konsolen-Programme) nicht so zusagt kannst du auch make xconfig verwenden (wenn du gnome oder kde am laufen hast). Aber ich verwende das nicht so gerne, aber das ist Geschmackssache.

Viel Erfolg!

----------

## bbgermany

Hi,

 *robelr wrote:*   

> 
> 
> ```
> FATAL: Error inserting ip_tables (/lib/modules/2.6.22-gentoo-r9/kernel/net/ipv4/netfilter/ip_tables.ko): Invalid module format
> 
> ...

 

Die FATAL Meldung hört sich doch verdammt danach an, dass dieses Modul mit einer anderen Compilerversion übersetzt wurde als der Kernel. Schau doch mal in /var/log/messages, nachdem du

```

modprobe ip_tables

```

gemacht hast.

MfG. Stefan

----------

## robelr

Danke fuer eure Beitraege.

@bbgermany 

```
modprobe ip_tables
```

und auch

```
modprobe iptables
```

geben das gleiche ergebnis

```
FATAL: Module iptables not found.
```

@ChrisJumper (: das ist mal ne nette Antwort.

Der Punkt ist ich habe meinen Kernel auch schon kompiliert alles super,

nur wird dieser anscheinend nicht richtig geladen. Wie muss denn eine 

gueltige grub.conf aussehen? Die die ich in den gentoo docs gefunden habe

funktioniert nicht. allerdings habe ich keine module in module.autoload

eingetragen. Muss das sein?

Wenn ich lsmod ausfuehre finde ich garnicht von den von dir aufgezeigten

modulen.

----------

## bbgermany

Hi,

Könnest du mal deine Kernelconfig posten?

Danke & MfG. Stefan

----------

## robelr

das ist das die .config im /usr/scr/linux order?

die ist ziemlich lang  :Very Happy: 

----------

## bbgermany

http://nopaste.info/

Da kannst du es hinladen und ja, die .config aus /usr/src/linux ist die richtige Datei.

MfG. Stefan

----------

## robelr

Hey danke euch allen, jetzt geht es. 

Hatte wirklich vergessen was in den Kernel zukompilieren. 

Habs gefunden, bin online (:

Danke!

----------

## okel

Hallo Roman,

es wäre nett gewesen, wenn du geschrieben hättest, was dir denn gefehlt hat, damit andere auch was davon haben.

Grüße

Okel

----------

