Когда очень хочется экспериментов и не хочется вкладываться финансово.
Исходные данные:
- мобильный телефон с сим-картой;
- домашний сервер;
- интернет с выделенным IP.

Цель: сделать мобильный прокси.

Замысел применения в некоторых случаях преодолеть ограничения статического IP в домашнем интернете, который мне нужен для работы.

1. Подготовка сервера.

Этот раздел не представляет особенных сложностей, поэтому просто приведу конфиг для compose.yml для запуска FRP.

1.1. Настройка FRPS

Скрытый текст
[common]
bind_port = 7000

dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = strongpassword

# чтобы сервер мог принимать reverse-proxy от телефона
token = mysecret

1.2. Docker-compose.yml (для Swarm)

Скрытый текст
services:
  frps:
    image: ghcr.io/fatedier/frps:v0.68.1
    command: ["-c", "/etc/frp/frps.ini"]

    restart: always
    ports:
      - "7000:7000"      # основной порт FRP
      - "7500:7500"      # dashboard
      - "2001:2001"      # socks5-выход через phone-1
      - "2002:2002"      # socks5-выход через phone-2

    configs:
      - source: frps-conf
        target: /etc/frp/frps.ini

configs:
  frps-conf:
    name: frps-conf-${TIMESTAMP}
    file: ./prod.ini

1.3. Скрипт для запуска

Скрытый текст
#!/bin/bash
set -e

TIMESTAMP=$(date +%s)
export TIMESTAMP

cd frps

docker context use swarm
docker stack deploy --with-registry-auth --compose-file docker-compose.yml frps

docker context create - технология, которую предлагается освоить самостоятельно.

2. Подготовка телефона

Здесь сложнее: нам нужно собрать FRPC (Client) для валяющегося дома телефона на Android. Готовых сборок не нашёл.

2.1. Установка Termius.

С любого маркета - сложностей не возникает.

2.2. Сборка FRPC

Проблема: FRP актуальных версий несовместим с Android. Причина: современные версии FRP используют библиотеку anet, которая обращается к внутреннему полю net.zoneCache. В Android‑сборках Go это поле отсутствует, поэтому сборка падает.

Решение: использовать FRP 0.51.3 — последнюю совместимую версию.

pkg update
pkg install golang git
git clone --branch v0.51.3 https://github.com/fatedier/frp ~/frp
cd ~/frp

Создаём фиктивный dist для embed.go (FRP использует go:embed, который не допускает пустых директорий.)

mkdir -p web/frpc/dist 
echo “dummy” > web/frpc/dist/index.html

Собираем frpc под Android ARM64

GOOS=android GOARCH=arm64 CGO_ENABLED=0 go build -tags no_ui -o frpc-android ./cmd/frpc

Проверяем результат

./frpc-android -v

Если всё прошло успешно, вы увидите:

frpc version 0.51.3

2.3. Запуск FRPC

Готовим конфиг:

nano phone1.ini

содержимое файла:

[common]
server_addr = yourdomain
server_port = 7000
token       = super_secret

# SOCKS5 наружу
[socks]
type = tcp
remote_port = 2001

plugin = socks5
# plugin = http_prox

plugin_user = login
plugin_passwd = password

для ручного запуска:

./frpc-android -c phone1.ini

но нам это не нужно - гораздо интересней автозапуск.

2.4. Автозапуск и работа в фоне.

Прежде всего работа Termux при выключенном экране

termux-wake-lock

Автоматическое переподключение при обрыве

nano ~/frp/run_frpc.sh

Содержимое файла:

#!/data/data/com.termux/files/usr/bin/sh
cd $HOME/frp

while true
do
    echo "Starting FRPC..."
    ./frpc-android -c phone1.ini

    echo "FRPC stopped. Restarting in 1 second..."
    sleep 1
done

и конечно, не забываем поменять права:

chmod +x ~/frp/run_frpc.sh

Автозапуск FRPC при старте телефона (Termux:Boot)

mkdir -p ~/.termux/boot
nano ~/.termux/boot/frpc.sh

Вставить текст:

#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
cd $HOME/frp
nohup ./run_frpc.sh >/dev/null 2>&1 &

и снова не забываем про права:

chmod +x ~/.termux/boot/frpc.sh

Перезапускаем телефон - все стартует автоматически.

3. Пользуемся

curl --socks5-user user:password --socks5 yourdomain:2001 https://ifconfig.me

Остается только следить за тем, чтобы телефон к wi-fi не подключился, а то смысл потеряется ...

Комментарии (10)


  1. fututu
    15.05.2026 12:50

    Поясните, какие ограничения у статического IP?


    1. SadLion
      15.05.2026 12:50

      Бан по ip


      1. MxMaks
        15.05.2026 12:50

        Тоесть сначала сделать статический ип, чтобы к нему можно было подключаться удаленно, чтобы мочь использовать домашний моб. прокси, который обходит статический ип) … так то понятно оно зачем


        1. Mi113r Автор
          15.05.2026 12:50

          ну в общем и целом - да ... это смешно, конечно ))


          1. MxMaks
            15.05.2026 12:50

            Завести в дом второго провайдера по качеству и цене будет намного лучше


            1. DmitryBurykin
              15.05.2026 12:50

              Даже в нескольких км от центра Москвы есть дома без кабеля.


  1. funnycar
    15.05.2026 12:50

    Первые примерно полтора месяца белых списков, тоже обходил блокировки при помощи домашнего интернета. На роутере поднимал туннель до забугорного сервера, к роутеру с мобильного подключался по sstp и прокидывал мобильный трафик до забугра. Затем лазейку закрыли, вероятно из-за того что keendns тоже в бане.


    1. Mi113r Автор
      15.05.2026 12:50

      это не обход блокировок - цель совершенно другая ...


  1. lubagov
    15.05.2026 12:50

    Не очень понял зачем все это. Но но справедливости ради, в настройках APN, в самом телефоне, без установки каких либо программ, можно указать прокси сервер. Это вполне работает со Squid. Когда мне например требовался российский IP с телефона в другой стране, это помогало.


  1. Jacov911
    15.05.2026 12:50

    Не раскрыта тема авторотации айпи, это самое сложное. Нужно делать отключение модема телефона и повторное подключение