There are several possible solutions. TeamViewer will work because its basicly whats called a "backconnect". This means that TeamViewer from the view of the firewall acts as a client, not as a server by initializing the connection instead of waiting for the incoming connection like a server does. This way TeamViewer bypasses statefull firewalls.
If you want to you can also use a port forwarding. This means that you configure your firewall to foreward all incoming traffic from external hosts on a specific port to another host on the LAN. This is called PAT (Port Address Translation) and is widely used. How this can be implemented relies on your router but almost every routers support this.
You can also expand this solution with portknocking which is a "security through obscurity" kind of approach. It means that a connection is only accepted after a defined packet has been received before from the same source.