J'ai un serveur Ubuntu 16.04 qui agit comme un routeur avec plusieurs interfaces (VLAN). Par défaut, rp_filter
(filtrage de chemin inverse) est activé pour toutes les interfaces. Je veux que cela reste ainsi, mais faites une exception pour exactement une interface. (Les paquets provenant de cette interface doivent avoir une adresse IP source qui ne correspond à aucune adresse de destination de routage de cette interface.)
Disons que cette interface a le nom ens20.4
, son vlan-raw-device est ens20
, et l'interface de destination (pour tester le flux de paquets) est nommée ens20.2
(bien qu'elle devrait fonctionner pour n'importe quelle interface de destination).
J'ai essayé de définir la rp_filter
propriété pour ens20.4
seulement, sans succès:
echo 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter
Donc, à des fins de test, j'ai également désactivé rp_filter
le périphérique vlan-raw et l'interface de destination de test:
echo 0 > /proc/sys/net/ipv4/conf/ens20/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ens20.2/rp_filter
Toujours sans succès, les paquets avec une adresse IP source "usurpée" sont toujours abandonnés. Seulement si je désactive rp_filter
pour toutes les interfaces, les paquets passer à travers:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
Cependant, je veux toujours conserver le filtrage de chemin inverse pour toutes les autres interfaces - qu'est-ce qui me manque?
Réponses:
Infos ici: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/Documentation/networking/ip-sysctl.txt?h=v4.9#n1090
Notez la dernière phrase qui expliquerait vos tentatives:
Cela devrait donc fonctionner:
Maintenant max (conf / {all, ens20.4} / rp_filter == 0: pas de validation de la source. Vérifiez simplement que les autres interfaces sont toujours protégées.
Vous pouvez également vérifier le rpf "lâche" avec la valeur 2. Dans le cas où le paquet devrait normalement être routé par une autre interface, ce serait mieux que pas de validation.
la source