Раздать wifi через прокси

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 и с достаточным свободным местом. Едем дальше.

Читайте также:  Два ноута вай фай

Магия 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

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

Читайте также:  Смарт тв теряет wifi

Утечка 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. Из коробки работать не будет, нужно адаптировать образ, ну и конечно понадобится флешка под хранилище — куда без неё:)

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

Источник

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

Имеется прокси сервер, сейчас использую его прописав в браузере, но появилась нужна в раздаче данного прокси через Wifi. Как быть? Чтобы клиент подключился, и без всяких дополнительных настроек(записи в браузер и т.д.) пользовался прокси интернетом?

Читайте также:  Голубая волна вай фай

bk0011m

Не сразу обратил внимание на последнюю строку, написал чепуху. Исправляюсь.

Вопрос. У вас что-за прокси?
В теории должно быть так:
1. Настраиваете работу прокси в прозрачном режиме (transparent)
2. На шлюзе перенаправляете все запросы от пользователей WiFi сети на 80-й порт TCP -> на прокси
3. Не забываете разрешить хождение пакетов на файрволе в обе стороны

Ну или вариант поставить не просто WiFi точку доступа, а железку покруче, которая может самостоятельно перенаправлять пакеты. Например такую: Mikrotik RB951G-2HnD

54b93e1e4dc145df863739a6cbba6ba0.jpg

Схема примерно такая:

iDx

Прокси сервер находится на другом сервере. Использую ip с портом 3128. Использую 3proxy под Ubuntu. Имеется ADSL модем Acorp, к модему подключен роутер TP-Link(он и раздает весь интернет через вай фай, lan). Не могли бы по подробней рассказать про настройку?

ifaustrue

@iDx если в сети есть самостоятельный dhcp сервер (а не только вышеозвученное железо), то при помощи директив dhcp можно сообщить клиентскому браузеру адрес то файла автоматической настройки прокси.
ru.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol

А нахрен вам вообще нужна прокси? Есть можем, есть точка доступа, вы статистику считаете (лучше использовать решения поверх iptables)? Или порно \ вконтакт блокируете?

bk0011m

Эта функция DHCP не всегда корректно отрабатывается клиентами. ИМХО прозрачный прокси — проще.

@iDx — я картинку приложил, как должна сеть выглядеть

Источник

Как расшарить прокси на вай-фай?

Всем привет. Сразу оговорюсь что в теме сетей мой уровень ближе к нубу, по этому молю об объяснении на пальцах:)
Имеем:
1. ПК с возможность раздачи wi-fi
2. Пачку купленных годных проксей
3. Proxifier клиент (может еще что-то?)
4. Пару телефонов и компов, которые хотят заполучить IPшник прокси.

Вопрос:
Как запустить имеющуюся проксю на wi-fi?

Средний 2 комментария

Jump

Попробуйте четко и ясно изложить что конкретно вам нужно, и в чем проблема.

В вопросе бред какой-то, абсолютно непонятный.

CityCat4

АртемЪ, Я так понял, ТС хочет свои телефоны и компы по wifi подцепить к другому компу, который выходит в тырнет через купленые прокси 🙂

Кто выступает в роли шлюза? ПК с wifi или есть до него роутер?

На роутере(или на ПК если он шлюз) надо поднять подключения к проксям.
И далее маршрутизацией завернуть трафик от определенных клиентов на ip адрес прокси.

travelator, Грубо гооворя. Роутер(шлюз) подключаешь к проксям.
Далее есть понятие роутинг. С помощью него заставляешь клиента ходить не через обычный интернет, а через прокси.

Что то типа route add 192.168.0.2(адрес клиента) перенаправить >> на ip прокси.

Напиши на чем у тебя ПК с wifi. Там винда?

Источник

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