Remote SIP phones are quite commonly used. You need to try and ensure the phones are NAT aware, and failing that, make sure force rport, rewrite contact, and symmetric RTP are set.
It’s a shame, so user friendly with NAT. We use it as soon as we can. For IAX phones, you can use Zoiper softphone. We also have some AT320 hardware phones, don’t know if they still for sale.
There were a few things that aimed to change that (e.g. the IAXy), but never gained much traction.
IAX2 still sees a decent amount of usage, but it’s all for exactly what the protocol was written for: Inter-Asterisk trunking, not Asterisk to IP phone trunking.