• Как в iptables пробросить сайт мимо squid?

    @Anhel789 Автор вопроса
    Ilya Evseev: благодарю за быстрые ответы!
    Исправил на:
    $IPT -t nat -A to_squid -s "$a" -j RETURN
    Но связи с инетом нет.
    Попробовал так:
    $IPT -t nat -A to_squid -d ${a} -j RETURN
    Тоже нет инета...
  • Как в iptables пробросить сайт мимо squid?

    @Anhel789 Автор вопроса
    Ilya Evseev: теперь ругается на "iptables v1.4.14: unknown option "--to-destination""

    cat /etc/network/if-up.d/iptables-rules
    #!/bin/sh

    # Задаем некоторые переменные:

    # Переменная, задающая путь к файлу запуска iptables.
    IPT="/sbin/iptables"
    # Сетевой интерфейс, смотрящий в Интернет.
    WAN="eth0"
    # Внешний ip-адрес
    WAN_IP="XXX.XXX.XX.XX"
    # Внешняя сеть
    WAN_NET="XXX.XXX.X.X/24"
    # Сетевой интерфейс, смотрящий в локальную сеть.
    LAN="eth1"
    # Внутренний адрес
    LAN_IP="192.168.1.1"
    # Локальная сеть
    LAN_NET="192.168.1.1/24"

    # Включить forward
    echo 1 > /proc/sys/net/ipv4/ip_forward

    # удалить все действующие правила
    $IPT -F
    $IPT -t nat -F
    $IPT -t mangle -F
    $IPT -t nat -X
    $IPT -X

    # Всегда принимать трафик на loopback-интерфейсе
    $IPT -A INPUT -i lo -j ACCEPT

    # Разрешить соединения, которые инициированы изнутри ($LAN)
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A INPUT -m state --state NEW -i $LAN -j ACCEPT
    $IPT -A FORWARD -i $WAN -o $LAN -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Разрешить доступ из LAN-сети к внешним сетям
    $IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

    # Пропускаем машинки мимо прокси.
    $IPT -t nat -A PREROUTING -p tcp -s 192.168.1.1 -j ACCEPT
    $IPT -t nat -A PREROUTING -p tcp -s 192.168.1.2 -j ACCEPT

    $IPT -t nat -N to_squid
    $IPT -t nat -A PREROUTING -i $LAN -s $LAN_NET -p tcp --dport 80 -j to_squid
    $IPT -t nat -A PREROUTING -i $LAN -s $LAN_NET -p tcp --dport 443 -j to_squid
    for a in $(host -t a gmail.com | awk '/has address/ {print $4;}'); do
    $IPT -t nat -A to_squid -j RETURN
    done
    $IPT -t nat -A to_squid -p tcp --dport 80 -j REDIRECT --to-destination $LAN_IP:3129
    $IPT -t nat -A to_squid -p tcp --dport 443 -j REDIRECT --to-destination $LAN_IP:3130

    # NAT.
    $IPT -t nat -A POSTROUTING -o $WAN -j SNAT --to-source $WAN_IP

    # Запретить forward извне во внутреннюю сеть
    $IPT -A FORWARD -i $WAN -o $WAN -j REJECT
  • Как в iptables пробросить сайт мимо squid?

    @Anhel789 Автор вопроса
    Ilya Evseev:да, так и есть, он запущен локально на самом шлюзе (его $LAN_IP равен 192.168.1.1), но слшает три порта:

    cat squid.conf
    ...
    http_port 3128
    http_port 3129 intercept
    https_port 3130 intercept ssl-bump...

    Поправил iptables. Сейчас всё ходят в инет, но в логах squid пусто - все ходят мимо прокси
  • Как в iptables пробросить сайт мимо squid?

    @Anhel789 Автор вопроса
    Действително, не дочистил таблицы. Теперь отвалилось проксирование: ни на какие сайты нельзя зайти (даже когда меняю "--to-port 3128" с 3128 на 3129).
    На squid пустаю так:
    $IPT -t nat -A PREROUTING -i $LAN -p TCP --source $LAN_NET --dport 80 -j DNAT --to-destination $LAN_IP:3129
    $IPT -t nat -A PREROUTING -i $LAN -p TCP --source $LAN_NET --dport 443 -j DNAT --to-destination $LAN_IP:3130
  • Как в iptables пробросить сайт мимо squid?

    @Anhel789 Автор вопроса
    Благодарю за ответ. Попробовал этот вариант, но у меня iptables ругается:
    iptables v1.4.14: Couldn't load target `return':No such file or directory

    Убираю "-j return"
    iptables: Chain already exists.
    iptables v1.4.14: Need TCP, UDP, SCTP or DCCP with port specification

    Добавляю "-p tcp":
    iptables -t nat -A to_squid -j REDIRECT -p tcp --to-port 3128

    Просто получаю:
    iptables: Chain already exists.
    И прокси не работает...
  • Как в iptables пробросить сайт мимо squid?

    @Anhel789 Автор вопроса
    Да я настроил, чтобы HTTPS ходил через прокси. Все сайты ходят даже без ругани на сертификат. А gmail.com нет, просто не открывается. Решил его, как исключение, пропустить мимо squid.