[iptables] nfs montage client refusé en wifi

Applications, problèmes de configuration réseau
Avatar de l’utilisateur
jeViens2Debian
Hankyu
Messages : 45
Inscription : mer. 05 mai 2021, 19:51

[iptables] nfs montage client refusé en wifi

Message par jeViens2Debian »

Bonjour,
situation : Deux ordinateurs connectés à une box.
Un ordinateur fixe avec un serveur nfs, iptables acceptent toutes les chaînes, le client est monté avec autofs, câblé par Ethernet, adresse 192.168.1.63
Un ordinateur portable avec un client nfs, se connecte soit avec Ethernet soit en Wifi, adresse 192.168.1.83, iptables configurées d'après https://wiki.archlinux.org/title/Simple ... le_machine et modifié pour accepter les paquets entrant avec eth0 (enp1s0) et les paquets entrant avec les protocoles UDP et TCP sur les ports 111 et 2049 pour NFS
iptables.rules

Code : Tout sélectionner

# Generated by iptables-save v1.8.7 on Sun May 16 19:02:34 2021
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [328:42992]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i enp1s0 -j ACCEPT
-A INPUT -p ipv6 -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 80 -j ACCEPT
-A TCP -p tcp -m tcp --dport 443 -j ACCEPT
-A TCP -p tcp -m tcp --dport 8000 -j ACCEPT
-A TCP -p tcp -m tcp --dport 111 -j ACCEPT
-A TCP -p tcp -m tcp --dport 2049 -j ACCEPT
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
-A TCP -p tcp -m tcp --dport 53 -j ACCEPT
-A UDP -p udp -m udp --dport 111 -j ACCEPT
-A UDP -p udp -m udp --dport 2049 -j ACCEPT
-A UDP -p udp -m udp --dport 53 -j ACCEPT
COMMIT
# Completed on Sun May 16 19:02:34 2021
#iptables -L

Code : Tout sélectionner

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     ipv6 --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request ctstate NEW
UDP        udp  --  anywhere             anywhere             ctstate NEW
TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset
REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain TCP (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:irdmi
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:sunrpc
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:shilp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain

Chain UDP (1 references)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:sunrpc
ACCEPT     udp  --  anywhere             anywhere             udp dpt:shilp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
Problème :
Donc si je connecte le portable à la box avec un câble Ethernet, il est bien monté comme client sur le serveur.
Mais en Wifi le serveur retourne ce message :

Code : Tout sélectionner

$showmount -e 192.168.1.83
rpc mount export: RPC: Unable to receive; errno = Connection refused
J'ai lu quelque part que la sortie de rpcinfo pouvait être intéressante

Code : Tout sélectionner

sudo rpcinfo -p 192.168.1.83
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100024    1   udp  57286  status
    100024    1   tcp  47175  status
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049
    100021    1   udp  39058  nlockmgr
    100021    3   udp  39058  nlockmgr
    100021    4   udp  39058  nlockmgr
    100021    1   tcp  33933  nlockmgr
    100021    3   tcp  33933  nlockmgr
    100021    4   tcp  33933  nlockmgr
hypothèse, les règles iptables sur le portable acceptent toutes les connexions quand il est câblé par Ethernet -A INPUT -i enp1s0 -j ACCEPT, donc ce n'est pas un problème lié au serveur. À ce niveau je pourrais même me passer des règles liées aux ports NFS ?
Elles bloquent la demande de connexion du serveur sur la chaîne INPUT quand il est connecté en Wifi.
Il y aurait une erreur sur les lignes suivantes ...
-A TCP -p tcp -m tcp --dport 111 -j ACCEPT
-A TCP -p tcp -m tcp --dport 2049 -j ACCEPT
-A UDP -p udp -m udp --dport 111 -j ACCEPT
-A UDP -p udp -m udp --dport 2049 -j ACCEPT
ou bien il manque des règles pour ouvrir les ports aux services mountd, nlockmgr, status ?

ou bien les règles relatives à l'état sont trop strictes sur les lignes.
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
Cette dernière ligne est le résultat de la commande :
# iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP

Voici comment je comprends le tutoriel (lien ci dessus).
Maintenant nous allons attacher les chaînes TCP et UDP à la chaîne INPUT pour gérer les nouvelles connexions entrantes. Une fois que la connexion est acceptée elle est gérée par les règles RELATED/ESTABLISHED (qui acceptent la cible). Les chaînes TCP et UDP vont soit accepter les nouvelles connexions entrantes, soit les rejeter poliment (ça veut dire qu'on peut en trouver une trace ?). Et après je n'y comprends rien :
New TCP connections must be started with SYN packets.
Note: NEW but not SYN is the only invalid TCP flag not covered by the INVALID state. This is because they are rarely malicious packets and should not just be dropped. Instead, they are simply rejected with a TCP RESET by the next rule.

Code : Tout sélectionner

# iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
Est ce quelqu'un peut m'aider à y voir plus clair ?
Question subsidiaire, peut on modifier directement le fichier iptables.rules ou est il plus correct d'utiliser les options de iptables -R/-I/-D en ligne de commande ?
J'ai essayé d'être le plus complet possible, merci de m'avoir lu.
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1194
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [iptables] nfs montage client refusé en wifi

Message par karhu »

Bonjour
As tu regardé le wiki nfs ?
J'utilise cette méthode qui fonctionne parfaitement en wifi et/ou filaire et sans avoir eu besoin de toucher à iptable.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
jeViens2Debian
Hankyu
Messages : 45
Inscription : mer. 05 mai 2021, 19:51

Re: [iptables] nfs montage client refusé en wifi

Message par jeViens2Debian »

Merci pour la réponse.
Je ne comprends pas pourquoi le montage avec fstab changera quelque chose ay refus d'accès avec la connexion wifi alors que ça fonctionne avec eth0 ?
Avatar de l’utilisateur
jeViens2Debian
Hankyu
Messages : 45
Inscription : mer. 05 mai 2021, 19:51

Re: [iptables] nfs montage client refusé en wifi (résolu)

Message par jeViens2Debian »

Voici la solution
#iptables -t filter -I INPUT numérodelaregleaudessusdelaquellejeveuxinsererunenouvelleregle -s adresseIPduserverNFS -j ACCEPT
Donc dans mon cas il fallait placer au-dessus de l'autorisation pour l'interface eth0 une règle pour accepter tout ce qui vient (-s) de l'IP du serveur

pour connaître le numéro de ligne de la chaîne INPUT
#iptables -L INPUT -nv --line-numbers

sauvegarder et redémarrer iptables
Cela me conforte dans l'idée que poster sur un forum renforce la compréhension d'un problème, puis passer une bonne nuit et bien sûr :rtfm2:
merci aux rédacteurs des wiki fr et en
Répondre