Ogni router ha un proprio metodo per aprire una porta (ha un proprio IP per la configurazione, un protocollo diverso per l'accesso HTTP, FTP, una interfaccia diversa ...). Sarebbe molto complesso realizzare un codice del genere e dovresti anche fornire la password di root per le modifiche sul router.

Hamachi (e altri software simili) sfruttano dei server centrali a cui si collegano e che fanno da intermediari verso gli altri nodi.

Puoi realizzare qualcosa del genere, se hai dei server esterni da contattare ma se è il tuo codice a fare da server allora non c'è altro metodo che aprire il router.