When I try to traceroute to a remote server, I found that most likely the first router interface where the packet arrives responds to traceroute. Is it possible to ask another interface of the router to respond to me?
There's no mechanism to tell the router "what you would like it to do." It will generate an ICMP message using the source address of the interface the packet was received on.
If the router has a route back to the source that is different than the reverse path (i.e., an asymmetric route), the time exceeded message will take a different route, but the source address will still be the same.
For example, if the router receives a packet on interface 1 with a TTL of 1, it will generate a time-exceeded message with the source address of interface 1, and the destination address of the original host (that is running the traceroute).
If the router is configured in such a way that its best path to the host is through interface 2, then the router will forward the packet out interface 2, but the source address in the ICMP packet will still be interface 1.
The router itself is what is responding to you, and it will be using the interface closest to you because that is how routing works.
When a packet with a TTL of
1 comes into an interface, IP will decrement the TTL to
0. Then, the device will send back an ICMP message telling you that the packet timed out. The router will send the ICMP message packet out the interface back toward you because that is what its routing table tells it is the path to you. If it sends it out a different interface, the packet with the ICMP message will not reach you, but it will head in a different direction.
Traceroute depends on receiving the ICMP message in order to show you the hops.