Прокси сервера раздать интернет

Wi-Fi через прокси без шума и пыли (почти)

Если раздать Wi-Fi через VPN задача простая и решаемая, вот даже статья «WiFi-портал в Россию» недавно вышла, то с прокси дело обстоит чуть сложнее, нужно немного костылей и напильников, а так же замечательное ПО под названием tun2socks.

Но, в отличие от VPN, прокси дешевле, и если нужно тестировать мобильные устройства с разных геолокаций — то прокси будет неплохим выходом. Конечно, существуют готовые решения, такие как Double SSH Tunnel Manager и Raspberry с прошивкой «Linux Mars», но мы, как водится, пойдём своим путём, да и готовые решения выше предназначены для другого.

Disclaimer. Статья пишется больше для себя, как заметки на полях, поэтому подробного мануала тут не будет. Тем не менее, материал может быть полезен и неограниченному кругу лиц, кто захочет реализовать самостоятельно. Понадобятся небольшие знания по сетям и линуксам.

Немного за технологию

Для работы с прокси будем использовать такую славную вещь, как tun2socks. На хабре уже была статья про это ПО (настоятельно рекомендую к ознакомлению), где рассказывается как настроить шлюз через прокси на Linux или Windows машине. Я же расскажу чуть подробнее, как настроить такой шлюз на роутере.

  1. Роутер на OpenWrt или роутер, который можно прошить в OpenWrt (я тестировал на незабвенном Tp-Link TL-MR3020 и на не менее незабвенном MikroTik hAP ac²). Помимо работы OpenWrt от роутера понадобится 128 и более мегабайт оперативной памяти и столько же места на внутреннем накопителе — или же возможность установить внешний.
  2. Под внешний накопитель вполне подойдёт обычная usb-флешка или sd-карточка минимального размера. Я экспериментировал с древней флешкой на 4гб. Для ценителей — usb-модем с sd-карточкой:)
  3. Прокси-провайдер (предпочтительнее socks5 c поддержкой udp)
  4. Немного свободного времени

Прошивка роутера

Берём нашу модель и идём на сайт OpenWrt, дальше смотрим-курим поддержку и мануалы по установке. Например, для hAP ac² применимы стандартные методы прошивки для микротиков — https://openwrt.org/toh/mikrotik/common

Подробно расписывать я не буду, но небольшая памятка-TL;DR для микротиков — копируем лицензионный ключ к себе (на всякий случай) выставляем приоритет загрузки на сеть, по BOOTP при помощи например tftp32 грузим sysupgrade.bin, затем при помощи вебморды или ssh+scp прошиваем уже ось initramfs.bin. Если понадобилось вернуть RouterOS, то можно это сделать через netinstall, или через утилиту командной строки rbcfg.

Считаем что роутер у нас перепрошит в OpenWrt. Для роутеров с небольшой внутренней памятью (16мб в hAP ac²!) понадобится перенос системы на внешнюю флешку. Инструкцией в сети полно, поэтому опять же кратенько:

  1. форматируем флешку — можно сделать сразу два раздела, под систему и swap. Под винду я использовал Minitool Partition Wizard. Выбор файловой системы — по вкусу, я вот взял ext4. По размерам — хватит минимального, я подкинул на swap 256мб, под систему — 1Гб
  2. ставим в OpenWrt нужные пакеты (роутер надо будет выпустить в инет):
opkg update opkg install block-mount kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-storage kmod-fs-ext4
  1. Ротуер в ребут, через dmseg можно проверить, что флешка нашлась. Формируем fstab, можно через block-detect (block detect >> /etc/config/fstab), приводим fstab примерно к такому виду (честно стянуто с инета):
config 'global' option anon_swap '0' option anon_mount '1' option auto_swap '1' option auto_mount '1' option delay_root '5' option check_fs '0' option from_fstab '1' config 'swap' option uuid 'b91e3bff-9e15-4fd0-82e7-25d75d889ce6' option enabled '1' config 'mount' option target '/overlay' option uuid '7ee9d192-239f-4401-b749-3fb60b4f8eaa' option fstype 'ext4' option options 'rw,sync' option enabled '1'
mkdir /mnt/sda2 mount /dev/sda2 /mnt/sda2 tar -C /overlay -cf - . | tar -C /mnt/sda2 -xf - umount /mnt/sda2 rm -rf /mnt/sda2

Теперь у нас есть роутер, на OpenWrt и с достаточным свободным местом. Едем дальше.

Читайте также:  Tp link tl wr741nd нет интернета

Магия tun2socks

Берём tun2socks под нужную нам платформу из гитхаба разработчика — https://github.com/xjasonlyu/tun2socks/releases. Например, для нашего hAP ac² нужна будет arm-архитектура. Я закинул бинарник сюда — /usr/bin/tun2socks

Ставим необходимые пакеты:

opkg update opkg install ip-full kmod-tun

Создаём таблицу маршрутизации (в неё будем пихать весь трафик, который хотим завернуть в прокси):

echo -e '\n300 tun2socks\n' >> /etc/iproute2/rt_tables

Формируем файл для init.d, чтобы tun2socks работал как сервис. У меня он вышел примерно такой (/etc/init.d/tun2socks):

#!/bin/sh /etc/rc.common START=90 USE_PROCD=1 #PROCD_DEBUG=1 #имя туннельного интерфейса tun_name='t2s0' #адрес туннельного интерфейса tun_ip='10.254.1.1' #самое главное - адрес прокси proxy='socks5://192.168.88.201:123456' loglevel='warn' #запускаем tun2socks tun2socks() < procd_open_instance procd_set_param command /usr/bin/tun2socks -device tun://$tun_name -proxy $proxy -loglevel $loglevel procd_close_instance >#правила iptables при старте rulesup()< iptables -t mangle -N tun2socks #отправляем всё, что с бриджа в прокси iptables -t mangle -I PREROUTING -i br-lan -j MARK --set-mark 3 #отправляем https трафик в прокси iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 3 #запускаем туннельный интерфейс ip tuntap add dev $tun_name mode tun ip addr add $/24 dev $tun_name ip link set dev $tun_name up #формируем таблицу маршрутизации ip route add default dev $tun_name table 300 ip rule add fwmark 3 lookup 300 #iptables -A forwarding_lan_rule -o $tun_name -j ACCEPT > #подчищаем правила, когда стопим сервис rulesdown() < ip rule del fwmark 3 lookup 300 iptables -t mangle -D PREROUTING -i br-lan -j MARK --set-mark 3 iptables -t mangle -D OUTPUT -p tcp --dport 443 -j MARK --set-mark 3 ip tuntap del dev $tun_name mode tun >start_service() < rulesup tun2socks >service_stopped()

Теперь можно включить и запустить сервис, и наслаждаться вайфаем через прокси (настройку собственно вайфая на OpenWrt тоже пожалуй оставим за кадром):

/etc/init.d/tun2socks enable /etc/init.d/tun2socks start

Из нюансов — для Tp-Link мне пришлось брать не самый свежий релиз tun2socks, свежий выпадал в ошибку. Зато если на роутере есть кнопка или переключатель — можно повесить на неё старт-стоп сервиса:) Для Tp-Link TL-MR3020 это может выглядеть, как скрипт /etc/hotplug.d/button/00-button :

#!/bin/sh if [ $ACTION == "released" ] ; then if [ $BUTTON == "BTN_1" ] ; then /etc/init.d/tun2socks stop #logger "Slider 3G" elif [ $BUTTON == "BTN_0" ] ; then /etc/init.d/tun2socks start #logger "Slider WISP" fi elif [ $BUTTON == "BTN_0" ] || [ $BUTTON == "BTN_1" ] ; then if grep -qe "sw1.*in hi" /sys/kernel/debug/gpio ; then if grep -qe "sw2.*in hi" /sys/kernel/debug/gpio ; then #logger "Slider AP" fi fi fi

Tp-Link TL-MR3020 как бы проксирует Wi-Fi

В принципе всё, за некоторым исключением, про которое поговорим отдельно.

Читайте также:  Настроить интернет летай на компьютере

Утечка DNS

Внимательный читатель заметит, что я зачем-то кидаю https-трафик от роутера в прокси тоже. Делается это по причине, чтоб не «подтекал» DNS, что обнаруживается всякими прокси-детекторами. Конечно, DNS работает по UDP:53.. А вот DoH (DNS over HTTPS) нет.

Поэтому не забудем включить поддержку DoH на нашем роутере, поставив соответствующий пакет:

opkg update opkg install https-dns-proxy

В стандартных настройках используются DNS-серверы от Google и Cloudflare. Вы можете настроить на любой другой сервер, и, выбрав определённые IP серверов, маркировать трафик до них для отправки в прокси. Я же для простоты промаркировал весь https 🙂

Не хочу прошивать Микротик, он классный

С появлением RouterOS 7 и доработки функционала контейнеров в ней, можно и не сносить прекрасный RouterOS, а запихать tun2socks в контейнер. Оно работает, но с оговорками (поскольку создаётся tap-интерфейс, в процессе дебага может понадобится поребутать роутер). Контейнер можно приготовить на основе образа от разработчика — https://hub.docker.com/r/xjasonlyu/tun2socks , изменив в нём работу с таблицами маршрутизации и iptables по вкусу, и потом силами микротика и его nat (или route rule) отправлять нужный трафик в контейнер. Подробностей не будет, поскольку вариант хоть и занятный, но не каждый MikroTik умеет в контейнеры, да и задачу реализовывал ещё до поддержки контейнеров в ROS7, поэтому дальше так сказать MVP 🙂 реализовывать не стал.

Но если кому захочется — документация о работе с контейнерами — https://help.mikrotik.com/docs/display/ROS/Container, в общем случае понадобится одна переменная среды — PROXY. Из коробки работать не будет, нужно адаптировать образ, ну и конечно понадобится флешка под хранилище — куда без неё:)

Статья вышла немного сумбурной, но надеюсь может быть полезной кому-то, кроме меня. Удачного проксирования!

Читайте также:  Подключить вай фай безлимитный домашний интернет мгтс

Источник

Как раздать прокси интернет через NAT?

В организации есть 2 провайдера: один без фильтра, второй с фильтром. Интернет от первого раздается стандартными средствами windows server 2008 через NAT. Собственно вопрос по второму. Поскольку доступ в интернет с фильтром работает через прокси + сертификат crt, возникает вопрос как его раздать аналогично первому? Почитав различные мануалы, предполагаю, что средствами windows это не реализовать. Точнее реализовать возможно, но с костылями (потребуется на каждом компе пользователя устанавливать сертификат + в настройках указывать прокси), что при большом количестве компов сделать достаточно сложно. Думаю в сторону vbox+linux, но есть ли в данной задумке возможность раздачи этого подключения? Возможно есть и другие способы, о которых мне неизвестно. Заранее благодарен за помощь.

akelsey

Ваш вопрос из области «transparent proxy», т.е. требуется совместная работа — сетевой железки и прокси сервера.
Логика следующая (опустим нюансы аутентификации), если компьютер пользователя инициировал запрос на порт 80 — то сетевая железка должна редиректить такие запросы на ваш прокси, который поддерживает режим «transparent» и фильтруя трафик пропускает разрешенный. Функционал «прозрачный прокси» поддерживается Squid-proxy, сборка под Win32 тоже есть, но с остальным придется разбираться самостоятельно.
Либо вам уже рассказали про способы сконфигурить все на стороне клиента через AD если он есть.
Выбирать вам.

martin74ua

Для автоматической настройки большого количества компов в организации придумали всякие Active Directory и подобное.

Источник

Оцените статью
Adblock
detector