Прозрачный прокси через DNAT используя iptables под Linux

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

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

    Примечание

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

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

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

    Чтобы заворачивать весь http трафик на порт прокси, необходимо создать правило в файрволле(iptables). Правило дано шаблоном, поэтому, чтобы привести его к нужному виду, замени SQUIDIP на публичный IP адрес, на котором «висит» Squid и слушает порты.

    iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination SQUIDIP:3129

    2. Конфигурирование squid.conf

    Необходимо сказать Squid о своих намерениях. А именно, что трафик будет перехватываться по 3129 порту. Сам он не догадается, мы ждали целые сутки, но дело не двигалось. Может ты дашь Squid шанс и подождешь подольше? Как проверишь, внеси в squid.conf следующую строку

    http_port 3129 transparent

    Если у тебя Squid старше версии 3.1, то нужно писать немного иначе:

    http_port 3129 intercept

    Перезапускай Squid и iptables. Проверяй. Или ты всё ещё надеешься, что Squid сам отстроится? Ну давай подождем...