Чтобы воспользоваться Fable 5, придётся опять пройти небольшой квест
Чтобы воспользоваться Fable 5, придётся опять пройти небольшой квест

После выхода первой части прошло 2 месяца, и наши многоуважаемые американские партнёры из Anthropic и Google что-то подхимичили, и новые версии Claude Code и Antigravity перестали работать.

И нам придётся осваивать новые хитрости для настройки VPS, чтобы быть на острие прогресса. В статье будут настройки для VPS и Linux-десктопа.

Предыстория

В прошлой части статьи с помощью заграничного VPS, ssh и privoxy мы успешно настроили запуск Claude Code. Но время идёт, и прошлая схема почти перестала работать.

В новых версиях Claude Code и Antigravity встроили какую-то дополнительную защиту, и они перестали запускаться. Claude Code ясно говорит, что проблема в стране, а Antigravity падает с неясной ошибкой «Agent terminated due to error».

Когда впервые стали появляться такие проблемы, то я нашёл обходной путь. Дело в том, что вначале Claude Code существовал в виде модуля для Node.JS. То есть, фактически, это был такой исполняемый JavaScript-модуль. Он работал через типовые способы доступа к сети и прекрасно проксировался через privoxy.

Через некоторое время Anthropic сделали его в виде уже нативного бинарника, который умеет самообновляться.

Я подумал, что для меня не так важны какие-то мелкие нововведения и сочетания клавиш и что мне хватит старой версии программы. Я поставил Node.JS и последнюю версию Claude Code v2.1.112, которая умеет работать как модуль Node.JS. В свою пользовательскую папку ~/bin положил скрипт-обёртку claude, а в переменной PATH своего пользователя поставил этот путь первым.

Для перехвата всех запросов из программы Claude Code я использовал программу proxychains. Из-под неё можно запустить что угодно и она будет перехватывать https-запросы.

#!/bin/bash

# Запускаем целевую программу
# "$@" передаёт все аргументы командной строки "как есть" (с сохранением кавычек)
# exec заменяет процесс оболочки процессом программы, экономя ресурсы
DISABLE_AUTOUPDATER=1 exec proxychains -q /usr/bin/claude

И всё заработало. Я подумал, ладно — живём дальше. Но не тут-то было.

Квантизация и запланированное устаревание

Через некоторое время Opus 4.7, который воспринимался как откровение богов, как Deus ex Machina, который решал сложнейшие задачи с пары попыток, стал подтупливать. И чем дальше, тем сильнее.

Он стал предлагать какие-то халявные лёгкие пути вместо решения проблем, маскировку проблем, а не их решение. Или стал говорить: «Программа зависает всего в 3% случаев, это хороший показатель, давай двигаться дальше». Требования, записанные в CLAUDE.md, стали выполняться не все. Дошло даже до галлюцинаций.

То, что каждый запрос занимает минуты, — с этим я ещё как-то смирился, ведь у Anthropic не хватает вычислительных мощностей, они даже у Маска арендуют Colossus в Мемфисе.

Я понял, что всякие меняющиеся строчки с красивыми формами глаголов типа Frosting…, Blanching…, Schlepping…, переливающиеся всеми оттенками цветов, это просто мишура, создающая видимость работы, пока запрос стоит в очереди к нейросети.

Но, видимо, им очень нужно переводить клиентов на новые версии программ и новые модели, поэтому старые модели они стали квантизировать. Некоторые авторы на Хабре считают, что они идут на прямой обман и подсовывают Sonnet вместо Opus. Я не думаю, что они идут на прямой обман. Зачем? Ведь есть же квантизация! Достаточно умную модель пропустить через её мясорубку — уменьшить точность каждого параметра с 4 байт до 4-8 бит и она будет запускаться на более дешёвом железе.

Это не является обманом. Opus остаётся Opus`ом. Но просто более тупым. И чем нужнее переход на новые модели, тем можно сильнее квантизировать. Вплоть до 4 бит, что для Opus уже что-то лоботомии.

Конечно, всё это мои домыслы. Но выглядит как весьма правдоподобное объяснение.

Итак, я пользовался Opus 4.7. Всё было нормально. Но появился Opus 4.8. В моей старой версии Claude Code по какой-то причине его не было. И я думал, что ничего страшного. Но он стал работать хуже, и я стал задумываться, как заставить свежие версии Claude Code работать.

Суть проблемы

Очевидно, что разработчики встроили дополнительные механизмы проверки географических ограничений. Скорее всего, используется какой-то нестандартный запрос, что-то типа ping.

Встала задача запуска программы в некотором изолированном пузыре, в котором будет полностью свой сетевой стек. Я не хочу абсолютно весь трафик пускать через VPS, мне нужно чтобы конкретная программа, находясь в пузыре, могла слать UDP, ICMP, HTTP и HTTPS-запросы с заграничного IP.

Самое простое решение

В прошлой части мы тщательно выбирали VPS для максимально быстрой работы с Claude Code. И даже было видно, что у него есть серверы в Северной Европе. Скорее всего, в дата-центрах Nebius в Финляндии.

Поэтому мы можем просто запускать Claude Code внутри VPS. И работать удалённо через SSH. Это прекрасная опция, если всё, что нам нужно, можно поставить на VPS.

Для такого стиля работы достаточно выбирать сервер с оплатой «За ресурсы», а не помесячной. Выбрать побольше ядер. Когда вам потребуются дополнительные ядра для быстрой компиляции программ, то они у вас будут.

Но как быть, если вы хотите работать со своей файловой системой или пишете ядра CUDA, которые можно протестировать только локально? Хотелось бы, чтобы и локально всё работало.

Делаем изолированный сетевой пузырь для Claude

Скажу сразу, хоть я и пишу для блога RUVDS, у меня есть разные VPS. В том числе американских провайдеров. И настроить виртуальный сервер от RUVDS оказалось настолько проще, что в итоге я пользуюсь именно им, несмотря на имеющийся выбор.

Для начала обновим и установим curl на VPS:

apt update
apt install curl -y
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh

1. Быстрая установка WireGuard на сервер

На удалённом сервере выполняем скрипт автоустановки от angristan, который сам сгенерирует ключи и конфиг для клиента. Я на все вопросы отвечал Yes или Enter. Там предложат ввести имя — введите что-то короткое в нижнем регистре без цифр до 15 символов.

curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh

Копируем полученный клиентский конфиг (например, wg0-ruvds.conf) на локальный ПК в папку /home/$USER/conf. Имя пользователя своё подставляем.

В конфиге смотрим порт, на котором будет висеть WireGuard. Этот порт нужно открыть на VPS и разрешить его использовать как NAT. Например, порт 55555.

iptables-legacy -I INPUT -p udp --dport 55555 -j ACCEPT
# Это менять не придётся. Типовой ip
iptables-legacy -I FORWARD -s 10.66.66.0/24 -j ACCEPT
iptables-legacy -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables-legacy -t nat -I POSTROUTING -o eth0 -j MASQUERADE

2. Запуск Claude в изолированном сетевом пространстве

Ставим локально пакет wireguard-tools. На моём Calculate Linux это команда:

emerge -av net-vpn/wireguard-tools

Вместо использования стандартной команды wg-quick up, так как она завернёт в туннель трафик всего ПК, мы создадим скрипт, который поднимет интерфейс в изолированном «пузыре» специально для Claude.

Я сохранил следующий скрипт в папке /usr/local/bin/claude, подставив свой IP из конфига wg0.conf:

#!/bin/bash

USER="Ваш линукс пользователь"
# Имя сетевого пространства nbb (network bubble)
SPACE="nbb"
# Конфигурация
WG_CONF="/home/$USER/conf/wg0-ruvds.conf"
# Важно: имя файла (wg0-ruvds) не должно превышать 15 символов!

# 0. Очистка "хвостов" от предыдущих неудачных запусков
ip netns del $SPACE 2>/dev/null

# 1. Создаем сетевое пространство (namespace) с именем "vpn"
ip netns add $SPACE
ip -n vpn link set lo up

# 2. Изолируем DNS (чтобы приложение использовало DNS туннеля)
mkdir -p /etc/netns/$SPACE
echo "nameserver 1.1.1.1" > /etc/netns/$SPACE/resolv.conf # Или DNS из вашего wg0.conf
echo "nameserver 1.0.0.1" >> /etc/netns/$SPACE/resolv.conf

# 3. Создаем интерфейс WireGuard и закидываем его в namespace
ip link add wg1 type wireguard
ip link set wg1 netns $SPACE

# 4. Применяем конфигурацию ключей
wg-quick strip "$WG_CONF" | ip netns exec $SPACE wg setconf wg1 /dev/stdin

# 5. ВАЖНО: Укажите здесь Address= из вашего wg0.conf
ip -n $SPACE addr add 10.66.66.2/32 dev wg1

# 6. Включаем интерфейс и маршрутизацию внутри "пузыря"
ip -n $SPACE link set wg1 up
ip -n $SPACE route add default dev wg1

echo "Туннель изолированно запущен! Запускаем shell внутри туннеля..."

# 7. Открываем bash от имени обычного пользователя внутри VPN-пространства

cd /home/$USER
ip netns exec $SPACE sudo -u $USER bash
# /home/$USER/.local/bin/claude — это оригинальный исполняемый файл
#ip netns exec $SPACE sudo -u $USER bash -c /home/$USER/.local/bin/claude

# 8. Корректное завершение (выполнится только после закрытия bash)
echo "Закрытие сессии. Очистка сетевого пространства..."
ip netns del $SPACE
ip link del wg1 2>/dev/null
echo "Готово."

Запускаем из под root: claude

Мы оказываемся внутри пузыря. Проверка работы:

ping 8.8.8.8
curl https://ifconfig.me

Видим пинги и IP-адрес VPS.

Далее в скрипте комментируем bash и раскомментируем claude:

#ip netns exec vpn sudo -u $USER bash
ip netns exec vpn sudo -u $USER bash -c /home/$USER/.local/bin/claude

That’s all, folks!

3. Адаптация пузыря под Antigravity

Меняем одну строку в скрипте:

ip netns exec vpn sudo -u $USER bash -c "/home/$USER/Programs/Antigravity\ IDE/bin/antigravity-ide"

Запускаем любую программу в пузыре

Поскольку иногда нужно запускать в сетевом пузыре разные программы, я придумал универсальный скрипт nbb — от «network bubble».

Идея такая:

  • Запускаем пузырь при старте компьютера

  • Запускаем любую программу в пузыре командой sudo nbb program_name args

  • Уничтожаем пузырь при выключении компьютера (необязательно)

Скрипт старта пузыря /etc/local.d/nbb.start
#!/bin/bash

SPACE=nbb

# Конфигурация
WG_CONF="/home/inetstar/conf/wg0-ruvds.conf"
# Важно: имя файла (wg0-veter) не должно превышать 15 символов!

# 0. Очистка "хвостов" от предыдущих неудачных запусков
ip netns del $SPACE 2>/dev/null

# 1. Создаем сетевое пространство (namespace) с именем "vpn"
ip netns add $SPACE
ip -n $SPACE link set lo up

# 2. Изолируем DNS (чтобы приложение использовало DNS туннеля)
mkdir -p /etc/netns/nbb
echo "nameserver 1.1.1.1" > /etc/netns/nbb/resolv.conf # Или DNS из вашего wg0.conf
echo "nameserver 1.0.0.1" >> /etc/netns/nbb/resolv.conf

# 3. Создаем интерфейс WireGuard и закидываем его в namespace
ip link add wg1 type wireguard
ip link set wg1 netns nbb

# 4. Применяем конфигурацию ключей
wg-quick strip "$WG_CONF" | ip netns exec nbb wg setconf wg1 /dev/stdin

# 5. ВАЖНО: Укажите здесь Address= из вашего wg0.conf
ip -n $SPACE addr add 10.66.66.2/32 dev wg1

# 6. Включаем интерфейс и маршрутизацию внутри "пузыря"
ip -n $SPACE link set wg1 up
ip -n $SPACE route add default dev wg1
Скрипт уничтожения пузыря /etc/local.d/nbb.start
#!/bin/bash

SPACE=nbb

ip netns del $SPACE
ip link del wg1 2>/dev/null

Даём права утилите nbb в файле /etc/sudoers.d/nbb:

your_linux_user_name ALL=(ALL) NOPASSWD: /usr/local/bin/nbb

Утилита nbb в файле /usr/local/bin/nbb:

#!/bin/bash

ip netns exec nbb sudo -u your_linux_user_name "$@"

Теперь для запуска любой программы в сетевом иностранном пузыре нужно набрать:

sudo nbb program_name arguments_of_program

Заставляем claude работать как родного

Берём подход из предыдущей части статьи. В файле ~/.bashrc прописываем приоритет пользовательской папки ~/bin и путь к папке с claude:

export PATH="$HOME/bin:$PATH:$HOME/.local/bin"

В файле /home/username/bin/claude пишем:

#!/bin/bash

sudo nbb ~/.local/bin/claude "$@"

Теперь для нас использование claude в терминале из любой папки ничем не отличается от родного использования.

claude --resume "Поехали!"

Заключение

Хоть и не хотелось повышать свою грамотность в области сетевых технологий, но пришлось. И успешно!

На удивление, RUVDS продают очень хорошие VPS, на которых с первой попытки у меня завелось всё что нужно, в отличие от одного именитого американского провайдера.

Вообще VPS — отличная вещь в наше время, я их использую для многих целей.

Ну что же, я пошёл осваивать Fable 5.

Всех благ и хорошего вайбкодинга!

© 2026 ООО «МТ ФИНАНС»