Как поднять свой прокси-сервер?

Как поднять свой прокси-сервер?

mama

Как вы уже знаете - новость недели это блокировка телеграма Роскомнадзором. И хуй бы с ним, но людям он нужен, так что сегодня мы будем поднимать проксики для разблокировки. Я жутко ленивый ублюдок, руками настраивать мне лень, пусть работает комп - он железный. Нахуярим скрипт и будем делать прокси пачками для всех друзей и знакомых, много быстро и дёшево.

Короче берём VPS с дебианом, компилим и ставим на них dante-1.4.2. Настраиваем авторизацию по паролю, добавляем сколько нужно юзеров и вуаля. VPS за 20 баксов в месяц - тянет десяток клиентов без тормозов. Нормальный дедик за сотку - потянет всех твоих друзей и знакомых. Если проксик спалят в соцсетях и его заблокирует Роскомнадзор - не беда, новый настраивается за минуту.

Как пользоваться: прописываешь свой уникальный порт для прокси (переменная PROXY_PORT) и список пользователей вместе с паролями (ищи в скрипте строчку add_proxy_user), копируешь на дедик, запускаешь и ждёшь пока всё установится. Установку можно делать быстрее и с меньшими затратами машинных ресурсов, если заранее собрать бинарники sockd и заливать сразу их, а не компилировать на месте. Это улучшение я оставляю вам, мне и так нормально.

Вот собственно сам скрипт:

#!/bin/bash # update OS and install required packages if ! ( apt-get -y -q update && apt-get -y -q upgrade && apt-get -y -q dist-upgrade ); then echo "Can't update Debian OS packages." >&2 exit 1 fi if ! ( apt-get -y -q --no-install-recommends install build-essential libwrap0-dev ); then echo "Can't install required Debian packages" >&2 exit 1 fi apt-get -y -qq autoremove >/dev/null 2>&1 # disable bash history rm ~/.bash_history && ln /dev/null ~/.bash_history -sf # download & unpack dante server source code if ! ( wget https://www.inet.no/dante/files/dante-1.4.2.tar.gz ); then echo "Can't download dante server." >&2 exit 1 fi if ! ( tar xzf dante-1.4.2.tar.gz && rm dante-1.4.2.tar.gz ); then echo "Can't unpack dante server." >&2 exit 1 fi cd dante-*/ export CFLAGS="-march=native -mtune=native -Ofast -pipe -ffunction-sections -fdata-sections -fomit-frame-pointer -flto -ffat-lto-objects" export LDFLAGS="-Wl,--gc-sections,--as-needed,--strip-all" export CPPFLAGS=$CFLAGS export CXXFLAGS=$CFLAGS ./configure --without-gssapi --without-krb5 --without-sasl --without-ldap --without-upnp --without-pam --without-bsdauth if [[ $? -ne 0 ]]; then exit $?; fi make -j2 && make install if [[ $? -ne 0 ]]; then exit $?; fi cd .. && rm -rf dante-* # $1 - space-separated string # $2 - search argument function str_get_next() { echo "$1" | awk -v "aF=$2" '{for (i=1;i<=NF;i ){if ($i==aF){print $(i 1)}}}' } # $1 - IP address for route to function net_get_route() { ip -4 route get to "$1" | head -1 } # $1 - IP address for route to function net_get_route_if() { str_get_next "$(net_get_route $1)" "dev" } # $1 - IP address for route to function net_get_route_src() { str_get_next "$(net_get_route $1)" "src" } PROXY_PORT=2371 INET_IF=$(net_get_route_if "8.8.8.8") INET_IP=$(net_get_route_src "8.8.8.8") echo "INET: $INET_IP (dev: $INET_IF)" echo "PROXY: $INET_IP:$PROXY_PORT" # create sockd.conf echo "internal: $INET_IP port = $PROXY_PORT" > /etc/sockd.conf echo "external: $INET_IP" >> /etc/sockd.conf echo "socksmethod: username" >> /etc/sockd.conf echo "user.privileged: root" >> /etc/sockd.conf echo "user.notprivileged: nobody" >> /etc/sockd.conf echo "client pass {" >> /etc/sockd.conf echo " from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0" >> /etc/sockd.conf echo "}" >> /etc/sockd.conf echo "socks pass {" >> /etc/sockd.conf echo " from: 0.0.0.0/0 to: 0.0.0.0/0" >> /etc/sockd.conf echo " protocol: tcp" >> /etc/sockd.conf echo "}" >> /etc/sockd.conf # add iptables rules and sockd to autorun echo "#!/bin/sh -e" > /etc/sockstart echo "$(command -v sleep) 60" >> /etc/sockstart echo "$(command -v iptables) -A INPUT -i $INET_IF -d $INET_IP -p tcp --dport $PROXY_PORT -j ACCEPT" >> /etc/sockstart echo "$(command -v iptables) -A OUTPUT -o $INET_IF -s $INET_IP -p tcp -j ACCEPT" >> /etc/sockstart echo "$(command -v sockd) -D -f /etc/sockd.conf" >> /etc/sockstart echo "exit 0" >> /etc/sockstart chmod 700 /etc/sockstart sed -i 's/exit 0//' /etc/rc.local echo "nohup /etc/sockstart >/dev/null 2>&1 &" >> /etc/rc.local echo "exit 0" >> /etc/rc.local # re-enable rc.local if disabled update-rc.d rc.local start 99 2 > /dev/null 2>&1 systemctl enable rc-local.service > /dev/null 2>&1 # $1 - username, $2 - password function add_proxy_user() { useradd -s /bin/false -d /nonexistent -G proxy -M "$1" echo "$1:$2" | chpasswd } # add proxy users add_proxy_user "PxUser123" "2r8MCanE4jDj66x7" add_proxy_user "PxUser456" "pqtwLn32JDMXaq13" # startup sockd now nohup /etc/sockstart >/dev/null 2>&1 & # all done echo "All OK!" exit 0

Report Page