We know that IP/TCP has checksum mechanism to guarantee communication reliability.
However, when a IP/TCP packet is relayed by router or NAT, the IP header may be modified, if if the router/NAT doesn't modify the IP header checksum and TCP header checksum, when the package arrives the destination node, the IP/TCP stack of that node will refuse to accept the packet.
So my question is, do router/NAT modify IP/TCP header checksum when they are relaying packets?