I have a setup where I have 2 different internal devices that need to share the same external IP, but I want inbound traffic from external sources to go to one of the two different devices based on what destination ports are being used.
Internal IP 10.10.10.1
Listening on ports: TCP/UDP 80, TCP/UDP 8000, TCP/UDP 8001
Internal IP 10.10.10.2
Listening on ports: UDP 18000, UDP 19000
External Shared IP 18.104.22.168
So basically, if an outside source navigated to 22.214.171.124 at any of the TCP/UDP ports of 80, 8000, or 8001 they'd land on Device 1, but if they navigated to 126.96.36.199 at any UDP ports 18000 or 19000 they'd land on device 2.
I'm running ASA 9.3 code, and I see where I can do object nat and add the "service tcp" options, such as below:
object network DEVICE1_REAL
nat (inside,outside) static 188.8.131.52 service tcp 80 80
...but this only lets me specify the one service (in this case, TCP port 80).
So next I tried to set it up with object groups as below:
object-group service DEVICE1_SERVICES
service-object object TCP_80
service-object object UDP_80
service-object object TCP_8000
service-object object UDP_8000
service-object object TCP_8001
service-object object UDP_8001
object-group service DEVICE2_SERVICES
service-object object UDP_18000
service-object object UDP_19000
And then do a static nat configuration:
nat (inside,outside) source static DEVICE1_REAL DEVICE1_TRANSLATED service DEVICE1_SERVICES....
...it gives me an error stating that have to use a single service object at the end there, not a service GROUP.
So, I guess my question is - is there any way to accomplish this on ASA to where I don't have to have a separate NAT statement for each and every service I need translated? I have 48 total devices I need to do this with, and trying to keep the config under control.