Just to ensure that my understanding is correct, the 10.213.0.10 and the 10.213.0/24 subnet are the TRUST. The uplink is in UNTRUST. You want to access the 10.213.0.10 from both TRUST and UNTRUST. Is this correct?
If yes then you are missing the TRUST to TRUST source NAT rule:
set security nat source rule-set hairpin from zone TRUST
set security nat source rule-set hairpin to zone TRUST
set security nat source rule-set hairpin rule hairpin-nat-rule match destination-address 10.213.0.10
set security nat source rule-set hairpin rule hairpin-nat-rule then source-nat interface
Next, you need to modify the static NAT:
delete security nat static rule-set STATIC-NAT from interface (uplink int. ip 3.3.3.3)
set security nat static rule-set STATIC-NAT from zone [TRUST UNTRUST]
The above change ensures static NAT is hit irrespective of who tries to access 2.2.2.2
You also need to delete the following:
delete security nat destination rule-set HAIRPIN from zxone TRUST
delete security nat destination rule-set HAIRPIN rule rule-hairpin-destination match source-address 10.213.0.0/24
delete security nat destination rule-set HAIRPIN rule rule-hairpin-destination match destination-address 2.2.2.2/32
delete security nat destination rule-set HAIRPIN rule rule-hairpin-destination then destination-nat pool hairpin-pool
So traffic initiated from source 10.213.0.20 to 2.2.2.2 will undergo the following:
1) SRX flow lookup will do static NAT first and translate 2.2.2.2 to 10.213.0.10.
2) The route and zone lookup will determine TRUST.
3) The policy lookup will permit (since it is an 'any any' rule)
4) Source NAT rule will match and find packet destined for 10.213.0.10 and will translate to interface IP.
5) The return packet (SYN+ACK) will now have SRX interface IP as destination. Flow session will take care of the rest.
Let me know if this fixes the issue.
Regards,
Srinath