Вопрос или проблема
У меня есть инфраструктура с DMZ, где расположен прокси Squid, а внутри находятся машины, которые будут выходить через этот прокси. Конфигурация следующая.
# Пример правила, разрешающего доступ из ваших локальных сетей.
# Настройте, чтобы указать ваши (внутренние) IP-адреса, с которых разрешен доступ
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "эта" сеть (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 локальная частная сеть (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 общедоступное адресное пространство (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 локальные машины (подключенные напрямую)
acl localnet src 172.16.0.0/12 # RFC 1918 локальная частная сеть (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 локальная частная сеть (LAN)
acl localnet src fc00::/7 # RFC 4193 диапазон локальных частных сетей
acl localnet src fe80::/10 # RFC 4291 локальные машины (подключенные напрямую)
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # незарегистрированные порты
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # многоязычный http
# Запретить запросы к определенным небезопасным портам
http_access deny !Safe_ports
# Запретить CONNECT к другим, чем безопасным SSL портам
http_access deny CONNECT !SSL_ports
# Разрешить доступ manager только с localhost
http_access allow localhost manager
http_access deny manager
# ВСТАВЬТЕ ВАШИ СОБСТВЕННЫЕ ПРАВИЛА ЗДЕСЬ, ЧТОБЫ РАЗРЕШИТЬ ДОСТУП ОТ ВАШИХ КЛИЕНТОВ
#
include /etc/squid/conf.d/*.conf
# Например, чтобы разрешить доступ из ваших локальных сетей, вы можете раскомментировать
# следующее правило (и/или добавить правила, соответствующие вашему определению "локального"):
# http_access allow localnet
http_access allow localhost
# ПРАВИЛО или ACL ДЛЯ ЗАГРУЗОК
#http_access allow all
acl all_updates url_regex -i "/etc/squid/all_updates"
http_access allow all_updates
# И, наконец, запретить весь другой доступ к этому прокси
http_access deny all
# ВСТАВЬТЕ ВАШИ СОБСТВЕННЫЕ ПРАВИЛА ЗДЕСЬ, ЧТОБ РАЗРЕШИТЬ ДОСТУП ОТ ВАШИХ КЛИЕНТОВ
#
include /etc/squid/conf.d/*.conf
# Например, чтобы разрешить доступ из ваших локальных сетей, вы можете раскомментировать
# следующее правило (и/или добавить правила, соответствующие вашему определению "локального"):
# http_access allow localnet
http_access allow localhost
# ПРАВИЛО или ACL ДЛЯ ЗАГРУЗОК
#http_access allow all
acl all_updates url_regex -i "/etc/squid/all_updates"
http_access allow all_updates
# И, наконец, запретить весь другой доступ к этому прокси
http_access deny all
# Squid обычно слушает на порту 3128
http_port 3128
# Добавьте любые свои записи refresh_pattern выше этого.
#
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
# пример паттерна для deb пакетов
#refresh_pattern (\.deb|\.udeb)$ 129600 100% 129600
refresh_pattern . 0 20% 4320
Но при попытке обновить машину отображаются эти ошибки
не удалось получить http://archive.ubuntu.com/ubuntu/dist/jammy-security/inrelease 403 Forbidden IP ......
Прошу вашей помощи в решении этой ошибки, большое спасибо
.
Ответ или решение
Настройка прокси-сервера Squid на Ubuntu 22.04 в DMZ для изолированной среды может быть сложной задачей, особенно когда возникает ошибка 403 Forbidden при попытке обновления системы. В данном ответе мы рассмотрим, как правильно настроить Squid, чтобы устранить эту проблему и обеспечить корректный доступ к обновлениям.
1. Понимание структуры сети
В вашем случае вы имеете DMZ, где находится ваш прокси-сервер Squid, и внутреннюю сеть, состоящую из машин, которым необходим доступ к интернету через этот прокси. Ошибка 403 Forbidden, как правило, указывает на проблемы с доступом, что может быть вызвано неправильной настройкой правил доступа в конфигурации Squid.
2. Проверка конфигурации Squid
Давайте рассмотрим вашу конфигурацию Squid и внесём необходимые изменения для исправления проблемы.
2.1 Определение IP-адресов
Убедитесь, что в секции acl localnet
указаны все необходимые адресные диапазоны:
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
# Добавьте сюда ваш локальный IP-диапазон
2.2 Разрешение доступа
Вам нужно убедиться, что Squid разрешает доступ к обновлениям. Добавьте следующую строку в вашу конфигурацию:
http_access allow localnet
Это правило позволит всем устройствам в указанном локальном диапазоне IP-адресов получать доступ к прокси-серверу.
2.3 Настройка доступа для обновлений
Убедитесь, что ваши ACL для обновлений настроены корректно. Вам нужно правильно настроить ACL для URL, который будет разрешён для доступа. Убедитесь, что файл /etc/squid/all_updates
содержит корректные URL-адреса.
acl all_updates url_regex -i "/etc/squid/all_updates"
http_access allow all_updates
2.4 Завершение настройки
Наконец, убедитесь, что все остальные правила доступа правильно настроены, чтобы не блокировать легитимные запросы к прокси:
# Разрешить доступ локальным сетям
http_access allow localnet
# Запретить доступ всем остальным
http_access deny all
3. Пример обновлённой конфигурации Squid
Вот пример секции конфигурации Squid с учётом всех вышеупомянутых изменений:
# Разрешение доступа из локальной сети
acl localnet src 192.168.0.0/16
http_access allow localnet
# Процесс обновления
acl all_updates url_regex -i "/etc/squid/all_updates"
http_access allow all_updates
# Запретить доступ всем остальным
http_access deny all
4. Перезагрузка Squid
После внесения изменений не забудьте перезапустить Squid, чтобы применить новую конфигурацию:
sudo systemctl restart squid
5. Проверка логов
Если ошибка сохраняется, проверьте логи Squid на наличие дополнительных подсказок о том, почему запрос блокируется. Логи находятся в /var/log/squid/access.log
. Убедитесь, что нет других ошибок, указывающих на проблему.
Заключение
Следуя указанным выше шагам, вы сможете правильно настроить прокси-сервер Squid и устранить ошибку 403 Forbidden при попытке обновления системы. Убедитесь, что u ваша конфигурация соответствует вашему сетевому окружению и требованиям безопасности. Если проблемы сохраняются, рассмотрите возможность обращения за помощью к профессионалам в области сетевой безопасности или поддержки Squid.