Настройка Squid для IPv6

В наше время сети IPv6 набирают очень большую популярность, и множество провайдеров даёт в комплекте с VPS подсеть IPv6 бесплатно. Допустим, вам нужно очень много адресов прокси, и у вас есть сервер с одним публичным адресом IPv4 и подсетью адресов IPv6. Используя эти адреса и прокси сервер Squid, вы можете очень просто получить необходимое количество прокси-серверов IPv6 .

Такие прокси не подходят для многих задач, но для проверки позиций сайта в поисковых системах они — самое то. В этой статье будет рассмотрена настройка Squid для IPv6. Базовая настройка Squid уже рассматривалась в статье установка Squid в Ubuntu.

Как это будет работать

У вас есть только один IP-адрес IPv4, с помощью которого вы можете получить доступ к вашему прокси-серверу. Но нам как-то нужно определиться, какой адрес IPv6 для какого запроса будет использоваться. Для этого будем применять порты. Например, если мы подключаемся к порту 3128, то Squid будет отправлять запрос к сайту с адреса 2a00:1838:36:1ba::eac3, а если с порта 3129, то 2a00:1838:36:1ba::eac4 и так далее. Такие адреса можно добавлять до тех пор, пока производительность вашего сервера будет находится на приемлемом уровне.

Далее мы будем использовать аутентификацию по паролю, для того чтобы никто кроме вас не смог получить доступ к этим прокси-серверам. Отключим дополнительные заголовки, которые добавляет Squid, чтобы не светить ваш основной адрес. А также полностью выключим обращение к IPv4-сайтам, чтобы невозможно было отследить, что у всех этих адресов общий адрес IPv4. А теперь перейдем к настройке.

Настройка Squid для IPv6

Начнем с настройки адресов IPv6, обычно их советуют добавлять с помощью команды ip, но лучше прописать их в конфигурационном файле /etc/sysconfig/network-script/ifcfg-eth0, в строке IPV6ADDR_SECONDARIES:

IPV6ADDR_SECONDARIES="2a00:1838:36:1ba::eac3/64 2a00:1838:36:1ba::eac4/64 2a00:1838:36:1ba::eac5/64 2a00:1838:36:1ba::eac6/64 2a00:1838:36:1ba::eac7/64"

Теперь перезагрузите сеть:

systemctl restart network

Эти команды актауальны для CentOS 7, в Ubuntu всё будет выглядеть по другому. Далее настроим аутентификацию: для этого создаём файл пользователей и паролей с помощью команды htpasswd:

htpasswd /etc/squid/passwd

На запрос команды надо ввести логин пользователя и пароль для него. Только теперь мы можем перебраться к конфигурационному файлу Squid. Продолжаем настраивать аутентификацию, для этого добавьте в самом начале такие строки:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm losst proxy server
auth_param basic credentialsttl 2 hours
acl authusers proxy_auth REQUIRED

  • basic program — в первой строке мы загружаем модуль аутентификации /usr/lib64/squid/basic_ncsa_auth, в вашей системе путь к библиотеке может отличаться, вам надо найти правильный. В параметры модулю передаётся путь к файлу с паролями /etc/squid/passwd;
  • basic children — количество обрабатываемых за раз запросов;
  • basic realm — приветствие;
  • basic credentialsttl — время, на протяжении которого пользователь считается аутентифицированным.

В последней строке мы создаем acl-список для всех аутентифицированных пользователей и позже с помощью него разрешим им доступ к нашему прокси. Дальше удаляем заголовки, которые нарушают приватность:

request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Proxy deny all
request_header_access Cache-Control deny all

Запрещаем все исходящие подключения, не через IPv6, с помощью acl-списков:

dns_v4_first off
acl to_ipv6 dst ipv6
http_access deny !to_ipv6
http_access allow to_ipv6

Разрешаем подключение аутентифицированным пользователям:

http_access allow authusers

Запрещаем всем остальным:

http_access deny all

Теперь работа с портами. По умолчанию Squid запущен на порту 3128, эту строчку надо закомментировать:

#http_port 3128

Вместо неё добавим пять портов и каждому присвоим имя с помощью параметра name:

http_port ип_сервера:3128 name=port3128
http_port ип_сервера:3129 name=port3129
http_port ип_сервера:3130 name=port3130
http_port ип_сервера:3131 name=port3131
http_port ип_сервера:3132 name=port3132

Теперь для каждого порта создаем acl-список, а затем с помощью директивы outgoing_ip_address указываем, через какой IP будет передаваться запрос во вне:

acl from_port3128 myportname port3128
tcp_outgoing_address 2a00:1838:36:1ba::eac2 from_port3128
tcp_outgoing_address 2a00:1838:36:1ba::eac2 !all
acl from_port3129 myportname port3129
tcp_outgoing_address 2a00:1838:36:1ba::eac3 from_port3129
tcp_outgoing_address 2a00:1838:36:1ba::eac3 !all
acl from_port3130 myportname port3130
tcp_outgoing_address 2a00:1838:36:1ba::eac4 from_port3130
tcp_outgoing_address 2a00:1838:36:1ba::eac4 !all
acl from_port3131 myportname port3131
tcp_outgoing_address 2a00:1838:36:1ba::eac5 from_port3131
tcp_outgoing_address 2a00:1838:36:1ba::eac5 !all
acl from_port3131 myportname port3132
tcp_outgoing_address 2a00:1838:36:1ba::eac6 from_port3132
tcp_outgoing_address 2a00:1838:36:1ba::eac6 !all

Готово, сохраните конфигурационный файл, и проверьте его на ошибки с помощью команды:

squid -k parse

Перезапустите Squid:

sudo systemctl restart squid

И не забудьте добавить порты в исключение брэндмауэера:

sudo iptables -A INPUT -p tcp --match multiport --dports 3128:3132 -j ACCEPT

Теперь вы можете попытаться подключиться через ваш прокси, например, используя Firefox, и проверить, какой адрес используется. Обратите внимание, что сервис не может определить ваш адрес IPv6, а если бы мы не запретили запросы к IPv4, то любой ресурс мог бы подставить вам сайт, который не поддерживает IPv6. Squid просто взял бы его по IPv4, чем выдал бы свой адрес.

Выводы

В этой статье мы рассмотрели, как выполняется настройка Squid для IPv6 и использования нескольких исходящих IP-адресов. Конечно, решение описывать каждый порт и IP отдельно не очень удобно при больших объёмах, и что-то мне подсказывает, что можно решить задачу иначе, если вы знаете более эффективный способ, напишите в комментариях.

Creative Commons License
Статья Настройка Squid для IPv6 распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Ваше имя тоже может быть здесь. Начните писать статьи для Losst. Это просто! Смотрите подробнее как начать писать статьи - Пишите для нас

Оцените статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (1 оценок, среднее: 5,00 из 5)
Загрузка...

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: