**NOTE** : It sounds like this is more of a _firewall_ question than a _router_ question.
Don't even try to worry about various ICMP types and which ones you have to match against which packets to permit in which directions. Just rely on the kernel's connection tracking feature and permit
* all ICMP (or all packets) outbound, and
* inbound packets belonging to existing tracked sessions:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT