ChatGPT на Linux через свой сервер
На Linux у ChatGPT нет официального десктопного клиента — вход идёт через браузер, а значит обход географической блокировки должен работать на уровне всей системы, а не одной вкладки. Публичные VPN-расширения туннелируют только браузер, и часть трафика, особенно DNS-запросы, нередко уходит в обход. Собственный сервер с WireGuard, поднятый штатными средствами дистрибутива и запускающийся автоматически при загрузке, закрывает это надёжнее — разберём установку и грабельную часть с DNS.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Почему для браузера на Linux нужен отдельный подход
У ChatGPT на iOS и Android есть нативное приложение, которое туннелируется VPN-профилем целиком. На Linux ChatGPT — это сайт chat.openai.com, открытый в Firefox или Chrome. Разница принципиальная: браузер всё чаще использует собственный DNS-резолвер (DNS over HTTPS), который ходит на жёстко прописанный сервер напрямую по HTTPS, независимо от системных настроек сети и даже от поднятого VPN-туннеля. В итоге IP-пакеты идут через WireGuard, а резолвинг имени — по старому пути, и OpenAI по IP, к которому привёл этот резолвинг, определяет исходный регион.
Второй нюанс — разнообразие сетевых стеков Linux. Есть системы с systemd-resolved (Ubuntu, Fedora и большинство современных дистрибутивов), есть минималистичные сборки, где DNS живёт прямо в /etc/resolv.conf. Один и тот же конфиг WireGuard в этих случаях ведёт себя по-разному, и без проверки легко решить, что туннель настроен, хотя утечка DNS осталась.
Что понадобится
Сервер в регионе, откуда OpenAI не блокирует запросы (обычно США или Великобритания), и пара ключей WireGuard — на сервере и на клиенте. Если серверная часть ещё не настроена, команды wg genkey, wg pubkey и структура серверного конфига разобраны в статье про установку WireGuard на VPS. Здесь — про клиента, Linux-машину, с которой вы заходите в ChatGPT через браузер. От сервера нужны публичный ключ, внешний IP или домен, порт (обычно 51820) и внутренний адрес, который сервер выдаст клиенту, например 10.66.0.2/32.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать сервер в СШАУстановка WireGuard: apt и dnf
На Debian/Ubuntu:
sudo apt update
sudo apt install -y wireguard wireguard-tools resolvconf
Пакет resolvconf нужен не всегда — на Ubuntu 22.04+ и Debian 12 сетью обычно управляет systemd-resolved, и его можно пропустить, если служба активна (systemctl status systemd-resolved).
На Fedora, RHEL, AlmaLinux и других RPM-дистрибутивах:
sudo dnf install -y wireguard-tools
Начиная с ядра 5.6 модуль WireGuard входит в состав самого ядра, поэтому на актуальных версиях Fedora, AlmaLinux 9, Debian 12 и Ubuntu 22.04+ отдельно собирать wireguard-dkms не требуется. Проверить, что модуль виден системе:
sudo modprobe wireguard && echo "модуль загружен"
Если команда вернула ошибку — либо старое ядро (тогда нужен пакет wireguard-dkms), либо ядро собрано без поддержки модулей.
Конфигурация клиента и запуск через wg-quick
Файл конфигурации создаётся с правами только для root:
sudo touch /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf
sudo nano /etc/wireguard/wg0.conf
Содержимое — стандартный клиентский профиль:
[Interface]
PrivateKey = <приватный_ключ_клиента>
Address = 10.66.0.2/32
DNS = 10.66.0.1
[Peer]
PublicKey = <публичный_ключ_сервера>
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0, ::/0 заворачивает в туннель весь трафик — надёжнее для доступа к ChatGPT, чем список отдельных подсетей OpenAI, который к тому же периодически меняется. Строка DNS = 10.66.0.1 — это как раз про сегодняшнюю тему: она указывает резолвить имена через сервер, а не через DNS, прописанный в системе до поднятия туннеля. PersistentKeepalive = 25 держит соединение через NAT, без него туннель на некоторых провайдерах «засыпает» при простое.
Поднять интерфейс и проверить:
sudo wg-quick up wg0
wg show
curl -4 ifconfig.me
Вывод curl должен показать IP сервера. Если показывает домашний адрес — туннель не поднялся или в системе есть более специфичный маршрут, перебивающий маршрут по умолчанию от WireGuard (смотрите ip route).
Автозапуск через systemd
Ручной wg-quick up wg0 после каждой перезагрузки — то, что забывается в первую же неделю, и браузер молча открывает ChatGPT напрямую. wireguard-tools ставит systemd-юнит wg-quick@.service:
sudo systemctl enable --now wg-quick@wg0
Проверить статус и журнал:
systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -n 30 --no-pager
Частая причина падения на старте — сетевой интерфейс ещё не готов к моменту запуска юнита (актуально для Wi-Fi на ноутбуках). Лечится добавлением зависимости:
sudo systemctl edit wg-quick@wg0
В открывшемся редакторе:
[Unit]
After=network-online.target
Wants=network-online.target
Дальше — sudo systemctl daemon-reload и перезапуск службы. На ноутбуках, где туннель нужен не всегда, автозапуск можно и не включать, а поднимать его вручную или коротким shell-алиасом.
DNS в браузере: как проверить, что он идёт через туннель
Это главная ловушка на десктопном Linux. Даже при работающем WireGuard браузер может резолвить имена не через туннель — из-за DNS over HTTPS, который Firefox и Chrome включают по умолчанию или предлагают включить.
Системный резолвинг на дистрибутивах с systemd-resolved:
resolvectl status wg0
resolvectl query chat.openai.com
Строка -- link: wg0 во втором выводе подтверждает, что запрос ушёл через туннель. Если резолвер выбрал другой интерфейс — закрепите домены за туннелем командой resolvectl domain wg0 "~.", что делает wg0 резолвером по умолчанию, пока интерфейс поднят.
На системах без systemd-resolved проверяйте /etc/resolv.conf — после поднятия wg0 он должен указывать на DNS-сервер из конфига, а не на резолвер провайдера. Если это не так — wg-quick не смог переписать файл, что случается, когда им управляет NetworkManager.
Отдельно — браузерный DoH, живущий вне системного DNS. В Firefox: about:preferences#privacy → «DNS через HTTPS» → отключить на время работы через туннель. В Chrome: chrome://settings/security → «Использовать безопасный DNS» → отключить. После изменения закройте вкладку ChatGPT полностью и откройте заново — активные соединения браузер не переоткрывает на лету. Финальная проверка — сервис вроде dnsleaktest.com в том же браузере: показанный DNS и IP должны совпадать со страной сервера.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать сервер в СШАОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Нужно ли на Linux отдельное приложение ChatGPT или достаточно браузера?
Официального Linux-клиента у OpenAI нет, браузер — единственный штатный вариант. Неофициальные Electron-обёртки дают ту же сетевую картину, что и обычная вкладка, и требуют того же туннелирования.
WireGuard поднят, curl показывает IP сервера, а ChatGPT всё равно пишет про регион — почему?
Почти всегда причина в DNS — проверьте resolvectl query chat.openai.com и настройки DoH в браузере. Реже сервер сам оказался в диапазоне, который OpenAI уже пометил как VPN.
Что делать, если после перезагрузки туннель не поднимается сам?
Проверьте systemctl status wg-quick@wg0 и journalctl -u wg-quick@wg0 — чаще всего юнит стартует раньше, чем поднялась сеть, решение с network-online.target описано выше.
Можно ли пускать через туннель только браузер, а остальной трафик — напрямую?
Технически да, через маршрутизацию по cgroup или отдельный сетевой неймспейс, но для одной задачи это несоразмерно сложно. Проще держать AllowedIPs = 0.0.0.0/0 и включать туннель командой wg-quick up/down wg0 по необходимости.
WireGuard или OpenVPN — что лучше для этой задачи?
Для доступа к одному сайту разница некритична, но WireGuard обычно быстрее переподключается после сна ноутбука. Сравнение — в статье WireGuard или OpenVPN: что выбрать для сервера.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.