Kernel Module

fischefr

Mitglied
Mitglied seit
30 Okt 2004
Beiträge
207
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen!

Ich versuche, IP-Tables ohne Freetz auf einer (fast) unveränderten Fritzbox 7390 zum laufen zu bekommen.
Laut http://freetz.org/wiki/packages/iptables brauche ich mindestens 4 Kernel Module:
# Die wichtigsten Module, ohne die nichts geht: modprobe ip_tables modprobe iptable_filter modprobe x_tables modprobe xt_tcpudp
Ich lasse mir iptables in eine statische Binary kompilieren, habe die 4 Module ausgewählt und anschließend die 4 aufgeführten Module als .ko-Files erwartet zu bekommen. Leider scheint meine Rechnung nicht aufzugehen: Ich finde kein einziges der Module als KO-File, lediglich c-Files (sourcecode) und h-Files (header) finde ich. Kann mir jemand einen Tipp geben? Kann das so überhaupt funktionieren? Ich möchte die Module per insmod-Aufruf aus einem Skript laden, das von der debug.cfg gestartet wird.

Hintergrund der ganzen Aktion (falls es jemanden interessiert): Mit minimalen Aufwand openvpn und dnsmaq zu Laufen zu bekommen ohne Freetz zu flashen. Nachdem aber der Daemon multid den dns-Port blockiert, möchte ich dnsmaq auf einen anderen Port binden und Pakete per iptables dann regelbasiert auf dnsmasq umleiten (der dann wiederrum ggf. auf multid zurückgreift - oder eben auf einen Firmen-DNS über den VPN-Tunnel, je nach aufzulösende Domain). DNS-Anfragen an nicht-Firmen-urls sollen in der Firma nicht im Protokoll auftauchen, Firmen-Urls können vom ISP-DNS nicht aufgelöst werden. Daher der zusätzliche Aufwand mit dnsmasq.

Ein ähnliches Konstrukt läuft aktuell auf einem Rasperry Pi bei mir - ich möchte das jetzt auf die Fritzbox umziehen um den Rasperry für andere Zwecke frei zu machen. Funktioniert auf dem Rasperry wunderbar.
 
Du musst zwischen iptables- und Kernel-Modulen unterscheiden.
Die iptables-Module hast du einkompiliert, die Kernelmodule sind (wenn du sie gebaut hast) im Freetz-Ordner unterhalb von "kernel/<Box_und_Firmware_Version>/", also z.B. bei einer 7390 6.01 z.B. unter
"kernel/modules-iks-7390_06.01/net/ipv4/netfilter/" und "kernel/modules-iks-7390_06.01/net/netfilter/".

Ob du Kernel-Module laden kannst, ohne einen neuen Kernel gebaut zu haben, ist nicht immer sicher.
Ein paar iptables Module hat die 7390 auch schon fest im Kernel integriert (hatte sie zumindest), so dass man die nicht als Modul laden kann/muss.
 
Bei meinen letzten Versuchen mit iptables auf der Box kam immer wieder die Meldung "Permission denied". Bin ich eigentlich in der Telnet-Konsole der Box mit root-Rechten unterwegs? Ich hab gestern mal eine Datei versuchsweise angelegt und der owner war root. Kannst du mir evtl. dazu auch etwas sagen?

Aber zurück zur meiner 1. Frage:
Konkret habe ich in den beiden Verzeichnissen folgende Dateien vorliegen:

drwxr-xr-x 2 franz franz 4096 Dez 22 16:39 .
drwxr-xr-x 3 franz franz 4096 Dez 22 16:39 ..
-rw-r--r-- 1 franz franz 5407 Dez 22 16:39 arptable_filter.ko
-rw-r--r-- 1 franz franz 14964 Dez 22 16:39 arp_tables.ko
-rw-r--r-- 1 franz franz 3556 Dez 22 16:39 arpt_mangle.ko
-rw-r--r-- 1 franz franz 4936 Dez 22 16:39 iptable_raw.ko
-rw-r--r-- 1 franz franz 4439 Dez 22 16:39 ipt_addrtype.ko
-rw-r--r-- 1 franz franz 3182 Dez 22 16:39 ipt_ah.ko
-rw-r--r-- 1 franz franz 3710 Dez 22 16:39 ipt_ecn.ko
-rw-r--r-- 1 franz franz 4410 Dez 22 16:39 ipt_ECN.ko
-rw-r--r-- 1 franz franz 3179 Dez 22 16:39 ipt_ttl.ko
-rw-r--r-- 1 franz franz 3649 Dez 22 16:39 ipt_TTL.ko
-rw-r--r-- 1 franz franz 9493 Dez 22 16:39 ipt_ULOG.ko

-rw-r--r-- 1 franz franz 3048 Dez 22 16:39 xt_CLASSIFY.ko
-rw-r--r-- 1 franz franz 2960 Dez 22 16:39 xt_comment.ko
-rw-r--r-- 1 franz franz 4883 Dez 22 16:39 xt_dccp.ko
-rw-r--r-- 1 franz franz 4227 Dez 22 16:39 xt_dscp.ko
-rw-r--r-- 1 franz franz 5423 Dez 22 16:39 xt_DSCP.ko
-rw-r--r-- 1 franz franz 3403 Dez 22 16:39 xt_esp.ko
-rw-r--r-- 1 franz franz 18016 Dez 22 16:39 xt_hashlimit.ko
-rw-r--r-- 1 franz franz 3940 Dez 22 16:39 xt_iprange.ko
-rw-r--r-- 1 franz franz 3233 Dez 22 16:39 xt_length.ko
-rw-r--r-- 1 franz franz 3238 Dez 22 16:39 xt_mark.ko
-rw-r--r-- 1 franz franz 3360 Dez 22 16:39 xt_NFLOG.ko
-rw-r--r-- 1 franz franz 3218 Dez 22 16:39 xt_NFQUEUE.ko
-rw-r--r-- 1 franz franz 4509 Dez 22 16:39 xt_owner.ko
-rw-r--r-- 1 franz franz 3124 Dez 22 16:39 xt_pkttype.ko
-rw-r--r-- 1 franz franz 5165 Dez 22 16:39 xt_policy.ko
-rw-r--r-- 1 franz franz 3344 Dez 22 16:39 xt_quota.ko
-rw-r--r-- 1 franz franz 4256 Dez 22 16:39 xt_rateest.ko
-rw-r--r-- 1 franz franz 6256 Dez 22 16:39 xt_RATEEST.ko
-rw-r--r-- 1 franz franz 2886 Dez 22 16:39 xt_realm.ko
-rw-r--r-- 1 franz franz 17711 Dez 22 16:39 xt_recent.ko
-rw-r--r-- 1 franz franz 4453 Dez 22 16:39 xt_sctp.ko
-rw-r--r-- 1 franz franz 3496 Dez 22 16:39 xt_statistic.ko
-rw-r--r-- 1 franz franz 3826 Dez 22 16:39 xt_string.ko
-rw-r--r-- 1 franz franz 6993 Dez 22 16:39 xt_TCPMSS.ko
-rw-r--r-- 1 franz franz 4277 Dez 22 16:39 xt_TCPOPTSTRIP.ko
-rw-r--r-- 1 franz franz 4704 Dez 22 16:39 xt_time.ko
-rw-r--r-- 1 franz franz 2933 Dez 22 16:39 xt_TRACE.ko
-rw-r--r-- 1 franz franz 3650 Dez 22 16:39 xt_u32.ko

Ich kann die schlecht alle laden bzw. ich brauche nicht alle, oder? Hab etwas von max. 50 Modulen gelesen, die in den Standard-Kernel der Box geladen werden können. Kannst du dazu etwas sagen? Wie bekomme ich raus, was ich davon brauch? Im Endeffekt brauch ich nur eine oder 2 Regeln der Machart: Leite Daten von UDP (bzw. TCP) Port x auf port y um. Die genauen Regeln werde ich die nächsten Tage mal erarbeiten.

Aktuell sind folgende Module im Kernel geladen:
# lsmod
Module Size Used by Tainted: P
usb_storage 35072 0
sd_mod 25280 0
scsi_mod 88560 2 usb_storage,sd_mod
ath_pktlog 16784 0
umac 620416 1 ath_pktlog
ath_dev 201536 2 ath_pktlog,umac
ath_dfs 48704 1 ath_dev
ath_spectral 62272 1 ath_dev
ath_rate_atheros 28656 2 ath_pktlog,ath_dev
ath_hal 646640 4 ath_pktlog,umac,ath_dev,ath_rate_atheros
asf 10576 5 umac,ath_dev,ath_dfs,ath_spectral,ath_hal
adf 19632 3 umac,ath_dev,ath_hal
aae 135632 4 umac,ath_dev,ath_dfs,ath_hal
userman_mod 67968 2
atmdriver_lkm 1804672 0
sch_sfq 6272 4
sch_llq 8736 1
sch_tbf 4960 1
avm_pa_fusiv 16896 0
kdsldmod 1418368 7 userman_mod
ohci_hcd 17776 0
ehci_hcd 31184 0
usbcore 120512 4 usb_storage,ohci_hcd,ehci_hcd
ramzswap 16448 1
lzo_decompress 2272 1 ramzswap
lzo_compress 2048 1 ramzswap
dect_io 12768 0
avm_dect 237968 1 dect_io
capi_codec 354096 0
isdn_fbox_fon5 743536 6
pcmlink 306640 4 avm_dect,capi_codec,isdn_fbox_fon5
Piglet_noemif 29264 0
bmedrv 7440 0
opensrc_lkm 1632 1 bmedrv
aclap_driver_lkm 19760 2 umac,atmdriver_lkm
sysKCode_lkm 23536 0
ethdriver_lkm 44048 1 aclap_driver_lkm
periap_driver_lkm 14848 1 ethdriver_lkm
timers_lkm 5264 2 atmdriver_lkm,ethdriver_lkm
bmdriver_lkm 12976 1 atmdriver_lkm
ap2ap_lkm 24192 7 umac,atmdriver_lkm,kdsldmod,aclap_driver_lkm,sysKCode_lkm,ethdriver_lkm,bmdriver_lkm
fusivlib_lkm 59472 11 umac,atmdriver_lkm,avm_pa_fusiv,kdsldmod,bmedrv,aclap_driver_lkm,sysKCode_lkm,ethdriver_lkm,periap_driver_lkm,bmdriver_lkm,ap2ap_lkm
rtc_avm 5296 1 pcmlink
rtc_core 13680 1 rtc_avm
led_modul_Fritz_Box_7390 80032 6
 
Zuletzt bearbeitet:
"Permission denied" weist darauf hin, dass das "Programm" nicht als solches erkannt wird (ein "ls -l" sollte ein "x" für dein Programm haben). Das kannst du mit "chmod +x <Programm>" ändern.

Welche Module du brauchst hängt davon ab, was du tun willst, also von den gewünschten iptables Regeln. Wie sollen die denn lauten?
Du kannst ja erstmal schauen, was schon funktioniert und sonst die Module nachladen.

Noch eine Bitte: Ausgaben als "code" ([noparse]zwischen
Code:
 und
[/noparse]) kennzeichnen. Die sind viel besser zu lesen (und nicht so unübersichtlich lang) wie solche als "quote"s.
 
Also die Regeln sollen folgendermaßen lauten (ich hoffe, die sind so ok - ungetestet!):

Code:
iptables -t nat -A PREROUTING -p tcp --dport 53 -i lan:1 -j REDIRECT --to-port 8053
iptables -t nat -A PREROUTING -p udp --dport 53 -i lan:1 -j REDIRECT --to-port 8053
iptables -t nat -A PREROUTING -p udp --dport 67 -i lan:1 -j REDIRECT --to-port 8067

lan1 wir vorher per
Code:
ifconfig lan:1 192.168.178.2 netmask 255.255.255.0  
ifconfig lan:1 up
angelegt.

Falls das so nicht funktionieren sollte mit lan:1, kann ich auch auf --destination und ip-Adresse ausweichen. Soweit kein Problem, aber:

Wenn ich die erste der aufgeführten Codezeilen absetze, kommt folgendes:
Code:
# ./iptables -t nat -A PREROUTING -p tcp --dport 53 -i lan:1 -j REDIRECT --to-port 8053
modprobe: module ip_tables not found in modules.dep
iptables v1.4.11.1: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Welche Module muss ich mit insmod laden, damit das klappt? Gibts zu den Kernel-Modulen für iptables eine Beschreibung, aus der ich mir das selbst erarbeiten könnte?
 
Zuletzt bearbeitet:
Hallo,

ich glaube, daß da das Modul nf_nat fehlt ... welches notwendig für beispielsweise ipt_REDIRECT ist.
Hast Du mal hier geguckt ?
 
eine nf_nat.ko oder ähnliches hab ich leider nicht, siehe oben.
 
Dann mußt Du den versuchen, den Kernel zu ersetzen und nf_nat mit zu bauen.
 
@JohnDoe42 Genau das widerspricht meinem Vorhaben. Lies bitte mal das 1. Posting.
Auf der Box will ich nur debug.cfg verändern. Der Rest läuft von USB-Stick. Kernel austauschen fällt damit flach.
 
Nicht alles, was man sich wünscht, geht auch ;-)
Ob du Kernel-Module laden kannst, ohne einen neuen Kernel gebaut zu haben, ist nicht immer sicher.
Es kann gut sein, dass du ohne eigenen Kernel kein nat machen kannst. Aber: Versuch macht kluch.
 
Ich hab mal die 1. Zeile bei Ubuntu jetzt ausprobiert. Interessanterweise werden die Kernel-Module anscheinend erst geladen, wenn iptables tatsächlich verwendet wird. Das Ergebnis sieht wie folgt aus:

Code:
xt_REDIRECT            12636  1 
xt_tcpudp              12603  1 
iptable_nat            12810  1 
nf_conntrack_ipv4      14487  1 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
nf_nat_ipv4            13263  1 iptable_nat
nf_nat                 25866  3 nf_nat_ipv4,xt_REDIRECT,iptable_nat
nf_conntrack           83275  4 nf_nat,nf_nat_ipv4,iptable_nat,nf_conntrack_ipv4
ip_tables              26995  1 iptable_nat
x_tables               29803  3 ip_tables,xt_tcpudp,xt_REDIRECT

Könnt ihr mir sagen, wie das bei Freetz läuft? Ich habe die Vermutung, dass viele davon in den Kernel hinein kompiliert werden. Ich hätte sie aber gerne als Modul. Könnt ihr mir da weiterhelfen?
Nächstes Problemchen: anscheinend brauche ich 10 Module. Was hat es mit dieser Warnung auf sich, dass nur 50 beim Standard-Kernel geladen werden können?
Danke schon mal vorweg.

Ergänzung:
Ich hab gerade etwas interessantes gefunden: http://freetz.org/ticket/1605
Wenn ich das richtig verstehe, ist damit iptables auf der Fritzbox auf absehbare Zeit gestorben, außer man deaktiviert avm_pa.ko und verschlechtert damit die Performance.
Trotzdem danke und ich wünsch euch noch ein frohes Fest morgen!
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.