Предотвратите трафик Сквида непрерывания, отмечаемый Маршрутизацией политики

Я переиздал исходный вопрос, потому что я изменил установку начиная с исходного ответа, который был для основанной на NAT установки. NAT больше не используется и был заменен TPROXY для совместимости IPv6.

Я выполняю сквид в небольшой сети. Я имею, устанавливают несколько портов прослушивания сквида для различных сценариев.

Выборка squid.conf

  • http_port 3128 - Это, будет продвинут клиентам Windows через доменную политику, с набором Прокси HTTP через WPAD.
  • http_port 3129 tproxy - Это для клиентов, которые имеют трафик в порте 80 прерванных.

Поскольку TPROXY устанавливают, я использую следующие правила iptables/ip6tables о своем маршрутизаторе DD-WRT с iproute2 отметить и перенаправить трафик к прокси. Проблема находится в этой установке, весь трафик отмечен, включая IPv4 и трафик IPv6, который идет в прокси Сквида через 3 128 установок порта.

Мне нужен способ исключить этот трафик, потому что это, добавляет наверху и повреждает возможность соединения (особенно IPv6) на клиентах локальной сети, которые имеют прокси, примененный непосредственно.

Я знаю, что мог добавить определенные клиенты к PREROUTING таблица с ACCEPT правило, но выполнение этого и для IPv4 и для IPv6 станет твердым справиться быстро. Я должен найти универсальный способ исключить всех клиентов локальной сети, которые проходят Прокси Сквида на порте 3128 на уровне маршрутизатора, но я не знаю лучший способ сделать это.

Текущая маршрутизация политики Сквида DD-WRT:

# Squid transparent proxy
PROXY_IPV4=192.168.x.x
PROXY_IPV6=2001:470:xxxx:xx::x
CLIENTIFACE=br0
FWMARK=3

iptables -t mangle -A PREROUTING -i $CLIENTIFACE -s $PROXY_IPV4 -p tcp --dport 80 -j ACCEPT
ip6tables -t mangle -A PREROUTING -i $CLIENTIFACE -s $PROXY_IPV6 -p tcp --dport 80 -j ACCEPT

iptables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -j MARK --set-mark $FWMARK
iptables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT
ip6tables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -j MARK --set-mark $FWMARK
ip6tables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT

iptables -t filter -A FORWARD -i $CLIENTIFACE -o $CLIENTIFACE -p tcp --dport 80 -j ACCEPT
ip6tables -t filter -A FORWARD -i $CLIENTIFACE -o $CLIENTIFACE -p tcp --dport 80 -j ACCEPT

ip rule add fwmark $FWMARK table 2
ip -6 rule add fwmark $FWMARK table 2
ip route add default via $PROXY_IPV4 table 2
ip -6 route add default via $PROXY_IPV6 table 2

# End Squid intercept proxy config
0
задан 10 October 2015 в 20:43
1 ответ

Добавить iptables правило ПРИНЯТЬ трафик на порт 80 с сервера squid. После этого правила у вас могут быть правила DNAT .

Как только правило соответствует правилу, цепочка больше не соблюдается, поэтому ACCEPT закоротит DNAT для трафика от squid.

РЕДАКТИРОВАТЬ: Правило DNAT уже исключает $ PROXY_IP , поэтому добавлять дополнительное правило не нужно. Лично я предпочитаю добавить явное правило к трафику ACCEPT от прокси, чтобы любые дальнейшие правила не влияли на этот трафик.

Для тех клиентов, которые подчиняются правилам прокси, использовать прокси явно на порту 3128, этот трафик не будет проходить через маршрутизатор, поскольку клиенты могут напрямую обращаться к прокси; по крайней мере, я надеюсь, что прокси и клиенты находятся в одной подсети? Если по какой-то причине прокси-сервер и клиенты находятся в разных подсетях, но в одной и той же физической сети LAN, то маршрутизатор должен отправлять перенаправления ICMP клиенту, когда трафик, предназначенный для прокси-сервера от клиента, достигает маршрутизатора.

1
ответ дан 4 December 2019 в 16:53

Теги

Похожие вопросы