Как психолог Зина за 5 минут научилась обходиться без VPN, если тот глючит
Не знаю, грозит ли нам третья мировая, но вот Альцгеймер точно не грозит. Кто там говорил, что технологии ведут к отуплению? Ну-ну конечно, как же :)))
Дмитрий Литвак, бизнес-технолог, TIME-инженер
Помогаю получать больше прибыли проще и быстрее.
Сайт: https://6612.ru
Телеграм:
https://t.me/BTLitvak - бизнес-технологии
https://t.me/Sistema_TIME - личная эффективность
https://t.me/Dialoging1 - как писать в стиле "Диалогинг".
Кротовая нора для психолога
У моего психолога Зинаиды есть простенький телеграм-бот поддержки клиентов. Бот общается с ними между сессиями. Это несложно сделать, немного помогал ей с этим.
Бот живет на немецком VPS-сервере, отвечает на вопросы, присылает клиентам темки для подумать, напоминает о времени сессий и всё такое. Зина купила недорогой сервер и редко туда заглядывает.
Работает — и слава богу, зачем лезть.
Однако у Зинаиды возникла проблемка, о которой я узнал после нашей сессии в Zoom.
–– Дима, слушай... У меня ChatGPT второй день не открывается вообще. Без VPN молчит. А VPN сдох. РКН, видать, добрался.
–– Так у тебя же есть сервер. Тот самый, где бот живёт.
–– При чём тут бот, мне GPT нужен, а не бот.
–– При том, что сервер — это не только домик для бота. Это ещё и целый зарубежный компьютер с белым выходом в интернет. Он у тебя оплачен и простаивает. На аварийный случай можно сделать кротовую нору через VPS.
–– Почему простаивает, наоборот, продает и клиентуру удерживает... Ты предлагаешь мне лезть в мой сервер, чтобы работать в GPT?
–– Я предлагаю перестать платить за чужой обходной путь, когда свой полгода как работает. Пять минут, покажу.
–– Ладно, уговорил. Только правда быстро, у меня клиент скоро.
–– Расшаривай экран, открывай Телеграм, я тебе прямо туда команды скину, одну за одной — так ничего не потеряется, и сможешь вернуться и перечитать в своём темпе.
–– Ты вообще-то не программист, ты в курсе? Уверен, что ничего не сломается? И без этого проблем хватает.
–– Не сломается. Я специальный бизнесовый дяденька, который любит технологии и слишком много лет пользуется компьютером.
–– То есть суперпользователь без диплома, но с мотором.
–– Считай, что да. Погнали, время идёт.
Куда тыкать
–– Так, а куда я вообще должна тыкать? У меня тут сто иконок, а клиент через четыре минуты.
–– Ищи Терминал. Это просто окно, куда печатаешь текстом, а не тыкаешь мышкой. Это прямой разговор с компьютером, без картинок-посредников между вами. У тебя Мак — он уже встроен: Программы → Утилиты → Терминал. Был бы Windows — искала бы PowerShell или Windows Terminal, на Linux — Terminal, Konsole, GNOME Terminal, кто во что горазд. Названия разные, суть одна: окно для команд.
–– Ты сейчас меня терапевтируешь через компьютер, забавно.
–– Просто на пять минут поменялись ролями. Бежим дальше.
Первый спуск в нору
–– Так, я открыла Терминал. Что дальше, копать нору лопатой?
–– Нет, запустим в нору белого кролика, пусть роет.
Заходи на тот же сервер, где у тебя бот живёт. Одна строчка в терминал с твоими данными вместо user@ТВОЙ_СЕРВЕР:
ssh -D 1080 -N -o ServerAliveInterval=30 -o ServerAliveCountMax=3 user@ТВОЙ_СЕРВЕР
–– Почти. -D 1080 открывает у тебя на компе локальный порт 1080, это вход в нору. -N говорит серверу "просто держи связь, никаких команд запускать не надо". А вот это, ServerAliveInterval — как раз то, что не даёт норе осыпаться: SSH сам каждые 30 секунд легонько толкает сервер в бок — ты живой? — и если тот не ответит три раза подряд, соединение честно закроется, а не будет висеть мёртвым грузом.
–– То есть сервер получает пинок каждые полминуты.
Зина отправляет команду, терминал молчит — ни ошибки, ни привета.
–– Ничего не происходит. Сломалось??
–– Нет, это как раз хороший знак. В команде-N — молчаливый флаг, он ничего не пишет, если всё в порядке. Просто роет.
Пароль не тот
–– Слушай, а вот тут просит пароль. От сервера, что ли?
–– От сервера — да, но смотри внимательно, тут все путаются. Есть два разных пароля, и они не взаимозаменяемы, хотя выглядят одинаково страшно.
–– Гениально, чтобы мозг взорвался. Продолжай.
–– Если команда начинается прямо с sudo и ты её пишешь в обычном окне терминала на своём Маке — она хочет пароль от Мака, от твоей учётки. А если ты уже зашла на сервер, видишь в строке что-то вроде zina@server:~$, и там пишешь sudo — она хочет пароль уже от сервера. Разные комнаты — разные ключи.
–– Я ввела не тот и оно меня выгнало.
–– Естественно. Ты стучалась паролем от квартиры в дверь офиса. Смотри просто, в чьей ты сейчас строке — на своей "домашней" или уже внутри чужого дома — и не путай ключи.
Куда рыть нору
Нора прорыта, порт 1080 слушает. Зинаида смотрит на терминал с подозрением, как на кота, который слишком тихо себя ведёт.
–– И что теперь, всё само через норку в большой мир?
–– Нет, Зина, теперь ты сама решаешь, кого пускать через неё.
Чтобы твой браузер стал немецким, в настройках прокси ставишь SOCKS5, адрес 127.0.0.1, порт 1080.
Для Telegram — Data and Storage >> Proxy, тот же адрес и порт, там это делается в два клика. И теперь Телеграму не нужен VPN или левый прокси.
Для VSCode пишешь socks5://127.0.0.1:1080 в настройках прокси, чтобы VSCode мог идти в твой GPT будто из Германии.
— И VPN не нужен? Только 127.0.0.1:1080?
— VPN он порой как скрипач, да... Порой не нужен. Но только пока открыта кротовая нора, пока активен VPS-прокси. Это же на аварийный случай, быстрое локальное решение. Хотя может работать часами.
–– Проверим-с.... Черт, всё работает. VPN выключен, но GPT в браузере открывается и телеграм летает. И всё из-за волшебного 127.0.0.1:1080?!
— Из-за понимания, как на самом деле устроены технические фишки.
— Дим, а если я закрою этот терминал?
–– Нора обвалится вместе с ним. Она живёт, пока живёшь ты — то есть пока открыто окно. Закрыла крышку ноутбука — всё, туннеля больше нет, всё, что через него шло, отвалилось молча, без предупреждения.
–– Не самое устойчивое сооружение для человека, который лечит людей от тревожности.
–– Иронично, согласен. Но у этого есть лечение, дойдём.
–– Всё, клиент уже стучится, убегаю. Но у меня в терминале что-то сыплется странными строчками — это норм?
–– Норм, но объясню — не за пять секунд. Скинь скрин, когда будет минутка между сессиями, разберём. Главное, что сейчас всё работает без VPN.
Голоса из-под земли
В терминале начинают сыпаться строчки:
channel 3: open failed: connect failed: open failed channel 6: open failed: connect failed: open failed
–– Вот! Вот оно! Всё сломалось!
–– Не сломалось. Сайты у тебя грузятся?
–– Тогда это не поломка, а фоновый шум. У каждого сайта в интернете как бы два лица — старый адрес, IPv4, и новый, IPv6. Браузер, заходя на сайт, стучится сразу в оба лица одновременно — кто первый ответит, тот и выиграл. У твоего сервера второго лица просто нет, IPv6 не завезли. Вот эта половина попыток и валится с криком, а первая половина в это же время проходит молча.
Ты слышишь только неудачников.
–– То есть это как будто параллельно с человеком разговариваешь и с его внутренним критиком, а вслух звучит только критик.
–– Зин, ты только что одной фразой объяснила это лучше меня. Забираю.
Доказательство, что нора не бутафория
–– Ладно, а как вообще проверить, что это не деревянный муляж, а реально работает?
–– Два способа, для параноиков и для очень больших параноиков. Первый — открой второе окно терминала и напиши:
curl -v -x socks5h://127.0.0.1:1080 -m 8 https://ifconfig.co
Если в конце увидишь IP не свой, а сервера — трафик реально прошёл через нору, а не мимо.
–– А для очень больших параноиков?
–– Третье окно, и в нём вот это — оно начинается с sudo, так что пароль спросит от твоего Мака:
sudo tcpdump -i lo0 port 1080 -n
Оставляешь висеть, запускаешь тот же curl во втором окне — и в третьем видишь вживую, буквально пакет за пакетом, как трафик реально идёт через порт. Это уже не вопрос доверия, это вскрытие.
–– Жутковато звучит для человека, который весь день говорит клиентам "довериться процессу".
–– Процессу доверяй. А вот трафик проверяй.
Чтобы нора не осыпалась без присмотра
–– Хорошо, а если мне надо, чтобы это жило дольше, чем моя способность не закрывать ноутбук?
–– Тут два уровня, в зависимости от того, насколько ты параноик по жизни. Если тебе просто важно, чтобы комп не уснул сам, пока ты рядом работаешь — открываешь ещё одно окно и пишешь:
caffeinate -d
Ничего не спрашивает, просто держит Мак не спящим, пока команда висит. Ctrl+C — и комп снова может спать по расписанию.
–– А если я хочу, чтобы жило вообще без меня?
–– Тогда tmux. Представь: обычный терминал — это разговор по телефону, положила трубку — разговор оборвался. А tmux — это будто ты оставила свет и компьютер включёнными в кабинете и ушла домой. Кабинет продолжает работать без тебя, а вернувшись — просто заходишь и видишь всё как было.
tmux new -s tunnel "caffeinate -d -w $ & ssh -D 1080 -N -o ServerAliveInterval=30 -o ServerAliveCountMax=3 user@ТВОЙ_СЕРВЕР"
Выходишь из комнаты, не выключая свет — Ctrl+B, отпустить, потом D. Возвращаешься командой tmux attach -t tunnel. Только учти: это спасает от закрытого терминала и от уснувшего Мака, но не от закрытой крышки ноутбука — тут уже сама система уходит в сон, и никакой tmux её не удержит. Некоторые вещи даже кротовая нора не чинит.
–– Прямо как с людьми. Некоторые сопротивления снимаются терапией, а некоторые — просто выспаться надо.
Итого
Порт 1080 у Зинаиды тихо гудит где-то в ноутбуке. Про VPN она пока не вспоминает — сервер, на котором и так уже жил её бот, оказался и выходом наружу.
Зина вошла во вкус теримнальности:
–– Дима, ты ещё и про здоровье сервера как-то говорил, как понимать, жив или уже не совсем.
–– Это отдельный сеанс. Запишешься?
–– У тебя тоже, значит, приём по записи.
–– Ага, мой ботик напомнит тебе о времени созвона и пришлет пару лайфхаков для разогрева. Всё как у взрослых.
Дмитрий Литвак, бизнес-технолог, TIME-инженер
Помогаю получать больше прибыли проще и быстрее.
Сайт: https://6612.ru
Телеграм:
https://t.me/BTLitvak - бизнес-технологии
https://t.me/Sistema_TIME - личная эффективность
https://t.me/Dialoging1 - как писать в стиле "Диалогинг".