how to forward dns alias to hostname:port?

Solution 1:

If you don't want to create another IP, then all you can do is install a reverse http proxy on the main IP and a name based virtual host to route the traffic using mod_proxy.

Here is how you can do it with apache, almost any http server can do it, other popular alternatives are squid, nginx, lighthttpd, etc.

Listen IP_ADDR:80
NameVirtualHost IP_ADDR:80

<VirtualHost IP_ADDR:80>
  ServerName  yourname.yourdomain

  ProxyPass        / http://localhost:10000/
  ProxyPassReverse / http://localhost:10000/

</VirtualHost>

Solution 2:

DNS only maps hostnames to IP addresses, it knows nothing and can't do anything about ports.

A solution to your need could be using a NAT router/firewall to forward you'r public IP's port 80 to the internal server IP's port 10000.