Обойдите прозрачный сквид с IPTables

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

У меня есть прозрачный прокси сквида, который фильтрует весь http и, для некоторых машин только, трафика HTTPS моей сети. Я достиг этого со следующими правилами iptables:

  iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
    iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.100 -m tcp --dport 443 -j REDIRECT --to-ports 3127
    iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.101 -m tcp --dport 443 -j REDIRECT --to-ports 3127
    iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.102 -m tcp --dport 443 -j REDIRECT --to-ports 3127

Я хотел бы однако обойти сквид для определенных доменов: когда клиент выполняет запрос на mydomain.com, он должен непосредственно перейти к шлюзу сети.

Я пытался вставить следующие правила ПЕРЕД другими, упомянутыми выше.

iptables -t nat -A PREROUTING -i eth0 -d $IP_OF_MYDOMAIN.COM -j DNAT --to-destination $IP_OF_ROUTER
iptables -t nat -A PREROUTING -i eth0 -s $IP_OF_ROUTER -j RETURN

Эта установка однако не работает. Что я пропускаю? Существует ли лучший способ сделать это?

править

Порядок правил следующий:

        iptables -t nat -A PREROUTING -i eth0 -d $IP_OF_MYDOMAIN.COM -j DNAT --to-destination $IP_OF_ROUTER
        iptables -t nat -A PREROUTING -i eth0 -s $IP_OF_ROUTER -j RETURN
        iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
        iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.100 -m tcp --dport 443 -j REDIRECT --to-ports 3127
        iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.101 -m tcp --dport 443 -j REDIRECT --to-ports 3127
        iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.102 -m tcp --dport 443 -j REDIRECT --to-ports 3127
1
задан 14 July 2014 в 16:18
1 ответ

Если я правильно понял, вы хотите освободить трафик на определенный IP-адрес от принудительного перенаправления. Так что вы действуете неправильно.

Замените первые две строки в конфигурации iptables выше на

iptables -t nat -A PREROUTING -d a.b.c.d -j ACCEPT

, где a.b.c.d является ip адресом, который должен быть освобождён от принудительного перенаправления. Обратите внимание, что как и ваша текущая пара правил, это правило должно прийти до кода принудительного перенаправления.

.
2
ответ дан 3 December 2019 в 21:15

Теги

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