Thanks for all the answers, much appreciated. It finally worked by referring to Meat's detailed information.
Here is my configuration.
<param name="ext-rtp-ip" value="x.x.x.x"/> ##x.x.x.x is the external IP address you have assigned to this instance
<param name="local-network-acl" value="NOPE"/> ##this is the setting I hadn't configured before, so the RTP routing had problems.
systemctl restart kazoo-freeswitch
listen=udp:a.a.a.a:5060 advertise x.x.x.x:5060 ##a.a.a.a is your private IP address x.x.x.x is the external IP address
systemctl restart kazoo-kamailio