Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Inside the system, running on virtual machine, I can access the running server at

Although the 'remote' address of the vm is (ping and ssh work fine), I cannot access the server with neither from the virtual machine nor from the local one.

I guess there's something preventing remote connections.

Here's /etc/network/interfaces:

auto eth1
iface eth1 inet static

ufw is inactive.

How do I fix this problem?

share|improve this question
up vote 22 down vote accepted

First of all - make sure that your HTTP server is listening on or everywhere ( by checking the output of:

netstat -tupln | grep ':5000'

If it isn't, consult Flask's documentation to bind to an address other than localhost.

If it is, allow the traffic using iptables:

iptables -I INPUT -p tcp --dport 5000 -j ACCEPT

From Flask's documentation:

Externally Visible Server If you run the server you will notice that the server is only accessible from your own computer, not from any other in the network. This is the default because in debugging mode a user of the application can execute arbitrary Python code on your computer.

If you have debug disabled or trust the users on your network, you can make the server publicly available simply by changing the call of the run() method to look like this:'')

share|improve this answer
1) the output is* LISTEN. This means the server doesnot listen to addresses other tha localhosts? 2) I tried ufw allow 5000, no result – Ilya Smagin Dec 1 '12 at 22:14
This is why I suggested looking at the Flask's docs to configure it to listen on all addresses. Have you looked at it? Allowing it through the firewall alone won't fix it. – Marcin Kaminski Dec 1 '12 at 22:25
Yes, thank you, I get it, already looking. Already used localtunnel(I know it's too much, but it works). Just trying to understand what netstat's output "* LISTEN" means. – Ilya Smagin Dec 1 '12 at 22:30
You don't need localtunnel :) What the netstat output shows you is that your HTTP server is only accepting connections from your local machine. It looks like you need to change SERVER_NAME variable in Flask's configuration. – Marcin Kaminski Dec 1 '12 at 22:35
Created an account here just to favorite the question and upvote this answer! – Hephaestus Jun 15 '15 at 15:54

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.