That isn’t something that you do in Asterisk. nat= enables work arounds for broken NAT support in peers; it is mainly, or exclusively, for when Asterisk is outside NAT and a broken peer is inside. externip allows you to create unbroken SIP user agents when you are inside NAT and rhe peer is outside. localnet is useless without externip.
I don’t know enough about these to know the implications of using them, and in particular I don’t know how VMBox handles addressing.
I’d strongly suggest getting some experience in a simple configuration, all on the same LAN, and with hard phones, and physical machines, so that the PABX and phones only have one IP address each, and they are all different. Once you are comfortable about how it works, you can move to virtual machines and crossing NAT routers.
Many people use Raspberry Pi’s as practice hosts for Asterisk, or as production servers for home or small office use.
If you have to use soft phones, run them on different physical machines.
If you have to run multiple SIP user agents in virtual machines, on the same host, I’d advise you to configure each of them to use a different port number.
Also, you should disable chan_sip, and enable chan_pjsip (having them both enabled could produce the result you have seen) and rework you configuration for chan_pjsip, using up to date documentation.