Skip to content

"Problem" with endless dmesg/console logs: "icmpv6_send: no reply to icmp error" / Open Design Questions at forwarding level #203

@maverick3005

Description

@maverick3005

Since feeled 1 month i see on the EA6x00 arm devices a huge amount of messages from this type:

root@mgmt1:/tmp/home/root# dmesg -c

icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error
icmpv6_send: no reply to icmp error

On the other EA-Router, which serve the home office with just PCs and some Media-Devices, there are just 4-5 such Messages/day.

The First Router serves for Solar/IoT/ESP32-devices, which are using ip4 and ip6 and connects to the manufacturer clouds, and
it looks like, they all have his own methods to check if destination is alive or maybe check out different locations and try to measure the
distance by latency tests for selecting the nearest cloud, something like ?

I had no chance actualy to figure out the real reason, why i have thousands (!) of this lines in the router log-buffer each day since a few weeks.

The only differences between booth routers is, that the Office-Device has CTF enabled, and the IoT-serving Router has CTF disabled, because
of problems with bridge2bridge+wireless/L2+L3 not working when CTF is enabled.

Note: The Router in front/or when directly connected to ISP by dhcp6 has NO NAT or any type of filtering, so it is completly open
for incoming packets on ipv6 - which is a need here for some devices to be full reachable.

Question: Do we filter with ip6tables "hard coded" still some importent icmp6 messages, whe should not ?
The above messages comes only from LAN/WAN-forwarded traffic, not the local router itself.

This is the actual forwarding table i have running:

Chain FORWARD (policy DROP)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere             rt type:0
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
ACCEPT     ipv6-nonxt --  anywhere             anywhere             length 40
ACCEPT     ipv6-icmp --  anywhere             anywhere             ipv6-icmp destination-unreachable
ACCEPT     ipv6-icmp --  anywhere             anywhere             ipv6-icmp packet-too-big
ACCEPT     ipv6-icmp --  anywhere             anywhere             ipv6-icmp time-exceeded
ACCEPT     ipv6-icmp --  anywhere             anywhere             ipv6-icmp parameter-problem
ACCEPT     ipv6-icmp --  anywhere             anywhere             ipv6-icmp echo-request limit: avg 5/sec burst 5
ACCEPT     ipv6-icmp --  anywhere             anywhere             ipv6-icmp echo-reply
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     udp  --  anywhere             anywhere             udp dpt:500
wanin      all  --  anywhere             anywhere
wanout     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

So nothing special - all on default. So why the Router itself fill up the log with this type of message (5 new messages at nearly every 10 seconds...) ?

Should we change this hardcoded "forced" setting anyway:

ACCEPT ipv6-icmp -- anywhere anywhere ipv6-icmp echo-request limit: avg 5/sec burst 5 <--- !

Such things should be handled from the client in case of forwarded traffic and not interfer by the router. For the router itself this rule make sence (INPUT-Chain).

This rules are another question:

DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

It looks for me like firewalling ip6 to the lan-clients - with no further (web based) tuning option to change it.

  • except use "Basic IP6-Forwarding", where it can be defined which outside destination can connect to which port/IP6 at the inside...
    Here is the next Problem: This works only with local-fe80:: addresses reliable - if the ip6 prefix changed by ISP, so the internal ip6 native IPs will completly change. With typical windows/android and active "privacy extensions" it is anyway not working reliable with external ip6...

From my knowledge ip6 has "no NAT" - and is open to the devices - The devices itself need a local firewalling by handling
incoming traffic - windows, linux, as example, have this by default implemented at client side through the local firewall.

The hardcoded settings makes sense, when you have a lot of "broken" or "insecure" devices in the LAN, which can easy be hacked, because of
a not really working implemented firewall. So the result is: Always the sessions needs to be opened from inside to outside and must be
tracked from the router by conntrack. (With the usual timeout-issues and extra tuning eventually....)

AVM uses for ip6 another aproach: For specific internal devices there is an option to forward all incoming traffic without filtering,
wheras the basic setting is equaly as tomato: only inside -> outside. In case of "double-NAT" or having a Tomato behind a AVM-Device,
this Tomato gets all ip6 traffic directly handed over - just with a static mac-address-rule/fe80::-peer - so Tomato can handle the traffic byself.

(for that we have the Basic-IP6-Forwarding with above internal limitations to use only local-link fe80:: addresses...)

It is a design question generally - but when it comes to CGN ip4 + native ip6, this is the only way to reach inside (servers) from outside.

@MarsTomato

Any ideas, how we can make it a little "better" ? Can you check the actual hardcoded forward chain, too - have we forget to include some
more icmp6 message types ? Removing of the Burst-limit for icmp6-echo-request only in forward-mode ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions