Anomalie #7102
ICMPProtocol object has no attribute dport
Description
Bonjour,
sur un amon 2.3.11 , on ne peut plus autoriser le ping avec du DNAT
( source: 0.0.0.0 , dest: dmz_alias to: dmz_ip - nouveau port: 0, groupe gr_ping )
[ OK ]
* Starting firewall: bastion (modèle "5zones-essl")
#--------------------------------------------------
Attention, erreur de coherence des directives Era
'ICMPProtocol' object has no attribute 'dport'
#--------------------------------------------------
/usr/lib/pymodules/python2.6/Cheetah/Compiler.py:1577: UserWarning: You supplied an empty string for the source!
warnings.warn("You supplied an empty string for the source!", )
Ce serait lié à l'Anomalie #5491 ?
Associated revisions
icmp dans le cadre du DNAT, fixes #7102
History
#1 Updated by Emmanuel GARETTE over 9 years ago
Que voulez faire exactement ?
Si on ping le serveur A, les pings sont redirigés vers le serveur B ?
Quel est l'intérêt ?
#2 Updated by Philippe Carre over 9 years ago
Test de base, rien de plus. Effectivement pour pinger un serveur de la DMZ, depuis n'importe quel poste.
Je reconnais que ça a pas un grand intéret...
N'empeche, on pouvait le faire avec les anciennes versions. Maintenant, cette directive empeche la création du fichier des règles iptables.
#3 Updated by Thierry Bertrand over 9 years ago
L'intérêt dépend du contexte :
soit un lan séparé du wan par un amon
Le tout dans un adressage privé.
Sur l'amon, on rajoute une zone dédiée à une box Internet dans un adressage non routé intranet
Si on veut faire du traffic vers Internet via la box => nécessite du nat sinon pas de retour.
ICMP est juste là pour les diagnotics.
#4 Updated by Fabrice Barconnière over 9 years ago
- Status changed from Nouveau to A étudier
- Target version set to Mises à jour 2.3.13
#5 Updated by Daniel Dehennin over 9 years ago
- Due date set to 05/16/2014
#6 Updated by Daniel Dehennin over 9 years ago
Je présume qu’il n’y a pas besoin de gérer --icmp-type
?
root@amon:~# iptables -p icmp -h iptables v1.4.4 [...] icmp match options: [!] --icmp-type typename match icmp type [!] --icmp-type type[/code] (or numeric type or type/code) Valid ICMP Types: any echo-reply (pong) destination-unreachable network-unreachable host-unreachable protocol-unreachable port-unreachable fragmentation-needed source-route-failed network-unknown host-unknown network-prohibited host-prohibited TOS-network-unreachable TOS-host-unreachable communication-prohibited host-precedence-violation precedence-cutoff source-quench redirect network-redirect host-redirect TOS-network-redirect TOS-host-redirect echo-request (ping) router-advertisement router-solicitation time-exceeded (ttl-exceeded) ttl-zero-during-transit ttl-zero-during-reassembly parameter-problem ip-header-bad required-option-missing timestamp-request timestamp-reply address-mask-request address-mask-reply
#7 Updated by Daniel Dehennin over 9 years ago
- Status changed from A étudier to Accepté
- Assigned To set to Gwenael Remond
- Start date set to 05/13/2014
#8 Updated by Jean-Marc MELET over 9 years ago
Autre cas de figure:
Sur un amonhorus, si on ajoute une zone pour le réseau pédagogique et que l'on veuille autoriser le ping du conteneur fichier depuis le péda. Je ne suis jamais parvenu à communiquer vers l'ip link d'un conteneur à partir d'une zone qui n'est pas sur le même réseau local que cette ip link de ce conteneur. Du coup pour y parvenir j'ai du creer les regles suivantes (10.4.201.6 est l'ip link du conteneur fichier):
iptables -t nat -I PREROUTING -i eth2 -d 10.4.201.6 -p icmp -m state --state NEW -m icmp --icmp-type 8 -j DNAT --to-destination 192.0.2.52 iptables -A FORWARD -i eth2 -o br0 -d 192.0.2.52 -p icmp -m state --state NEW -m icmp --icmp-type 8 -j ACCEPT
Si on essaie de le faire par une directive dans era on tombe sur le message d'erreur
Cependant j'ai l'impression que cela n'est pas uniquement lié à du DNAT. Je prend un autre exemple:
Toujours sur amonecole, je veux créer une regle qui autorise juste le ping depuis le réseau admin vers l'ip eth1 (je sais à priori c'est inutile car cela fonctionne déja, mais c'est pour le principe). Si je crée une extrémité sur la zone bastion ayant comme valeur %%adresse_ip_eth1 (je sais il faut choisir l'extrémité "bastion" qui est prévu à cet effet mais là encore c'est pour le principe) et que je crée une directive qui autorise echo-request depuis la zone admin entière vers cette adresse j'ai également ce message d'erreur (alors que je n'en ai pas si je fais la même chose avec un autre service, par exemple autoriser le port 53 depuis la zone admin entière vers cette extrémité)
En espérant que cela puisse aider
#9 Updated by Gwenael Remond over 9 years ago
- Status changed from Accepté to Résolu
- % Done changed from 0 to 100
Appliqué par commit 11a647fc4c4bd498755280b1730db3fa9c17eaaa.
#10 Updated by Benjamin Bohard over 9 years ago
- Status changed from Résolu to Fermé
Deux directives testées : icmp-request et icmp-reply en dnat
<directive service="echo-request" priority="1" action="8" attrs="0" nat_extr="admin" nat_port="0" src_inv="0" dest_inv="0" serv_inv="0" libelle="titi" ipsec="0" accept="0"> <source name="exterieur"/> <destination name="admin"/> </directive> <directive service="echo-reply" priority="2" action="8" attrs="0" mark_operator="None" mark_value="" nat_extr="admin" nat_port="0" src_inv="0" dest_inv="0" serv_inv="0" libelle="titi-reply" ipsec="0" accept="0"> <source name="exterieur"/> <destination name="admin"/> </directive>
les règles sont bien créées par le compilateur :
### titi /sbin/iptables -t nat -A PREROUTING -p icmp --icmp-type echo-request -i eth0 -s 0/0 -d 0/0 -j DNAT --to-destination 10.98.0.1 ### titi-reply /sbin/iptables -t nat -A PREROUTING -p icmp --icmp-type echo-reply -i eth0 -s 0/0 -d 0/0 -j DNAT --to-destination 10.98.0.1 /sbin/iptables -t filter -A ext-adm -p icmp --icmp-type echo-request -i eth0 -o eth1 -s 0/0 -d 10.98.0.1 -j ACCEPT /sbin/iptables -t filter -A ext-adm -p icmp --icmp-type echo-reply -i eth0 -o eth1 -s 0/0 -d 10.98.0.1 -j ACCEPT