сквид с 2 сетевыми интерфейсами

Вопрос или проблема

У меня есть машина с двумя сетевыми интерфейсами. По умолчанию маршрут 192.168.141.1 может подключиться к Интернету.

ip r
default via 192.168.141.1 dev ens161 proto static metric 100
10.0.0.0/8 via 10.114.141.1 dev ens193 proto static metric 101

Я хочу ограничить порт, на котором слушает Squid, сетевой картой 10.114.141.1, которая не имеет доступа к Интернету, поэтому :

http_port 10.114.141.11:443

Однако, когда я это делаю, я больше не могу подключиться к Интернету с машины, curl/telnet не работают. Кажется, что пакеты больше не покидают машину. Мне это странно, потому что привязка касается входящих соединений, а не исходящих. Когда я меняю настройку на http_port 443, все снова работает, но тогда 443 становится доступным извне. Также я заметил, что когда я полностью отключаю прокси squid (systemctl stop 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 link-local (подключенные напрямую) машины
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 link-local (подключенные напрямую) машины

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

# Разрешить доступ к cachemgr только с localhost
http_access allow localhost manager
http_access deny manager

# Мы настоятельно рекомендуем следующее раскомментировать, чтобы защитить невинные
# веб-приложения, работающие на прокси-сервере, которые думают, что единственный
# кто может получить доступ к сервисам на "localhost" — это локальный пользователь
#http_access deny to_localhost

#
# ВСТАВЬТЕ ВАШИ СОБСТВЕННЫЕ ПРАВИЛА ЗДЕСЬ, ЧТОБЫ РАЗРЕШИТЬ ДОСТУП ОТ ВАШИХ КЛИЕНТОВ
#

# Пример правила, разрешающего доступ с ваших локальных сетей.
# Настройте localnet в разделе ACL, чтобы перечислить ваши (внутренние) IP-адреса,
# с которых должно быть разрешено просмотр
http_access allow localnet
http_access allow localhost

# И, наконец, запретите весь остальной доступ к этому прокси
http_access deny all

# Squid обычно слушает на порту 3128
http_port 10.114.141.11:443
#http_port 192.168.141.11:3128
#http_port [::1]:443
#http_port 443

# Раскомментируйте и отрегулируйте следующее, чтобы добавить директорию кэша на диске.
#cache_dir ufs /var/spool/squid 100 16 256

# Оставьте coredumps в первой директории кэша
coredump_dir /var/spool/squid

#
# Добавьте любые свои строки refresh_pattern выше этих.
#
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

Ответ или решение

Анализ проблемы с конфигурацией Squid на машине с двумя сетевыми интерфейсами

Ваша проблема заключается в том, что вы хотите настроить прокси-сервер Squid для прослушивания на IP-адресе, который не подключен к интернету, тем самым ограничивая доступ к Squid. Однако при этом вы сталкиваетесь с потерей соединения с интернетом, когда Squid работает с конфигурацией, указывающей его IP-адрес, присвоенный локальному интерфейсу.

1. Уточнение конфигурации сети

У вас есть две сетевые карты:

  • ens161 с адресом, который может подключаться к Интернету (192.168.141.1).
  • ens193, который не имеет выхода в интернет и предназначен для внутренней сети с адресами, например, 10.114.141.11.

2. Проблема прослушивания на порту

Ваша настройка http_port 10.114.141.11:443 делает так, что Squid слушает только на интерфейсе ens193. Это означает, что все входящие соединения на этот IP-адрес (10.114.141.11) к Squid будут обрабатываться успешно. При этом, Squid сам по себе не должен влиять на исходящий трафик, который идет через интерфейс ens161. Однако, вы заметили, что ваше подключение к интернету теряется, когда Squid пытается прослушивать этот адрес.

3. Возможные причины проблемы

  1. Неправильная маршрутизация: Когда Squid запускается с конфигурацией, слушающей IP-адрес 10.114.141.11, это может как-то блокировать пакеты, выходящие из машины, так как система может нелогично распределять маршруты. Рекомендуется использовать утилиты для диагностики, такие как tcpdump, чтобы отследить, где теряются пакеты.

  2. Параметры конфигурации: Проверьте, нет ли в конфигурации дополнительных параметров, которые могут ограничивать доступ к интернету. Например, убедитесь, что не установлены неправильные ACL (Access Control Lists) или другие параметры, влияющие на трафик.

  3. Системные ограничения: На некоторых системах возможна блокировка исходящего трафика, если установлены жесткие правила iptables (или аналогичных систем) для управления трафиком. Просмотрите правила брандмауэра и убедитесь, что они не мешают исходящим соединениям.

4. Решения

  1. Конфигурация Squid:

    • Постарайтесь настроить http_port на простой интерфейс без указания IP-адреса:
      http_port 443
    • После этого настройте IP-адресацию путем использования правил IPTables или других средств управления доступом, чтобы restrict доступ извне.
  2. Проверка маршрутов: Убедитесь, что маршрут по умолчанию правильно установлен для исходящего трафика:

    ip route
  3. Логи и диагностика: Используйте логи Squid для проверки запросов, которые приходят на него:

    tail -f /var/log/squid/access.log
  4. Тестирование конфигурации: После каждой модификации конфигурации проводите тесты с curl или telnet, чтобы проверить, возможен ли исходящий трафик.

Заключение

Проблема, с которой вы столкнулись, могла возникнуть из-за ошибок в маршрутизации, конфигурации сети или системных настроек. Применение рекомендаций выше должно помочь решить проблему с доступом к интернету при работе с Squid на машинах с несколькими интерфейсами. Всегда после внесения изменений проверяйте сеть с помощью тестов для подтверждения корректной работы системы.

Если у вас возникнут дополнительные вопросы или потребуется более углубленная помощь, не стесняйтесь обратиться к специализированному техническому сообществу или профессионалам в области сетевых технологий.

Оцените материал
Добавить комментарий

Капча загружается...