Forum Discussion

Philipp_Stadler's avatar
Philipp_Stadler
Icon for Nimbostratus rankNimbostratus
Oct 04, 2017

nat64 irule with snat config not working with ICMP

Hi all,

I've a question regarding NAT64 and ICMP. I want to "NAT" a IPv6 connection to a IPv4 connection. Goal is that destination IP is selected dynamically (based on v6 address) - this can be done quite easily with:

when CLIENT_ACCEPTED {
    node [string range [IP::addr  [IP::local_addr]  mask ::ffff:ffff] 0 end]
}

This is done with SNAT to one address - also ICMP is correctly converted to ICMP in version4. Now my real goal is to also have "dynamic" 1-to-1 translation on source side:

when LB_SELECTED {
   snat [string range [IP::addr  [IP::client_addr]  mask ::ffff:ffff] 0 end]
}

This parts also works for TCP and UDP (where no protocol change is done), but on ICMP the protocol isn't translated and therefore I have IPv4 header with ICMPv6 on serverside, which couldn't be answered by v4 servers.

Does anyone have any hints how I can fix this?

Thanks in advance,

Philipp

1 Reply

  • By default, the system only applies SNAT to TCP/UDP traffic.

     

    Have a look in the setting (v13):

     

    System > Configuration > Local Traffic > SNAT Packet Forwarding