GNU/Linux >> LINUX-Kenntnisse >  >> Linux

IPTables-Modul ip_tables für root nicht gefunden

1) „iptables“ ist die Userland-Anwendung, die sich mit dem ip_tables-Kernelmodul befasst. Anscheinend haben Sie bereits /bin/iptables, aber Ihr Kernel hat ip_tables.ko nicht eingeschlossen/geladen

2) Wenn Ihr Kernel ip_tables nicht unterstützt, hat Ihre Distribution es möglicherweise als ladbares Kernelmodul unter:

/lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_tables.ko 

wobei uname -r ist die Kernel-Version, also 3.5.0-18-generic

Wenn Sie ip_tables.ko finden, können Sie es versuchen

#depmod
#modprobe ip_tables

oder

#insmod /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_tables.ko 

Abhängig davon, ob Ihre Distribution echte depmod/modprobe/insmod-Apps enthält oder die von busybox implementierten, könnten Sie auf einige zusätzliche Probleme stoßen, wie z

3) wenn ip_tables.ko nicht verfügbar ist, müssen Sie entweder den Kernel mit ip_table-Unterstützung oder als extern ladbares Modul neu erstellen. Im letzten Fall gehen Sie nach dem Erstellen von ip_tables.ko zurück zu 2).


TL;DR

  • Aktualisieren Sie Ihren Kernel:sudo pacman -S linux

  • Aktualisieren Sie Ihren Bootloader:bootctl --path=/boot install

  • Neustart

Heute morgen bin ich auf dasselbe Problem gestoßen, als ich versuchte, iptables zu konfigurieren:

[[email protected] /]# iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE
iptables v1.6.0: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Ich verwende die iptables-Version:

[[email protected] /]# pacman -Q iptables
iptables 1.6.0-1

Was ist passiert?

Existiert das Kernelmodul ip_tables tatsächlich?

[[email protected] /]# /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_tables.ko
bash: /lib/modules/4.8.13-1-ARCH/kernel/net/ipv4/netfilter/ip_tables.ko: No such file or directory

[[email protected] /]# modprobe ip_tables
modprobe: FATAL: Module ip_tables not found in directory /lib/modules/4.8.13-1-ARCH

hmmm .... Scheint verschwunden zu sein! Finden wir es heraus:1. Welchen Kernel verwendet mein Computer?2. Unterstützt es iptables?

[[email protected] /]# uname -r
4.8.13-1-ARCH

[[email protected] /]# cat /proc/sys/kernel/osrelease
4.8.13-1-ARCH

[[email protected] /]# zgrep IPTABLES /proc/config.gz
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP6_NF_IPTABLES=m

Ok .... Das ist seltsam, weil es ein Standard-Arch-Linux-Kernel ist und iptables unterstützt.

Lassen Sie uns einen Blick darauf werfen, ob Netfilter-Module verfügbar sind (ich wäre sehr überrascht, wenn es keine gäbe, weil es sehr unwahrscheinlich ist, dass irgendetwas sie löschen würde):

[[email protected] /]# ls /lib/modules/*/kernel/net/*/netfilter/
/lib/modules/4.9.11-1-ARCH/kernel/net/bridge/netfilter/:
ebt_802_3.ko.gz       ebtables.ko.gz      ebt_dnat.ko.gz   ebt_log.ko.gz     ebt_pkttype.ko.gz   ebt_vlan.ko.gz      nft_reject_bridge.ko.gz
ebtable_broute.ko.gz  ebt_among.ko.gz     ebt_ip6.ko.gz    ebt_mark.ko.gz    ebt_redirect.ko.gz  nf_log_bridge.ko.gz
ebtable_filter.ko.gz  ebt_arp.ko.gz   ebt_ip.ko.gz     ebt_mark_m.ko.gz  ebt_snat.ko.gz  nf_tables_bridge.ko.gz
ebtable_nat.ko.gz     ebt_arpreply.ko.gz  ebt_limit.ko.gz  ebt_nflog.ko.gz   ebt_stp.ko.gz   nft_meta_bridge.ko.gz

/lib/modules/4.9.11-1-ARCH/kernel/net/ipv4/netfilter/:
arptable_filter.ko.gz   ip_tables.ko.gz       nf_conntrack_ipv4.ko.gz       nf_nat_pptp.ko.gz       nft_dup_ipv4.ko.gz
arp_tables.ko.gz    ipt_ah.ko.gz          nf_defrag_ipv4.ko.gz      nf_nat_proto_gre.ko.gz  nft_masq_ipv4.ko.gz
arpt_mangle.ko.gz   ipt_CLUSTERIP.ko.gz   nf_dup_ipv4.ko.gz         nf_nat_snmp_basic.ko.gz nft_redir_ipv4.ko.gz
iptable_filter.ko.gz    ipt_ECN.ko.gz         nf_log_arp.ko.gz          nf_reject_ipv4.ko.gz    nft_reject_ipv4.ko.gz
iptable_mangle.ko.gz    ipt_MASQUERADE.ko.gz  nf_log_ipv4.ko.gz         nf_tables_arp.ko.gz
iptable_nat.ko.gz   ipt_REJECT.ko.gz      nf_nat_h323.ko.gz         nf_tables_ipv4.ko.gz
iptable_raw.ko.gz   ipt_rpfilter.ko.gz    nf_nat_ipv4.ko.gz         nft_chain_nat_ipv4.ko.gz
iptable_security.ko.gz  ipt_SYNPROXY.ko.gz    nf_nat_masquerade_ipv4.ko.gz  nft_chain_route_ipv4.ko.gz

/lib/modules/4.9.11-1-ARCH/kernel/net/ipv6/netfilter/:
ip6table_filter.ko.gz    ip6t_ah.ko.gz      ip6t_mh.ko.gz        nf_conntrack_ipv6.ko.gz       nf_reject_ipv6.ko.gz        nft_redir_ipv6.ko.gz
ip6table_mangle.ko.gz    ip6t_eui64.ko.gz   ip6t_NPT.ko.gz       nf_defrag_ipv6.ko.gz      nf_tables_ipv6.ko.gz        nft_reject_ipv6.ko.gz
ip6table_nat.ko.gz   ip6t_frag.ko.gz    ip6t_REJECT.ko.gz    nf_dup_ipv6.ko.gz         nft_chain_nat_ipv6.ko.gz
ip6table_raw.ko.gz   ip6t_hbh.ko.gz     ip6t_rpfilter.ko.gz  nf_log_ipv6.ko.gz         nft_chain_route_ipv6.ko.gz
ip6table_security.ko.gz  ip6t_ipv6header.ko.gz  ip6t_rt.ko.gz        nf_nat_ipv6.ko.gz         nft_dup_ipv6.ko.gz
ip6_tables.ko.gz     ip6t_MASQUERADE.ko.gz  ip6t_SYNPROXY.ko.gz  nf_nat_masquerade_ipv6.ko.gz  nft_masq_ipv6.ko.gz

Hier gibt es also einen Hinweis; Anscheinend habe ich eine Kernel-Nichtübereinstimmung (es gibt Kernel-Module für die Kernel-Version:/lib/modules/4.9.11-1, die nicht mit dem Kernel übereinstimmt, der auf meinem Computer ausgeführt wird - 4.9.13-1). Lassen Sie uns also prüfen, ob für den Kernel, der auf meiner Maschine läuft, Module verfügbar sind:

[[email protected] /]# ls /lib/modules/4.8.13-1-ARCH
ls: cannot access '/lib/modules/4.8.13-1-ARCH': No such file or directory

Nö! Dies ist also höchstwahrscheinlich die Hauptursache des Problems; der Kernel, der auf meiner Maschine läuft, hat keine ladbaren Module (nicht gut). Versuchen wir es zu beheben, indem wir den Kernel aktualisieren (in meinem Fall downgraden), da ich den Standard-Arch-Linux-Kernel verwende, der unter Pacman-Versionskontrolle steht, kann ich einfach Pacman ausführen, um ihn zu aktualisieren (wenn Sie einen benutzerdefinierten Kernel verwenden). ein Problem, das Sie lösen können):

[[email protected] /]# sudo pacman -S linux
...
Packages (1) linux-4.9.11-1
...

Groß! pacman installiert Kernel 4.9.11-1, den ich will (ich habe Module für diesen Kernel - ich habe keine Ahnung, wie ich Kernel 4.9.13 bekommen habe). Lassen Sie Pacman die Installation abschließen.

Schließlich muss ich sicherstellen, dass dieser Kernel beim Booten der Maschine verwendet wird. Also muss ich den Boot-Manager aktualisieren (ich verwende systemd-boot). - Ich habe eine Boot-Partition, die in /boot gemountet ist. - Löschen Sie die Datei loader.conf:/boot/loader/loader.conf (sie wird aktualisiert wenn bootctl unten ausgeführt wird und bootctl es nicht aktualisiert, wenn es bereits vorhanden ist)- Führen Sie bootctl aus, um den Bootmanager zu aktualisieren:

[[email protected] /]$ bootctl --path=/boot install

Starten Sie jetzt den Computer neu.... Wenn er neu startet, sollte er den neuen (heruntergestuften) Kernel verwenden!

Sobald es hochgefahren ist und Sie sich angemeldet haben, überprüfen Sie die Kernel-Version, um sicherzustellen, dass der richtige Kernel ausgeführt wird:

[[email protected] /]$ uname -r
4.9.11-1-ARCH

Versuchen Sie nun, den ursprünglichen Befehl auszuführen (um die Internetfreigabe von iptables einzurichten)

[[email protected] /]$ sudo iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE
[[email protected] /]$ sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[[email protected] /]$ sudo iptables -A FORWARD -i enp0s20f0u4u3 -o enp0s31f6 -j ACCEPT

Woo-hoo Problem behoben! (Beachten Sie, dass ich mich als Root-Benutzer angemeldet habe, um dieses Problem zu beheben - ich würde dies nicht empfehlen, es sei denn, Sie sind sicher, dass Sie wissen, was Sie tun!)


Linux
  1. id:Befehl nicht gefunden

  2. w:Befehl nicht gefunden

  3. df:Befehl nicht gefunden

  4. du:Befehl nicht gefunden

  5. rm:Befehl nicht gefunden

Modul Wl nicht gefunden [ubuntu 16.04.1]?

nc:Befehl nicht gefunden

iptables:Befehl nicht gefunden

aws-shell:Befehl nicht gefunden

Modul nicht gefunden, wenn ich eine Modprobe mache

root-Passwort funktioniert nicht für su im Terminal