[gelöst] kernel 2.6.25 netfilter nat

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

[gelöst] kernel 2.6.25 netfilter nat

Beitrag von feldmaus » 26.04.2008 21:40:26

Guten Abend

Ich habe mir einen Kernel 2.6.25 von Kernel.org zusammen
gestellt. In Sachen NAT(Network Adress Translation) scheint
sich was getan zu haben,und zwar soviel, dass ich nicht mehr weiß
wie ich NAT nun unter diesem Kernel zum Laufen zu bringen
habe.

Nach dem ich meine alte Firewall gestartet hatte kam
folgende Fehlermeldung,

Code: Alles auswählen

iptables v1.3.6: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Nun weiß ich aber nicht welches Modul für NAT nun zuständig ist?

Im Kernel<make menuconfig> steht unter,
  • Networking Options
    • QoS and/or fair queuing
      • Actions
        • Stateless Nat
          • Say Y here to do stateless NAT on IPv4 packets.
            You should use netfilter for NAT unless you know what you are doing.
            To compile this code as a module, choose M here:
            the module will be called nat.
Kann mich Jemand aufklären?
Ich bin verwirrt.

Grüße Markus
Zuletzt geändert von feldmaus am 05.05.2008 15:26:56, insgesamt 1-mal geändert.

katzenfan
Beiträge: 651
Registriert: 19.04.2008 22:59:51

Re: kernel 2.6.25 netfilter nat

Beitrag von katzenfan » 26.04.2008 23:23:01

Hallo Markus,
feldmann_markus hat geschrieben:Guten Abend
Ich habe mir einen Kernel 2.6.25 von Kernel.org zusammengestellt. In Sachen NAT(Network Adress Translation) scheint
sich was getan zu haben,und zwar soviel, dass ich nicht mehr weiß
wie ich NAT nun unter diesem Kernel zum Laufen zu bringen
habe.
Für NAT ist eine ganz andere Einstellung zuständig, die, die Du ganz unten als Beispiel genannt hast, benötigst Du nicht unbedingt. Verwende statt "make menuconfig" bitte "make xconfig", weil das für Dich bei weitem übersichtlicher daherkommt und überdies mit einer Suchfunktion ausgestattet ist.

Folgende Optionen in Bezug auf Iptables und Co magst Du als Modul aktivieren. Die Option NAT erscheint erst dann zur Auswahl, wenn diese Option aktiviert ist:

1.) make xconfig;
2.) Auswahl "Networking" in der linken Spalte;
3.) Klick auf das schwarze Dreieck bei "Networking options" in der rechten Übersicht;
4.) Klick auf das schwarze Dreieck bei "Networking packet filtering framework (Netfilter)";
5.) "Networking packet filtering framework (Netfilter)" bekommt ein Häkchen;
6.) Klick auf das schwarze Dreiecke bei "IP: Netfilter Configuration";
7.) "IPv4 connection tracking support (required for NAT)" bekommt ein Häkchen oder einen Punkt;
8.) "IP tables support (required for filtering/masq/NAT)" bekommt ein Häkchen oder einen Punkt;
9.) Unterhalb des aktiverten 8.) findest Du nun eine Option "Full NAT";
10.) Setze ein Häkchen oder einen Punkt in jedes der Kästchen, die Du unterhalb "Full NAT" findest;
11.) Du kannst jede Option mit einem Punkt versehen, die Du auf dieser rechten Seite vorfindest;
12.) Wenn Du Iptables nutzt, müssen auch folgende Optionen aktiviert sein;
13.) Gehe zurück zu 5.);
14.) Klick auf das schwarze Dreieck bei "Core Netfilter Configuration";
15.) Setze ein Häkchen oder einen Punkt bei "Netfilter Xtables support (required for ip_tables)";
16.) Alle nun darunter erscheinenden Optionen kannst Du mit einem Punkt oder Häkchen versehen;
17.) Alle anderen Optionen aktiviere bitte nur, wenn Du weißt, was Du tust oder wenn in der jeweiligen rechten Beschreibung, die es zu jeder der Optionen gibt, ein "If unsure, say Y." zu lesen ist.

ciao
katzenfan

PS.: Bin kein Profi, habe mir allerdings schon einige Kernel bei unterschiedlichen Distros selber gebaut; sei es aus den originalen Quellen oder aus den systemeigenen.

PS2.: der Punkt steht für ein Modul, das Häkchen für einen festen Kernelbestandteil.

Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: kernel 2.6.25 netfilter nat

Beitrag von feldmaus » 28.04.2008 13:05:09

@Katzenfan
Bin deine Anleitung durch gegangen. Nun habe ich auch einige Module für NAT für
den Kernel 2.6.25, aber auch ein paar Fehlermeldungen bekommen,

Code: Alles auswählen

iptables: No chain/target/match by that name
iptables v1.3.6: Couldn't load target `ext-out':/lib/iptables/libipt_ext-out.so: cannot open shared object file: No such file or directory
Meine Firewall läuft unter dem Kernel 2.6.18 ohne Probleme, daher finde ich das merkwürdig.
Vielleicht habe ich ein Modul vergessen?

Hier eine Liste der Module die unter 2.6.18 geladen sind,

Code: Alles auswählen

...
ipt_MASQUERADE          8320  1
xt_tcpudp               7936  31
xt_state                6912  4
iptable_nat            12292  1
ip_nat                 24492  2 ipt_MASQUERADE,iptable_nat
ip_conntrack           63140  4 ipt_MASQUERADE,xt_state,iptable_nat,ip_nat
nfnetlink              11976  2 ip_nat,ip_conntrack
...
ipv6                  286048  8
iptable_filter          7808  1
ip_tables              25576  2 iptable_nat,iptable_filter
x_tables               22024  5 ipt_MASQUERADE,xt_tcpudp,xt_state,iptable_nat,ip_tables
...
Hier meine Firewall,

Code: Alles auswählen

#! /bin/bash
#-----------------------------------------------------------
#Author: Markus Feldmann
#
# Filterregeln fuer IP-Packete
#
# Grundsaetzlicher Aufbau unseres Netzwerkes wird unten angezeigt.
# Die Pfeile geben die Richtung an von wo nach wo welche Verbindung ist,
# mit der Bezeichnung die auch in diesem Script verwendet wird.
#
# Das Skript kann wie folgt auferufen werden:
#       firewallDSL start
#
# Dieses Skript ist speziell fuer das Netzwerk Device welches
# sich uebers DSL Modem it dem Internet verbindet.
#
#
#
#                                   ext-fw
#               <-----------------------------------------------
#
#                                   int-fw
#               ------------------------------------------------>
#
#  feld-bert _____
#                 \
#                  \______<--LAN(ueber br0)__Feld-server__-->WAN(ueber ppp0)__
#                  /
# feld-drizzt ____/
#                   int-in                              ext-out
#       -------------------------------------->     ------------------->
#
#                   int-out                             ext-in
#       <--------------------------------------     <-------------------
#
#                  int-int-fw
# feld-bert   ------------------------------->\
#                                             |
# feld-driztt <-------------------------------/
#
#-------------------------------------------
# Grundeinstellungen und Variablen und Konstanten
EXTIF=$LOGICAL
#-------------------------------------------
# Ausgabe des Scriptes beim starten mit veschiedenen Parametern.
case "$1" in
start)
    echo "Firewall wird gestartet!"
;;
stop)
    echo "Firewall wird runtergefahren!"
;;
*)
    echo "Benutze: $0 {start|stop}"
;;
esac
#-----------------------------------------------------------
# Regeln die immer gelten sollen!
#
# Loeschen bestimmter Regeln
iptables -t nat -F POSTROUTING
iptables -F ext-out
iptables -D OUTPUT -o "$EXTIF" -j ext-out
iptables -X ext-out
iptables -F ext-in
iptables -D INPUT -i "$EXTIF" -j ext-in
iptables -X ext-in
#-----------------------------------------------------------
# Firewall herunterfahren
#-----------------------------------------------------------
case "$1" in
stop)
# Nichts
;;
#-----------------------------------------------------------
# Firewall hochfahren
#-----------------------------------------------------------
start)
# Eigene Chains erstellen - Externes Interface
iptables -N ext-in              # von Internet in feld-server
iptables -N ext-out             # von feld-server ins internet
# Erstmal alles verbieten
iptables -P ext-in DROP
iptables -P ext-out DROP
# Verteilung der Pakete auf die Chains
iptables -A INPUT -i "$EXTIF" -j ext-in
iptables -A OUTPUT -o "$EXTIF" -j ext-out
# Pakete mit entsprechendem Status als DROPED oder ACCEPTED behandeln
iptables -A ext-out -m state --state INVALID -j DROP
iptables -A ext-out -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A ext-in -m state --state INVALID -j DROP
iptables -A ext-in -m state --state ESTABLISHED,RELATED -j ACCEPT

...

# Alle Packete des lokalen Netzes muessen maskiert werden.
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o "$EXTIF" -j MASQUERADE
# Um zu testen ob man ueberhaupt rauskommt
#iptables -I ext-in 1 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
#iptables -I ext-out 1 -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT

#Pakete, die nicht von den normalen Regeln abgedeckt werden,
#sollen im syslog protokoliert werden.
#Alle Packete die nicht in eine der anderen Regeln umgeleitet wurden
#werden in den Standard Regeln(INPUT,OUTPUT und FORWARD) prozokolliert.
#iptables -A ext-in -s 0.0.0.0/0 -j LOG --log-prefix "fwlog:ext-in:"
#iptables -A ext-out -s 0.0.0.0/0 -j LOG --log-prefix "fwlog:ext-out:"
;;
esac

katzenfan
Beiträge: 651
Registriert: 19.04.2008 22:59:51

Re: kernel 2.6.25 netfilter nat

Beitrag von katzenfan » 28.04.2008 18:54:08

Hallo Markus,
feldmann_markus hat geschrieben:Bin deine Anleitung durch gegangen. Nun habe ich auch einige Module für NAT für
den Kernel 2.6.25, aber auch ein paar Fehlermeldungen bekommen,
*
Meine Firewall läuft unter dem Kernel 2.6.18 ohne Probleme, daher finde ich das merkwürdig.Vielleicht habe ich ein Modul vergessen?
Die Kernel 2.6.18 und 2.6.25 sind grundverschieden aufgebaut, obschon viele Elemente via "make xconfig" an den gleichen Stellen zu finden sind; die meisten Änderungen finden sich in den tieferen Strukturen des Kernels, also in einzelnen Dateien, die via "make xconfig" nicht primär zur Geltung kommen. Diese Unterschiede merkst Du u.a. auch, wenn Du "kdiff3" startest und die "config-2.6.25" mit der "config-2.6.18" vergleichst. Beide Dateien sind jeweils bezogen auf ihren Kernel mit der ".config" identisch, die Du unter /usr/src/kernelname mit "make xconfig" bearbeitest. Auch kannst Du, (das tue ich, wenn ich mir unsicher bin), in der einen Konsole "make xconfig" innerhalb der Sourcen beispielsweise des Kernels 2.6.18 aufrufen und in einer anderen Konsole wiederholst Du das mit den Sourcen des Kernels 2.6.25. Beide "make xconfig"-Fenster schiebst Du zusammen, sodaß Du zeitgleiche beide auf Deinem Bildschirm im Blick hast. Nun gehst Du Punkt für Punkt diese Einstellungsdateien durch und vergleichst die Häkchen oder Punkte der 2.6.18er Kerneleinstellungsdatei mit der des neuen Kernels. Erwünschte Teile übernimmst Du auf den neuen Kernel, andere halt nicht.

Da ich Dein individuelles System nicht kenne, nichts über Deine Hardware weiß, kann ich Dir auch nur allgemeine Tips geben, wie ich meinen Debian-Kernel konstruieren würde bzw. schon getan habe. Und bis jetzt lief jeder.

Die IPV6-Unterstützung ist separat im Kernel unter "Networking" zu aktivieren.

Zu Deiner Fehlermeldung kann ich Dir immerhin soviel sagen, daß diese nicht im Kernel begründet liegt, sondern daran, daß die in der Fehlermeldung genannte Datei "/lib/iptables/libipt_ext-out.so" theoretisch Iptables mitbringen müsste, denn es ist eine Bibliothek. Und da es diese nicht gibt, bekommst Du halt die Fehlermeldung.

Code: Alles auswählen

iptables: No chain/target/match by that name
iptables v1.3.6: Couldn't load target `ext-out':/lib/iptables/libipt_ext-out.so: cannot open shared object file: No such file or directory
Ich kann Dir hier erst mal nur empfehlen, Deine Firewall zu checken; es ist möglich, daß das System eine Deiner erstellten Firewallregeln als Bibliothek versteht. "ext-out" und Co. sind ja bei Dir erstellte Regeln für Iptables.

ciao
katzenfan

PS.: Zwischen Kernelbau und Firewallstricken liegen Welten.

Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: kernel 2.6.25 netfilter nat

Beitrag von feldmaus » 28.04.2008 21:24:43

katzenfan hat geschrieben:Ich kann Dir hier erst mal nur empfehlen, Deine Firewall zu checken; es ist möglich, daß das System eine Deiner erstellten Firewallregeln als Bibliothek versteht. "ext-out" und Co. sind ja bei Dir erstellte Regeln für Iptables.
Genau so sehe ich das auch.
Und ich spinne die Idee mal weiter, für die Nutzung eigener Regeln ist ein Modul verantwortlich,
welches ich nicht geladen habe?!
Daher sollte ich vergleichen, welche Module beim Kernel 2.6.25
geladen sind und welche bei 2.6.18, nur leider bin ich erst am
Wochende wieder am Laptop meiner Freundin. :-(
Und oben habe ich ja nur die geladenen Module mit Kernel 2.6.18
gelistet.

Danke und Grüße Markus

katzenfan
Beiträge: 651
Registriert: 19.04.2008 22:59:51

Re: kernel 2.6.25 netfilter nat

Beitrag von katzenfan » 28.04.2008 23:36:59

feldmann_markus hat geschrieben:
katzenfan hat geschrieben:Ich kann Dir hier erst mal nur empfehlen, Deine Firewall zu checken; es ist möglich, daß das System eine Deiner erstellten Firewallregeln als Bibliothek versteht. "ext-out" und Co. sind ja bei Dir erstellte Regeln für Iptables.
Und ich spinne die Idee mal weiter, für die Nutzung eigener Regeln ist ein Modul verantwortlich, welches ich nicht geladen habe?!
Eher weniger, weil Du die für Iptables relevanten Teile alle unter "Networking" findest. Wenn Du Dir hier sicher bist, alles Wichtige angekreuzt zu haben, kann es nicht am fehlenden Modul liegen. Du hättest dann in Deinen Logdateien irgendwo nämlich einen Hinweis, daß der Kernel ein Modul nicht gefunden hat. Was bei Dir aber nicht gefunden wurde, ist eine Bibliothek, und die hat mit dem Kernel nix zu tun.

Natürlich kannst Du den Kernel beeinflussen, wie Du es hier schon in Deinem Script getan hast, nur das ich die Anführungszeichen um die 1 herum weglassen würde. Vielleicht ist das schon Dein Fehler; denn dem System übergibst Du hier ja nicht einfach nur eine 1, sondern gleich ein "1", was es dann eventuell nicht versteht. (Bei mir sind diese Anführungszeichen nirgendwo vorhanden).

Code: Alles auswählen

echo "1" > /proc/sys/net/ipv4/ip_forward
Daher sollte ich vergleichen, welche Module beim Kernel 2.6.25
geladen sind und welche bei 2.6.18,
Nein, nicht nur deswegen; beide Kernel sind unterschiedlich gestrickt. Der 2.6.18 bietet Optionen an, die der 2.6.25 nicht hat und umgekehrt. Ein Abgleich zwischen beiden Versionen kann auch so nicht schaden.

Warum nimmst Du nicht eine in den Debian-Quellen vorhandene Firewall und baust die nur auf Deine Bedürfnisse um?

ciao
katzenfan

Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: kernel 2.6.25 netfilter nat

Beitrag von feldmaus » 02.05.2008 06:52:14

Ich bin jetzt ein Stück weiter gekommen.
Habe das Firewall Script Zeile für Zeile manuell ausgeführt.
Die eigenen Chains werden erstellt.

Code: Alles auswählen

wes-nic:~/bin# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     0    --  anywhere             anywhere
ext-in     0    --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     0    --  anywhere             anywhere
ext-out    0    --  anywhere             anywhere

Chain ext-in (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:ftp dpts:1024:65535 flags:!FIN,SYN,RST,ACK/SYN
...

Chain ext-out (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpts:bootps:bootpc
...
aber ein manuelles Ausführen folgender Befehle aus dem firewall Skript geht schieff,

Code: Alles auswählen

wes-nic:~# iptables -P ext-in DROP
iptables: Bad built-in chain name
wes-nic:~# iptables -P ext-out DROP
iptables: Bad built-in chain name
Nachdem ich <man iptables> gelesen habe zu <-P --policy> wundert mich nur, warum
mein Skript bis jetzt eigentlich funktionierte?

Code: Alles auswählen

       -P, --policy chain target
              Set  the  policy for the chain to the given target.  See the section TARGETS for
              the legal targets.  Only built-in (non-user-defined) chains can  have  policies,
              and neither built-in nor user-defined chains can be policy targets.
Dort steht ja das Policies nur auf Build-in Chains angewendet werden dürfen. Aber
was muss ich dann bei mir ändern?
Und liegt hierin der Fehler?

IPFORWARDING habe ich mir auch nochmla angeguckt,

Code: Alles auswählen

nicole@wes-nic:~$ cat /proc/sys/net/ipv4/ip_forward
1
Sieht aber gut aus. Ich hatte es aber auch mal ohne die Anführungszeichen probiert,
mit dem gleichen Resultat.

Grüße Markus

katzenfan
Beiträge: 651
Registriert: 19.04.2008 22:59:51

Re: kernel 2.6.25 netfilter nat

Beitrag von katzenfan » 02.05.2008 10:16:37

feldmann_markus hat geschrieben:Ich bin jetzt ein Stück weiter gekommen.
Weil Dir Fehler gezeigt wurden, die Du wo ganz anders vermutet hast? Trotzdem viel Glück, kannst nur lernen.
Nachdem ich <man iptables> gelesen habe zu <-P --policy> wundert mich nur, warum mein Skript bis jetzt eigentlich funktionierte?
Vielleicht, weil Dein ganzes Script als solches ausgeführt wurde und potentielle Fehlermeldungen für Dich nicht einsehbar waren?

Hierzu kannst Du bei Dir einen einfachen Test machen; leg Dir 3 leere Dateien mit den Rechten der Umask 0700 an, die je ein Leerzeichen im Namen haben. Auf graphische Weise kannst Du die Rechte über "Eigenschaften" beispielsweise auf Umask-Werte von 0755 ändern; geht bei allen. Mach dies über ein Script und kontrolliere dann die Rechte, (also 0700 müssten dann 0755 sein), Du wirst Dich wundern; und dann mache das ganze Schritt für Schritt in der Konsole, dann siehst Du die Fehlermeldungen.

Will sagen, diese Scripte laufen einfach durch, egal, ob sie richtig gestrickt sind oder nicht.
Dort steht ja das Policies nur auf Build-in Chains angewendet werden dürfen. Aber was muss ich dann bei mir ändern?
Schau Dir "Arno's Firewall" an und baue Dir dies auf Deine Bedürfnisse um; man muß nicht grundsätzlich alles neu schaffen, wenn's das in der einen oder anderen Weise schon gibt. Das Paket ist in den Debian-Quellken enthalten.
Und liegt hierin der Fehler?
Bin zwar kein Firewall-Spezl, aber ich sag einfach mal "Ja". Iptables sucht bei Dir nach einem nicht vorhandenen Modul, aber eben nicht nach einem Kernelmodul, (wie Du vermutet hattest), sondern nach einem Teil von Iptables, das sich "ext-out" nennen müsste. Und dieses Teil findet es halt nicht, weil es das auch ursprünglich nicht gegeben hatte.
IPFORWARDING habe ich mir auch nochmla angeguckt,

Code: Alles auswählen

nicole@wes-nic:~$ cat /proc/sys/net/ipv4/ip_forward
1
Sieht aber gut aus. Ich hatte es aber auch mal ohne die Anführungszeichen probiert, mit dem gleichen Resultat.
Ok, ich kannte es nur ohne Ausführungszeichen, aber wenn's auch mit geht, geht's halt mit. :)

ciao
katzenfan


PS.: Vielleicht ist es jetzt auch besser, hier einen Firewall-Thread zu eröffnen, denn mit dem Kernel hat das nichts mehr zu tun.

Benutzeravatar
feldmaus
Beiträge: 1307
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: kernel 2.6.25 netfilter nat

Beitrag von feldmaus » 05.05.2008 15:26:36

Das Problem lag an dem Modul 'xt_state', welches im Kernel 2.6.25 von http://www.kernel.org standardmäßig
nicht aktiviert ist.

Antworten