Операционная система: Ubuntu 16.04 LTS, вот моя проблема.
В последнее время я создаю приложение, использующее сервис данных Redis (Docker). Обычный способ создания нового сервиса Redis выглядит примерно так:
docker pull redis:latest
docker run -d --name redis -p 6379:6379 redis:latest
Если предположить, что мой WAN IP равен 201.201.201.201, то он просто должен получить доступ к Redis по адресу: 201.201.201.201: 6379.
Однако при таком подходе порт сервера redis подвергается общедоступной сети, даже если вы можете задать длинный пароль для ужина, потенциальная угроза безопасности остается.
Поскольку docker не поддерживает изменение сопоставления портов в работающем контейнере, мне нужно завершить работу всей службы Docker, что занимает много времени, почти невозможно.
Затем я пытаюсь использовать сопоставление IP-таблиц вместо создания карты Docker, из-за гибкости iptables, теоретически это дает преимущества с обеих сторон - файлы uoload из любой точки мира (вне зоны zz), но также может закрыть это
iptables -t nat -A PREROUTING -d 172.245.210.199 -p tcp --dport 6379 -j DNAT --to-destination 172.17.0.5:6379
iptables -t nat -A POSTROUTING -d 172.17.0.5 -p tcp --dport 6379 -j SNAT --to 172.17.0.1
Но это не работает, я не могу пропинговать контейнер 17.17.0.162
Кто-нибудь знает разрешение или может предложить другие способы реализации этого сопоставления портов (например, nginx или caddy?)
Спасибо!