Achieving what you want to do via DNS Records cannot be done as far as I know.
Apache
Apache, through Name Base Virtual Host blocks and configuring Apache to listen on the required ports.
# Listens on all IP Addresses and ports 80 - 83
Listen 80
Listen 81
Listen 82
Listen 83
Using your Name Based virtual hosts allows you to catch each request based on name passed in the host value;
<virtualhost example1.com:80>
# all your configuration for example1.com
</virtualhost>
<virtualhost example2.com:81>
# all your configuration for example2.com
</virtualhost>
Ports
Requiring users to enter a port is not a great solution and is likely to fail in the long run. We cannot rely on users knowing how to add a port or to even remember they need to add a port.
Nginx Reverse Proxy
A better solution would be to have Nginx as your front end which receives requests and passes that request to Apache using the port structure you require.
Server {
listen 80;
server_name example1.com www.example1.com
# other stuff as required
proxy_pass http://192.168.100:80;
}
Server {
listen 81;
server_name example2.com www.example2.com
# other stuff as required
proxy_pass http://192.168.100:81;
}
By using Nginx the client enters example2.com (without port) and Nginx receives it, processes it and gets results from Apache listening on port 81.
Nginx Reverse Proxy
Nginx will also give you a performance boost. There is a learning curve and some configuration fine tuning to do but in the long run it would be a better solution.
There are hundreds of examples of Reverse Proxy using Nginx. Google is your friend.