ip6tables problème de table

Bonsoir,

J’ai apparemment un soucis de tables avec ip6tables.
En effet, concernant les tables ‘nat’, ‘mangle’ et ‘raw’, j’ai le droit à ces messages (affreux ?!) :

ip6tables v1.4.21: can’t initialize ip6tables table nat': Table does not exist (do you need to insmod?) ip6tables v1.4.21: can't initialize ip6tables tablemangle’: Table does not exist (do you need to insmod?)
ip6tables v1.4.21: can’t initialize ip6tables table `raw’: Table does not exist (do you need to insmod?)

Une idée ?

Un coup de lsmod pour vérifier les modules montés :

 $ lsmod | grep "ip6table"
ip6table_filter        16384  1 
ip6_tables             28672  1 ip6table_filter
x_tables               36864  17 ip6table_filter,xt_length,xt_comment,xt_recent,ip_tables,xt_tcpudp,xt_string,xt_limit,xt_conntrack,xt_LOG,xt_mac,xt_multiport,iptable_filter,ipt_REJECT,iptable_mangle,ip6_tables,iptable_raw

Bizarre, le manpage informe :

Bref, que normalement, ip6tables gérent nativement ces tables, en question ?
Que m’échappe-t-il ?

Mon kernel :

$ uname -a
Linux siou 3.19.0-56-generic #62~14.04.1-Ubuntu SMP Fri Mar 11 11:03:15 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

A mon avis, il manque le module nf_nat_ipv6 (pour la table nat) et éventuellement quelques autres.

Une partie d’iptables et ip6tables réside dans le noyau au sein de l’infrastructure appelée “netfilter”, compilée en dur ou sous forme de modules.

Il faut vérifier si ce noyau a été compilé avec les tables autres que filter pour ip6tables. Si un fichier /boot/config-3.19.0-56-generic est présent, vérifier s’il contient les options suivantes avec =m ou =y (en supposant que ça n’a pas changé depuis le noyau 3.16) :
CONFIG_IP6_NF_MANGLE=m CONFIG_IP6_NF_RAW=m CONFIG_IP6_NF_SECURITY=m CONFIG_NF_NAT_IPV6=m

Sinon, recherche les modules (en supposant toujours que ça n’a pas changé)
find /lib/modules/3.19.0-56-generic/ -name "ip6table_*"

Afficher les tables actives au cas où des tables seraient compilées en dur et non en module :
cat /proc/net/ip6_tables_names

1 J'aime

Ahhh, Pascal: merci

Donc, pour récapituler :

$ grep -i iptables /boot/config-`uname -r`
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP6_NF_IPTABLES=m

$ grep -i ip6 /boot/config-`uname -r`
CONFIG_IPV6_MIP6=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_RPFILTER=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_TARGET_SYNPROXY=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
CONFIG_IP6_NF_SECURITY=m
CONFIG_IP6_NF_NAT=m
CONFIG_IP6_NF_TARGET_MASQUERADE=m
CONFIG_IP6_NF_TARGET_NPT=m
CONFIG_BRIDGE_EBT_IP6=m
CONFIG_SLIP_MODE_SLIP6=y

$ grep -i ipv6 /boot/config-`uname -r`
CONFIG_IPV6=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
# CONFIG_IPV6_OPTIMISTIC_DAD is not set
CONFIG_IPV6_MIP6=m
CONFIG_IPV6_VTI=m
CONFIG_IPV6_SIT=m
CONFIG_IPV6_SIT_6RD=y
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_GRE=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
CONFIG_IPV6_PIMSM_V2=y
CONFIG_IP_VS_IPV6=y

# IPv6: Netfilter Configuration
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_NF_NAT_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NF_NAT_MASQUERADE_IPV6=m
CONFIG_NFT_MASQ_IPV6=m
CONFIG_NFT_REDIR_IPV6=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m

$ find /lib/modules/$(uname -r) -name "ip6table*"
/lib/modules/3.19.0-56-generic/kernel/net/ipv6/netfilter/ip6table_raw.ko
/lib/modules/3.19.0-56-generic/kernel/net/ipv6/netfilter/ip6table_nat.ko
/lib/modules/3.19.0-56-generic/kernel/net/ipv6/netfilter/ip6table_filter.ko
/lib/modules/3.19.0-56-generic/kernel/net/ipv6/netfilter/ip6table_security.ko
/lib/modules/3.19.0-56-generic/kernel/net/ipv6/netfilter/ip6table_mangle.ko

Bon, on remarque que les tables en question sont bien configurées en module du noyau, et qu’ils existent bien. Je suppose que je n’ai plus qu’à chercher à les monter :wink:


Bon, maintenant faut que je me souvienne comment monter un module au démarrage !
(oui, le chargement des modules est bloqué ! Il ne se fait qu’au boot)

Comment ça, le chargement des modules est bloqué ? Est-ce volontaire ?

Dans Debian on peut mettre les modules à charger au démarrage dans le fichier /etc/modules.

Oui, oui, absolument !
À coup de ‘sysctl -w kernel.modules_disabled=1’ dans le bon fichier en question …
(cf : http://blog.stephane-huc.net/post/Kernel-modules_disabled)

Et, oui, je sais où les charger … je te remercie, sincèrement, du rappel - j’ai vite retrouvé :stuck_out_tongue:
Sous *Buntu, c’est exactement pareil, d’ailleurs :wink:

Bon, maintenant, je pense ne pas me tromper concernant les modules à charger, n’est-ce pas ? :

  • ip6table_mangle
  • ip6table_nat
  • ip6table_raw
  • ip6table_security (oui ?)
  • nf_nat_ipv6 (réel besoin, puisque juste serveur, et non pas gw ou routeur ?!)
  • nf_log_ipv6
  • nf_reject_ipv6
  • nf_conntrack_ipv6
  • nf_defrag_ipv6
  • nf_tables_ipv6
  • nf_nat_masquerade (normalement pas besoin ?!)

autres ?

Franchement, je n’en sais rien. Quand je compile un noyau j’active toutes les options de netfilter et quand je crée les règles je laisse iptables charger les modules nécessaires. En plus ça peut changer selon les versions de noyau. Tu peux désactiver la protection temporairement pour que les modules se chargent et tu pourras voir la liste des modules chargés.

Ou alors, si tu n’utilises que la table filter, tu peux juste supprimer toute référence aux autres tables dans ton script/jeu de règles.

OK, je vais monter une VM, histoire de voir comment ça réagit.
Après je reviens, et je mettrais les résultats.

Je te remercie quand même :stuck_out_tongue: