loremOS Admin

"Системное администрирование – это культура"

Linux. Локальный трафик на локальный Squid

Опубликовано 16th Aug 2018 19:15:26 в категории Linux

Здравствуй, дорогой друг! Наверняка по заголовку ты подумал, а зачем заморачиваться? Можно указать адрес прокси глобально и всё. Но что, если мы хотим сделать по-другому? Да, мы хотим. Более того, я покажу, как направить локальные 80 и 443 порты на Squid, работающий в прозрачном (intercept) режиме. 

  1. Сперва необходимо настроить файрвол (не забыть сделать автопринятие правил при загрузке). В моём случае, используется iptables
    -A OUTPUT -m owner --uid-owner proxy -j ACCEPT
    -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to 127.0.0.1:3128
    -A OUTPUT -p tcp -m tcp --dport 443 -j DNAT --to 127.0.0.1:3129

    , где 3128 - это настроенный в Squid порт для HTTP протокола, а 3129 - порт для HTTPS.
    Также, здесь присутствует правило, позволяющее принимать пакеты на выходе от самого Squid, то есть от имени uid proxy (зависит, от чьего имени работает Squid, обычно используется proxy или squid).
  2. Если создать только эти правила, то возможно что после перезагрузки работать не будет до перезапуска сервиса Squid (или операции squid -k reconfigure). Здесь всему виной может быть очередность загрузки. Необходимо, чтобы Squid стартовал уже после поднятия сети и после применения правил файрвола, либо поступить другим путём. Если используется NetworkManager, то можно создать скрипт, который будет выполняться после установки соединения:
    cat /etc/NetworkManager/dispatcher.d/up
    #!/bin/bash
    IF=$1
    STATUS=$2
    if [ "$IF" == "wlp3s0" ]
    then
    case "$2" in
    up)
    logger -s "NM network up!"
    squid -k reconfigure
    ;;
    *)
    ;;
    esac
    fi

    wlp3s0 - интерфейс для Интернет. 
    Когда поднимется интерфейс, выполнится команда squid -k reconfigure, а в системном логе проскочит сообщение "NM network up". 

Даже если используется другой менеджер, отличающийся от NM, в нём в любом случае есть возможность создания post-up скрипта, куда можно вставить действия squid -k reconfigure, либо вообще выключить Squid из автостарта и стартовать его этим скриптом.


Поделиться:


Теги