Задача
Настроить прокси сервер для парсинга, например, Wordstat.yandex.ru или поисковой выдачи. Так же подойдет прокси с забугорными IP адресами для доступа к определенным сайтам.
VPS и IP адреса для прокси
VPS с минимальной конфигурацией. Подойдет VPS c объемом оперативной памяти от 1 GB. Такие VPS продают в России от 150 рублей. Найти их не сложно на сайтах вроде https://poiskvps.ru/.
Также нам потребуются IPv4 адреса. IPv6 не подходят для парсинга wordstat. Если он вам не нужен, можно использовать IPv6, они на порядок дешевле.
Отсортировать VPS по стоимости доп. адресов от разных компаний не получится. Зачастую информации о стоимости доп. адресов нет на сайте хостинг-компании. А при большом количестве IP адресов стоимость самой VPS будет уже не так важна. В среднем один IPv4 адрес стоит от 60 до 90 рублей в месяц. Самые дешевые IP адреса, которые удалось найти, у https://beget.com/ru/vps – 55 рублей в месяц. Из минусов – IP арендуется сроком на 1 год. Если его забанят, вернуть часть денег за неиспользованный период не получится. Из плюсов: Бегет стабильный хостинг с неплохой тех. поддержкой.
Если нужен масштаб, можно поискать хостинг провайдеров, которые отдают большие пулы адресов со скидкой. Например https://www.reg.ru/ отдают от 128 адресов по 42 рубля (поштучно – 67 рублей). Но у этого хостинга обнаружилась одна неприятная особенность: не удалось настроить прокси сервер на работу с google. Любой поисковый запрос выдает 403 ошибку. Имейте ввиду, если вам нужен google.
Настройка сетевого интерфейса VPS
Нам нужно добавить дополнительные IP адреса сетевом интерфейсу сервера. Для этого:
- создаем копии файла /etc/sysconfig/network-scripts/ifcfg-eth0 столько раз, сколько у нас дополнительных IP адресов
- каждая копия файла должна отличаться номером на конце:
- ifcfg-eth0:1 (двоеточие обязательно)
- ifcfg-eth0:2
- ……..
- ifcfg-eth0:128
В новых файлах меняем IPADDR и DEVICE:
DEVICE=eth0:1 BOOTPROTO=static ONBOOT=yes IPADDR=45.9.73.229 NETMASK=255.255.255.255
После добавления перезагрузим сеть для применения параметров:
systemctl restart network
Проверить что все правильно можно командой:
ip addr
Должно быть что-то вроде:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:64:00:a5:00:68 brd ff:ff:ff:ff:ff:ff inet 45.9.73.217/24 brd 45.9.73.255 scope global eth0 valid_lft forever preferred_lft forever inet 45.9.73.229/24 brd 45.9.73.255 scope global secondary eth0:1 valid_lft forever preferred_lft forever inet 45.9.73.230/24 brd 45.9.73.255 scope global secondary eth0:2 valid_lft forever preferred_lft forever inet6 fe80::5064:ff:fea5:68/64 scope link valid_lft forever preferred_lft forever
У интерфейса eth0 добавились дополнительные адреса
Настройка IPTABLES для работы SQUID
Отключим доступ к серверу по всем портам, кроме необходимых. Порт 22 для всех адресов для доступа к консоли сервера. Порт 3128 откроем только для адреса с которого будем парсить поисковые системы.
В CentOS 7 управление файерволлом через iptables по умолчанию отключено. Исправим это.
Отключение встроенной утилиты firewalld:
systemctl stop firewalld systemctl disable firewalld
Установка iptables
yum -y install iptables-services
Включаем в автозапуск
systemctl enable iptables
Минимальный конфиг /etc/sysconfig/iptables
*filter<br> :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j REJECT -A INPUT -p tcp --dport 22 -j ACCEPT -A INPUT -p tcp -s 1.1.1.1 --dport 3128 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -j REJECT COMMIT
Вместо 1.1.1.1 нужно подставить IP компьютера с которого будет происходить парсинг.
Перезапускаем iptables для применения настроек
systemctl restart iptables
Установка SQUID
Обновим пакеты перед установкой:
yum update
Установка squid:
yum install squid
Добавляем в автозагрузку
systemctl enable squid
Стартуем сервер SQUID
systemctl start squid
В конфигурационный файл squid /etc/squid/squid.conf добавляем:
Мы уже закрыли порт для всех через iptables. Перебдим и включим доступ к прокси только для нашего IP
acl localnet src 1.1.1.1/32
Добавляем наши дополнительные ip адреса
acl myip_229 localip 45.9.73.229 tcp_outgoing_address 45.9.73.229 myip_229 acl myip_230 localip 45.9.73.230 tcp_outgoing_address 45.9.73.230 myip_230
Отключаем заголовки, нарушающие приватность:
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
Отключаем кеширование. Для наших целей оно не нужно:
cache deny all
Проверяем конфигурацию:
squid -k parse
Если все хорошо, рестартуем прокси сервер:
systemctl restart squid.service
На этом всё. Настроим броузер для работы с прокси.
Проверяем что о вас думает яндекс: https://yandex.ru/internet/
IP адрес должен быть IP адресом прокси.
Настройка squid для работы с несколькими IPv6
Если решили все же использовать IPv6 адреса, потребуется дополнительная настройка.
В файле /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 0
В файле /etc/sysconfig/network
NETWORKING_IPV6=yes
В файлах /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1 BOOTPROTO=static ONBOOT=yes IPV6INIT=yes IPV6ADDR=2A00:F940:2:1:2:0:0:23FF
В файле /etc/sysconfig/network-script/ifcfg-eth0 прописываем наши адреса
IPV6ADDR_SECONDARIES="2a00:1313:36:1ba::eac3/64 2a00:1313:36:1ba::eac4/64 2a00:1313:36:1ba::eac5/64 2a00:1838:36:1ba::eac6/64 2a00:1313:36:1ba::eac7/64"
В конфигурационный файл squid /etc/squid/squid.conf добавляем:
dns_v4_first off acl to_ipv6 dst ipv6 http_access deny !to_ipv6 http_access allow to_ipv6
Для запрета IPv4 протокола.
Для каждого IPv6 адреса создаем порт на прокси сервере. Тогда при запросе на IPv4 адреса сервера, исходящий трафик будет идти с нужного IPv6 адреса.
Вместо
http_port 3128
пропишем
http_port 45.9.73.229:3128 name=port3128 http_port 45.9.73.229:3129 name=port3129 http_port 45.9.73.229:3130 name=port3130 http_port 45.9.73.229:3131 name=port3131 http_port 45.9.73.229:3132 name=port3132
Настраиваем исходящие IPv6 адреса по аналогии с IPv4
acl from_port3128 myportname port3128 tcp_outgoing_address 2a00:1313:36:1ba::eac2 from_port3128 tcp_outgoing_address 2a00:1313:36:1ba::eac2 !all acl from_port3129 myportname port3129 tcp_outgoing_address 2a00:1313:36:1ba::eac3 from_port3129 tcp_outgoing_address 2a00:1313:36:1ba::eac3 !all acl from_port3130 myportname port3130 tcp_outgoing_address 2a00:1313:36:1ba::eac4 from_port3130 tcp_outgoing_address 2a00:1313:36:1ba::eac4 !all acl from_port3131 myportname port3131 tcp_outgoing_address 2a00:1313:36:1ba::eac5 from_port3131 tcp_outgoing_address 2a00:1313:36:1ba::eac5 !all acl from_port3131 myportname port3132 tcp_outgoing_address 2a00:1313:36:1ba::eac6 from_port3132 tcp_outgoing_address 2a00:1313:36:1ba::eac6 !all
Проверяем конфиг и перезапускаем сервер.
Не забудем в iptables открыть нужные порты:
-A INPUT -p tcp -s 1.1.1.1 --dport 3128:3132 -j ACCEPT
Проверить что ваш IPv4 адрес скрыт можно тут https://yandex.ru/internet/ или тут https://ipv6-test.com/
Добавить комментарий