IP-таблицы модуля IPTables не найдены для root

мы получили пользовательский дистрибутив Linux от поставщика, который не поставляется с включенными iptables.

root@xxxx:~# iptables -L
modprobe: FATAL: Module ip_tables not found.
iptables v1.4.21: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Я также пытался использовать modprobe, но не нашел, а также найти команду также ничего не нашел.

# modprobe ip_tables
modprobe: FATAL: Module ip_tables not found.
# find / -name "ip_tables*"
# 

можно ли скомпилировать netfilter и iptables и интегрировать их? Я попытался скомпилировать все ядро, но из-за неизвестного фактора некоторые функции не работают. Поэтому мне нужно собрать их как модуль ядра и интегрировать его с нашим существующим пользовательское распространение.

29
задан Gopi
29.11.2022 18:09 Количество просмотров материала 2937
Распечатать страницу

2 ответа

1)" iptables " - это приложение userland, которое имеет дело с модулем ядра ip_tables. Кажется, у вас уже есть /bin/iptables, но ваше ядро не включило / loaded ip_tables.ko

2) Если ваше ядро не поддерживает ip_tables, ваш дистрибутив может быть включен в качестве загружаемого модуля ядра по адресу:

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

здесь uname -r является версией ядра, т. е. 3.5.0-18-generic

если вы найдете ip_tables.ко вы можете попробовать

#depmod
#modprobe ip_tables

или

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

в зависимости от того, если ваш дистрибутив включает в себя реальные depmod/команды modprobe/insmod приложения или те, осуществляемых busybox и вы можете нарваться на некоторые дополнительные вопросы, как относительно проблемы, пути или сжатое ядро модули не правильно обрабатываются в зависимости от версию busybox.

3) Если ip_tables.ko недоступен вам необходимо перестроить ядро с поддержкой ip_table или как внешний загружаемый модуль. В последнем случае после создания ip_tables.ко вернуться к 2).

5
отвечен Pat 2022-12-01 01:57

TL; DR

  • обновление ядра: sudo pacman -S linux

  • обновление загрузчика: bootctl --path=/boot install

  • перезагрузка

сегодня утром я столкнулся с той же проблемой при попытке настроить iptables:

[root@office-pc /]# 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.

я использую версию iptables:

[root@office-pc /]# pacman -Q iptables
iptables 1.6.0-1

что случилось?

действительно ли модуль ядра ip_tables существует?

[root@office-pc /]# /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

[root@office-pc /]# modprobe ip_tables
modprobe: FATAL: Module ip_tables not found in directory /lib/modules/4.8.13-1-ARCH

хммм.... Кажется, она исчезла! Позволяет узнать: 1. Какое ядро использует мой компьютер? 2. Поддерживает ли он iptables?

[root@office-pc /]# uname -r
4.8.13-1-ARCH

[root@office-pc /]# cat /proc/sys/kernel/osrelease
4.8.13-1-ARCH

[root@office-pc /]# zgrep IPTABLES /proc/config.gz
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP6_NF_IPTABLES=m

Ok.... Это странно, потому что это стандартное ядро Arch Linux, и оно поддерживает iptables.

давайте посмотрим, есть ли доступные модули netfilter (я был бы очень удивлен, если бы их не было, потому что очень маловероятно, что что-то их удалит):

[root@office-pc /]# 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

так и есть подсказка здесь; похоже, у меня есть несоответствие ядра (есть модули ядра для версии ядра: / lib/modules / 4.9.11-1, которые не соответствуют ядру, запущенному на моем компьютере - 4.9.13-1). Итак, давайте проверим, есть ли какие-либо модули, доступные для ядра, работающего на моей машине:

[root@office-pc /]# ls /lib/modules/4.8.13-1-ARCH
ls: cannot access '/lib/modules/4.8.13-1-ARCH': No such file or directory

Неа! Так что это, скорее всего, является основной причиной проблемы; ядро, работающее на моей машине, не имеет загружаемых модулей (не очень хорошо). Давайте попробуем исправить это, обновив (в моем потому что я использую стандартное ядро Arch Linux, которое находится под контролем pacman version control, я могу просто запустить pacman, чтобы обновить его (если вы используете пользовательское ядро, это проблема, которую вы сможете решить):

[root@office-pc /]# sudo pacman -S linux
...
Packages (1) linux-4.9.11-1
...

великолепно! pacman установит ядро 4.9.11-1, которое я хочу (у меня есть модули для этого ядра-я понятия не имею, как я получил ядро 4.9.13). Дайте пакману завершить установку.

наконец, мне нужно сделать конечно, это ядро будет использоваться при загрузке машины. Поэтому мне нужно обновить менеджер загрузки (я использую systemd-boot). - У меня есть загрузочный раздел, который монтируется в /boot - Удалите загрузчик.conf-файл: / boot / loader / loader.conf (он будет обновлен при запуске bootctl ниже, и bootctl не будет обновлять его, если он уже существует) - Запустите bootctl для обновления менеджера загрузки:

[root@office-pc /]$ bootctl --path=/boot install

Теперь перезагрузите компьютер.... Когда он перезагружается, он должен использовать новый (пониженный) Кернел!

после загрузки и входа в систему проверьте версию ядра, чтобы убедиться, что ядро работает правильно:

[matt@office-pc /]$ uname -r
4.9.11-1-ARCH

теперь попробуйте запустить оригинальную команду (для установки iptables Internet sharing)

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

ву-ху проблема исправлена! (обратите внимание, я вошел в систему как пользователь root, чтобы исправить эту проблему - я бы не рекомендовал делать это, если вы не уверены, вы знаете, что вы делаете!)

3
отвечен Matt Conway 2022-12-01 04:14

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх