Как развернуть приложение Django на сервере Linux в домашней сети так, чтобы оно было доступно только тем, кто находится в этой сети?
Описание проблемы:
У меня есть приложение Django, которое я хотел бы развернуть на сервере Linux, но я хочу, чтобы оно было доступно только устройствам в моей домашней сети (например, компьютерам и мобильным устройствам, подключенным к одному Wi-Fi). Я не хочу, чтобы оно было общедоступным через Интернет.
У меня следующая настройка:
- Приложение Django запущено на сервере Linux (Ubuntu 20.04).
- Сервер подключен к моей домашней сети через Ethernet или Wi-Fi.
- Я хочу убедиться, что приложение может быть доступно с устройств в той же сети, но не извне сети.
Каким образом лучше всего развернуть и настроить это приложение Django, чтобы достичь следующего?
Ограничение доступа к домашней сети: Я хочу, чтобы приложение было доступно только для устройств, физически подключенных к домашней сети (например, через Wi-Fi или Ethernet), и не выходило во внешний мир.
Конфигурация веб-сервера: Следует ли мне использовать
Gunicorn
илиuWSGI
с Nginx или Apache? Как их настроить, чтобы обеспечить надлежащую безопасность и изоляцию?Настройки брандмауэра: Какие правила брандмауэра следует установить, чтобы блокировать внешний доступ и разрешить трафик только из локальной сети?
Сетевые соображения: Как настроить приложение Django на привязку к локальному IP сервера, чтобы оно принимало запросы только из локальной сети?
Любая помощь в настройке сервера, Django и параметров брандмауэра будет очень признательна!
Вы не предоставили никаких подробностей о своей домашней сети. Скорее всего, ваша домашняя сеть находится за каким-то устройством, которое обеспечивает трансляцию сетевых адресов (NAT), чтобы устройства в вашей домашней сети могли выходить в Интернет, даже если ваш интернет-провайдер (ISP) предоставил вам только один IP-адрес, доступный для публичного доступа. Это устройство можно назвать домашним маршрутизатором, маршрутизатором широкополосного доступа или даже беспроводным маршрутизатором. Оно может быть даже встроено в модем, предоставляющий вам услуги Интернета.
Если это предположение верно, то вам , вероятно, больше ничего не нужно делать. Маршрутизатор предоставляет услугу NAT, которая исключает явные попытки внешнего субъекта инициировать контакт с любым устройством в вашей домашней сети. Если это предположение неверно, вам следует уточнить детали среды вашей домашней сети.
Я не очень хорошо разбираюсь в веб-серверах, но первое, что приходит на ум, это то, что вы могли бы рассмотреть возможность включения аутентификации по имени пользователя/паролю для веб-сервиса в целом или для открытого приложения Django.
Если учесть мое предположение о вашем домашнем маршрутизаторе, то в принципе вам не нужно изменять конфигурацию его брандмауэра. Вы должны убедиться, что на нем не включены правила проброса портов, а если включены, то эти правила не указывают на порт прослушивания вашего приложения Dango.
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 80
192.168.1.0/24
80