О IP 0.0.0.0 в Django
У нас есть сервер, над которым мы запускаем сайт с Django. Поскольку мы хотим протестировать сайт, мы используем встроенный сервер разработки Django (т.е. runserver
). Но мне любопытно ввести ip следующей команды:
python manage.py runserver 0.0.0.0:80
Это приводит к запуску сайта, на котором мы можем удаленно посетить сервер ip.
Но при использовании 127.0.0.1
вместо этого:
python manage.py runserver 127.0.0.1:80
Никто не может посещать сайт с помощью сервера ip с другого компьютера.
Так почему? Что означает 0.0.0.0
в точности (Google говорит, что это маршрут по умолчанию)? Почему невозможно удалять 127.0.0.1:80
удаленно?
Ответы
Ответ 1
0.0.0.0:80
- это ярлык, означающий "привязка ко всем IP-адресам, поддерживаемым этим компьютером". 127.0.0.1:80
связывает только с интерфейсом "lo" или "loopback". Если у вас есть только один сетевой адаптер с одним IP-адресом, вы можете привязать его явно, скажем, 192.168.1.1:80
(if 192.168.1.1
был вашим IP-адресом), или вы можете указать все IP-адреса, на которые отвечает ваш компьютер, но 0.0.0.0:80
- это ярлык для этого.
Ответ 2
127.0.0.1 - это loopback interface, также известный как localhost
; это адрес, доступный только с одного компьютера, так как ничего не происходит по сети. 0.0.0.0 означает "прослушивать все интерфейсы" и, таким образом, будет прослушивать соединения на всех IP-адресах, которые есть у машины (вероятно, только одна).
Ответ 3
127.0.0.1 - это локальный (loopback) ip, а не ip этого компьютера в сети. Чтобы получить доступ к серверу по сети, вам нужно знать его "IP-адрес сети"