Squid 3.3 прозрачный IPv4 и IPv6 прокси с TPROXY

я пытаюсь изменить свою прозрачную настройку Squid от использования общего NAT, который ограничен только IPv4 и переключает его на TPROXY для поддержки IPv6. У меня возникают трудности с прозрачными клиентами для работы в новой настройке, однако все запросы выполняются squid, бросающим следующую ошибку на все запросы:

"запрошенный URL не может быть получен"

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

я использую iptables и ip6tables на моем маршрутизаторе DD-WRT и прокси Squid вместе с iproute2 сделать части трассы на обеих сторонах.

по умолчанию отображается ip6table_mangle модуль не загружен по умолчанию на DD-WRT, но был скомпилирован в сборку, запущенную на моем маршрутизаторе:

find /lib/modules -name "*.ko" | grep -i mangle
/lib/modules/3.10.89/ip6table_mangle.ko

загрузил модуль и добавил в скрипт автозагрузки для будущих загрузок:

insmod ip6table_mangle

маршрутизация DD-WRT info:

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

iptables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -s $PROXY_IPV4 -j ACCEPT
ip6tables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -s $PROXY_IPV6 -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

маршрутизация Прокси Squid (на самом сервере):

iptables -F -t mangle
iptables -X -t mangle
ip6tables -F -t mangle
ip6tables -X -t mangle
iptables -t mangle -N DIVERT
ip6tables -t mangle -N DIVERT

iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129

ip6tables -t mangle -A DIVERT -j MARK --set-mark 1
ip6tables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
ip6tables -t mangle -A DIVERT -j ACCEPT
ip6tables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129

ip -f inet rule add fwmark 1 lookup 100
ip -f inet route add local default dev eno1 table 100

ip -f inet6 rule add fwmark 1 lookup 100
ip -f inet6 route add local default dev eno1 table 100

squid conf:

http_port 3129 tproxy

конфигурация sysctl:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.eno1.rp_filter = 0

eno1 основной интерфейс Ethernet я также попытался с помощью lo без какого-либо успеха.

трафик передается в поле Squid, поэтому кажется, что маршрутизатор выполняет свою работу. Его, когда трафик заканчивается на Squid ящик, где это, кажется, идет не так. Все запросы регистрируются, но возвращается 500 ошибок.

насколько мне известно, моя установка поддерживает TPROXY:

  • CentOS 7
  • Squid 3.3.8 (EPEL)
  • iptables / ip6tables 1.4.21
  • Ядро Linux 3.10
  • libcap 2.22

я использовал эти источники в качестве руководства, но не может получить рабочую установка.

любые советы о том, что может быть проблемой или для отладки дальше?

1
задан James White
29.11.2022 11:42 Количество просмотров материала 2582
Распечатать страницу

1 ответ

получается все было правильно настроено. Фактической проблемой была моя директива cache_peer для Privoxy. Ошибка брошена на самом деле Squid говоря, что он не может передать трафик в Privoxy. Это происходит потому, что установка tproxy сбивает его с толку.

для того чтобы избежать этого, вы должны добавить no-tproxy к строке cache_peer

cache_peer hostname parent 8118 7 no-tproxy ...
1
отвечен James White 2022-11-30 19:30

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх