Прозрачный прокси Squid используя IPFW на FreeBSD

    О чем этот текст?

    Данный материал позволит тебе сделать прозрачный прокси. Прозрачность заключается в том, что для выхода в Интернет, на стороне клиента не надо ничего настраивать. Он будет пользоваться Интернетом, так как будто работает напрямую. Минус здесь в том, что невозможно будет организовать авторизацию по имени, плюс в том, что ничего на стороне клиента делать не надо, а на 100-500 пользователях это ощутимая помощь техподдержке. Считать статистику можно по IP адресам. Закрепить за конкретной ПК, конкретный IP адрес это ведь не проблема?

    Как это проделать используя IPTables мы уже писали. Теперь тот же трюк, но в связке с IPFW. Ведь линукс не всегда есть под рукой.

    Примечание:

    Прежде чем рваться в бой убедись, что ты обладаешь малейшими навыками работы с IPFW(хотя бы где лежат конфиги и какой из них править), а также понимаешь значение следующих тегов:

    Основная часть

    1. Настройка Squid

    У тебя уже установлен Squid? Посмотри на строку ниже:

    ./configure --enable-ipfw-transparent

    Она тебе о чем-то говорит? Ну хотя бы, ты помнишь, что включал поддержку IPFW при компиляции Squid? Если такого нет, то надо пересобрать Squid с этой опцией.

    Как только сделаешь, открывай squid.conf и вставляй следующую строку:

    http_port 3129 transparent

    Она говорит Squid, что мы хотим сделать прозрачный прокси и перехватывать трафик.

    В версии Squid старше 3.1, эта строка выглядит несколько иначе, чтобы не путаться:

    http_port 3129 intercept

    2. Настройка IPFW

    Чтобы трафик заворачивать, необходимо добавить несколько важных строк в файл

    rc.firewall.local

    Правило для IPFW дано шаблоном, поэтому при подстройке под себя замени два параметра.

    IFACE - сетевой интерфейс откуда будут приходить запросы пользователей.

    SQUIDIP - IP адрес на котором Squid будет слушать перехваченные запросы пользователей (может быть петля 127.0.0.1)

    IPFW=/sbin/ipfw
    ${IPFW} -f flush
    ${IPFW} add 60000 permit ip from any to any
    ${IPFW} add 100 fwd SQUIDIP,3128 tcp from any to any 80 recv IFACE

    Готово. Перезапускай Squid и у тебя начинает работать прозрачный прокси. Скорость работы Интернета у пользователей повысится прилично. Готовь место под медали от благодарных пользователей и техподдержки.