Traceroute shows the same address for each hop

  • Hi,

    i have a working IPSEC site to site tunnel, where a 1:1 Nat is in place at both sides of the tunnel.
    Everything is fine (the routes are perfect, traffic is flowing) , except traceroute shows the same address for each hop to the endpoint.

    Sample: tracert

    Tracing route to over a maximum of 30 hops:

    1    <1 ms    <1 ms    <1 ms
      2    38 ms    44 ms    47 ms
      3    52 ms    31 ms    30 ms
      4    26 ms    43 ms    47 ms
      5    44 ms    55 ms    50 ms
      6    45 ms    36 ms    40 ms
      7    56 ms    56 ms    65 ms
      8    54 ms    42 ms    46 ms

    Trace complete.

    As far as i searched this forum and Google, this behavior is justified by the NAT.
    As for a Cisco ASA there are hints on the internet, where this can be fixed.
    With a simple onsided NAT the intermediate hops are not displayed at all.

    Is there any switch/config/hidden feature in Pfsense to get the hops IP addresses correct?


  • LAYER 8 Global Moderator

    How would it be 8 hops to your endpoint through a tunnel?  A tunnel in a traceroute would be 1 hop!  Your not going to be able to show the actual internet hops you took inside the tunnel.. The traffic flowing through the tunnel its 1 hop..

    If you have this

    client – pfsense -------------- tunnel ------------- pfsense --- server

    How many hops in a traceroute between cient and server there.

    You have something odd going on with your ttl reduction, and the answering the ttls as they change.. What exactly is - is it the end of the tunnel, a client past the tunnel?

  • Hi johnpoz,

    you are right. I got lots of tunnels where only the first and last hop shows up on traceroute. This one is special, connection to a Barracuda FW.

    On Pfsense side is a BiNat translation, on Barracuda side too. is the tunnel endpoint translation nat net on Barracuda site,
    which is natted to the server endpoint. There are 3 hops between client and server.

    Traffic is ok, i am just curious where and why traceroute is disturbed.

    Explanation from a cisco forum: The most likely cause is that the traffic is passing through a firewall with a global NAT rule at that point. Every returned packet from that point and beyond will have the NAT address, not the real IP of the hop that decremented the TTL and sent an icmp echo reply.

    Another Explanation can be found here:

    There is a solution for an ASA:

    For Outbound traceroute to work through ASA , folllowing needs to be configured :

    policy-map global_policy
    class inspection_default
        inspect icmp
        inspect icmp error

    access-list out  extended permit icmp any any time-exceeded
    access-list out  extended permit icmp any any unreachable
    access-group out in interface outside

    If you want to see ASA as a hop in the traceroute output :

    ciscoasa(config)#policy-map global_policy
    ciscoasa(config-pmap)#class class-default
    ciscoasa(config-pmap-c)#set connection decrement-ttl

    ciscoasa(config)#icmp unreachable rate-limit 10 burst-size 5

    So my question was : is there any similar trick/config/whatever we can do for Pfsense to get traceroute working better?


  • Seems to me the Baracuda needs a configuration change, not pfSense..?

  • LAYER 8 Global Moderator

    yeah this would have ZERO to do with pfsense.. that is for damn sure!  Pfsense has nothing to do with the packet after it sends it on.. The client changing the TTL as it does the trace again has nothing to do with pfsense.. Something answering stuff it should not be answering based up on the ttl has nothing to do with pfsense.

  • Yes, Pfsense has no problems with it. Im afraid i cant change it on the Remote Barracuda.

    Thank you guys!

Log in to reply