If you wanted to use IronMQ from a non-web-accessible server, my best advice would be to use pull queues. Start up your worker dyno, and have it pull down any messages available every X seconds. With 10 million requests free, you're only using 26% of the free quota if you check for messages every second.
If you still wanted to do push queues and had a TCP port listening on the worker dyno, you could always use the push queues and have each message start up a worker on IronWorker that translates the message into a TCP connection instead of an HTTP connection.
Hope that helps!