# RouterOS Firewall — Adding ICMP Accept Before Drop Rule When enabling WAN ping on a MikroTik, the ICMP accept rule must be placed **before** the default "Drop WAN input" rule. ## Adding the Rule ```routeros # Find the drop rule number first /ip firewall filter print chain=input # Add ICMP accept before the drop rule (replace N with drop rule number) /ip firewall filter add chain=input protocol=icmp in-interface-list=WAN action=accept comment="Allow ICMP WAN Ping" place-before=N ``` ## Common Issues ### place-before by comment finds wrong rule RouterOS `place-before` accepts a rule number, not a comment. If you use `place-before=[find comment="Drop WAN input"]`, it may place the new rule *after* the drop rule instead of before it. **Fix:** Use the literal rule number (e.g., `place-before=17`), not a find expression. ### New rule shows "I" flag (disabled) If the rule was previously created via `add` and failed to place before the target, then a second `add` creates it disabled with an `I` flag. Remove it and re-add with the correct `place-before`. ### Rule numbering shifts When rules are added/removed from other chains (forward, nat, etc.), the numbering in `input` chain stays stable. But if you remove a rule from `input`, the numbering shifts. Always re-run `print` before adding a rule with `place-before`. ### Testing After adding the rule, test from an external host: ```bash ping -c 3 ``` ## MikroTik Firewall Ordering Rules - Rules are numbered 0..N within each chain - `place-before=N` inserts the new rule before existing rule N - If N is larger than any existing rule number, the new rule becomes the last rule - The `I` (Invalid) flag means the rule was created but cannot be applied — usually a placement or parameter issue. Remove and recreate.