So for sake of understanding, we're going to assume both machines are on ipv4 and behind NAT networks. I'd like to be able to open a socket on both machines and have the machines connect through those sockets (or a similar system). I know nat punchthrough is required for this, but I'm not sure how nat punchtrough applies (can a socket that was once connecting now be accepting?) Anyone who has worked with nat punchthrough in python I would really appreciate the help.
It sounds like you need to set up port forwarding -- essentially tell your router to forward calls it receives on a specific port to a service that sits behind it.
That's usually done through your router's admin interface.
Python P2P Networking (NAT Punchtrough)