Comments 51
Сначала постановка вопроса показалась нарочито ламерской, но по ходу чтения оказалось захватывающе. А вот split vpn для cisco anyconnect на isr g2 чем-то похоже по эмоциям
Адаптер беспроводной локальной сети Intel wi-fi: DNS-суффикс подключения . . . . . : IPv4-адрес. . . . . . . . . . . . : 192.168.31.202 Маска подсети . . . . . . . . . . : 255.255.255.0 Основной шлюз. . . . . . . . . : 192.168.31.1 Адаптер беспроводной локальной сети Беспроводная сеть: DNS-суффикс подключения . . . . . : IPv4-адрес. . . . . . . . . . . . : 192.168.31.72 Маска подсети . . . . . . . . . . : 255.255.255.0 Основной шлюз. . . . . . . . . : 192.168.31.1
Тут как бы вообще ничего не смущает?
Так и не понял, зачем Вы всё это разруливаете на винде с её приколами. На винде (и в целом на клиентских устройствах) должен быть один маршрут по умолчанию - к роутеру (дома / в офисе) или к VPN-серверу (в дороге), а на них уже разруливаться сколь угодно сложная маршрутизация по аплинкам/туннелям. Иной сетап - путь к страданиям, что Вы своей статьёй и продемонстрировали.
Согласен что на винде все это разруливать — не благодарное дело. Но зато смотрите сколько полезного материала и опыта для других людей. Во первых — есть осязаемый пример почему Windows это... Ну а во вторых, все же очень много задач приходиться решать в последнее время и необходимо было все взять под контроль. Было бы на много рациональнее переехать на Linux, но есть Legacy-причины удерживающие меня на винде. По этому решил все же пойти сложным путем, заполнить пробелы там где было непонимание, навести порядок с сетевой конфигурацией ПК и поделиться опытом — вот собственна и вся мотивация.
А еще есть коллеги которые тоже торчат на винде и в современных условиях с блокировками, VPNнами и прочими проблемами — нужен материал который поможет проводить их онбординг и адаптаци к суровым современным реалиям.
Вам еще повезло, что не было нулевого этапа, когда вообще нет связности по wi-fi между узлами в одной сети роутера.
Такое бывает, когда в настройках роутера включено AP Isolated. Заходим в настройки роутера, проверяем - выключено. Снова проверяем оба устройства, оба имеют общую условную сеть 192.168.0.0.24, оба пингуют шлюз 192.168.0.1, а друг друга не видят.
Запускаем wireshark на обоих, тишина, вообще ничего от соседа.
На третий час случайно обращаем внимание, что один из ноутбуков подключен к сети wifi 2,4GHz, а другой к 5GHz. Заходим еще раз в настройки роутера, смотрим настройки обоих беспроводных сетей, и не находим ничего, что могло быть похоже на Bridge LAN.
И пока оба устройства не будут подключены к wi-fi сети на одной частоте, связи между ними не будет.
Да, в процессе моего исследования я натыкался в интернете на AP Isolated. Возможно у меня как раз именно это и происходит. Но обращаю внимание что я как раз выставил доступ между ПК и Ноутом на уровне L2 (друг с другом напрямую без роутера):
Фрагмент из статьи:
Та же самая команда, но не указываем шлюз (gateway):
netsh interface ipv4 add route 192.168.31.197/32 "wifi-usb" metric=1 store=persistent
А в настройки роутера я не рискнул лезть, это Xiaomi купленный не в РФ, когда я последний раз там был — там все на китайском и было тяжко.
Ну, посмотреть в windows куда пойдет пакет до адреса можно через powershell:
Find-NetRoute -RemoteIPAddress "8.8.8.8" (пишу по памяти, мог ошибиться). Неужто нейронка не посоветовала?
А так в целом маршрутизация в windows не особо и отличается от других систем. Также смотрится префикс, также смотрится метрика.
Соответственно, объясню что было вместо нейронки, кратенько:)
Без впнов - у вас дефолтный маршрут в роутер, линк-локал маршрут (на /24 подсеть) на интерфейс. Соответственно видите локалку (/24 подсеть меньше), видите интернет. Маршрут отдельный на локалку не нужен
Подрубаете впн. Теперь у вас есть два дефолта с разными метриками, маршрут в роутер до впн-сервера с /32 (приоритетный), линк-локал в локалку (/24)
Умные впн-клиенты, дублируют существующие маршруты в себя, с более приоритетной метрикой. Чтоб трафик не утекал. Соответственно с умным впн-клиентом - отрубилась локалка
Ну и вы соответственно исключили локалку из впн-а через сплит - и вуаля. Не знаю, можно ли это сделать по-другому через амнезию, так как не пользуюсь - но получилось что так она не дублирует маршрут в себя и всё сработало
В целом - советую использовать повершелл, там оно удобнее и понятнее, чем в старом и добром cmd..
Ещё никто не сделал больше для повышения компьютерной грамотности, чем РКН.
Как говориться — Все что не делается, все к лучшему)
Кто знает, может своими действиями они сделают из нашей страны передового бойца в сфере IT и кибербезопасности. Когда каждая бабушка умеет настраивать VPN, менять DNS и поднимать прокси на VPS в Нидерландах — это уже не страна будет, это кибердержава
Многобукв, пришлось скормить роботу.
Ваиргард сделан альтернативно одаренным товарищем, его маршруты портят обычную простую и понятную маршрутизацию. Что бы в нем не трогать локальные сети приходится писать что то типа AllowedIPs = 0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 8.8.8.8/32, 9.9.9.9/32, ::/1, 8000::/1
https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator/
зы венда тут вообще не причем
вот абсолютно в точку!!!
Достаточно было просто прочитать документацию к wg ))
Вот это в WG меня и бесит больше всего. Вместо возможности внести Ignored IPs нужно вот это всё. А представьте, что в дополнение к написанному нужно ходить на некоторые VPS минуя WG..
Да просто пишем Table=Off, AllowedIPs=0.0.0.0/0 и маршрутизацию делаем на уровне системы.
Ну как я понял, это все не баг, а фича — что бы гарантировать что ты случайно не спалишься с включенным VPNом.
Ваиргард сделан альтернативно одаренным товарищем
При чём тут вообще wireguard? WG за маршрутизацию трафика не отвечает.
мне как программисту показалось что
if— это какое-то условие, но это оказывается сокращение от "interface"
Причем, ощущение что сокращал гуманитарий. Да так, чтобы сохранить своё face. Но вышло так себе)
Написать int нельзя, это будет слишком очевидно)
Стандартное сокращение, не понимаю фрустрации. Вспоминаем ifconfig, был создан во времена дремучие и бородатые, дядями далеко не гуманитарного склада ума.
А меня все равно удивляет. Получается носитель слышит это как "ЕслиКонфиг", вместо "ИнфКонфиг". Такое чувсвто что скоращение придумывал китаец на аутсорсе или индус не знающий английский.
Но скорее всего я просто не учитываю какого-то исторического контекста)
Думаю носители читают это как "ай-эф-конфиг", аналогично с ipconfig, который НЕ читается как "ипконфиг". Скорее всего сокращение по первым буквам слов Inter и Face, от которых собственно слово и было образовано
Ну смотрите, допустим вы слышите или встречаете где-то "если", вы сначала видете аббревиатуру и пытаетесь рассшифровать что-то вроде:
Е — Естественный
С — Стимул
Л — Ликбеза
И — Интернет-пользователей
Или видете привычное слово которое в 99% другом контексте встречается именно как обычный союз)
Нсчет того что скоращение if это сокращение от interface, согласен (да и в статье я это подстветил выделив жирным 2 эти буквы в слове)
В целом я во всем согласен, нужно читать не как ИФ, а как АЙЭФ. Но опять же, когда эти 2 буквы встречаются внезапно в CLI команде, сбивает с толку, скорее всего это мое субъективное ощущение (так как я на 90% разработчик чем сисадмин или devops)
Доброе утро!
Я работал в эксплуатации, приходилось на постоянке пользоваться 2-мя включенными VPN одновременно, и приходилось решать похожие конфликты. Хочу описать альтернативный ход решения подобной проблемы:
1. Пробую подключиться к 192.168.31.197, - не выходит. Надо пингануть, - не пингуется, отключаю VPN'ы и пробую снова. (если пингуется - можно проверить включен ли sshd и что в конфигах, раскомменчен ли порт, аутентификация по паролю, какой таймаут, но пока нет пинга - нинада).
2. Отключил VPN'ы, - не пингуется. Проверяем, - подключены ли устройства к одному вай-фаю или в целом к одной сети. Если да и не работает, - отключаю в настройках винды(временно) все второстепенные сетевые интерфейсы, оставляю только основной. Пробую, - не получается, - перезагружаю комп, пробую (такое бывает, иногда реально помогает)
3. Допустим пинг появился, пробую подключиться. Делаю "TRACERT 192.168.31.197", - чтобы посмотреть шлюз, сетевые устройства и т.д. Исходя из увиденного формирую маршрут "route -p add..", если надо могу залезть в калькулятор для расчета маски сети. Добавляю маршрут.
4. Включаю в настройках обратно все интерфейсы и VPN'ы. Пробую подключиться.
Не увидел, чтобы в статье было описано использование "ping" и "TRACERT", на мой взгляд неплохие штуки, я использую.
начинайте проверку маршрутизации винды с pathping
там сразу видно через какой интерфейс улетают пакеты
Как я выяснил, Amnezia при подключении читает AllowedIPs где-то в конфиге. Если там 0.0.0.0/0 — т.е весь трафик через туннель — клиент сканирует все существующие маршруты и создаёт их дубликаты на VPN-интерфейсе с минимальной метрикой. Включая только что добавленный /32. Так задумано WireGuard, он гарантирует, что ничего не утечёт мимо туннеля.
Но в том, что локальный путь недоступен виновата, конечно же, винда. Как в старые добрые времена.
поделиться с читателем моим стилем работы, мышлением и подходом к решению сложностей
Я д’Артаньян, в основах не понимаю, спрошу у ИИ, но windows must die.
Адекватные vpn клиенты, если хотят исключить протечку просто вместо 0.0.0.0 добавляют пару маршрутов, 0.0.0.0/1 и 128.0.0.0/1 и не портят всем жизнь.
адекватные vpn клиенты, если хотят исключить протечку просто вместо 0.0.0.0 добавляют пару маршрутов, 0.0.0.0/1 и 128.0.0.0/1 и не портят всем жизнь.
Насчет VPN — согласен.
А насчет вашей любви к windows — не согласен категорически.
Я всю жизнь пользуюсь Windows, но попользовавшись Linux совсем немного, я вижу массу колосальных преимуещств и сразу замечаю контраст — как microsoft относиться к своим обязанностям, начиная от документации, заканачивая "удобством" их решенией. Ну и элементарно историю почитать существования всех этих утилит/комманд, ладно на старте были неудачные решение, что мешало в дальнейшем их пропатчивать и расширять.
В целом этот спор глупый, потому что глобальной миссией microsoft было желание заработать, а за linux немного другие люди стояли с другими абмициями, приоритетами и целями, это видно невооруженным глазом.
Элеменатрный аргумент, если человек гордиться своим решением и мотивирован сделать мир лучше — он публикует open source.
Если человек мотивирован качать бабки со всего и всех, происходит:
Home / Pro / Enterprise / Server — один и тот же продукт, урезанный программно
тотальный вендор-лок и развод всех на бабки
< тут может быть много других аргументов, но все уже сказано до меня и при желании можно погуглить и погрузиться в вопрос >
Короче пользуйтесь на здоровье и платите деньги (точнее просите платить вашего работодателя). Мне по душе немного другой подход.
Не следует искать черную кошку в темной комнате, особенно когда там не нет ))
Для справки в виде ip стэк целого тянутый из bsd.
То есть абсолютно точно такой-же как и любом *nix.
А все ваши проблемы, с которыми вы столкнулись просто от недостатка знаний в сетевых технологиях.
Забавно, что получив первую полезную информацию "без vpn все работает, а с ним нет" вы полезли не в настройки самого vpn клиента, а в систему маршрутизации ОС. Посчитав видимо, что если это всегда, значит там и накосячили горе программисты )))
Я туда полез в первую очередь что бы увидеть всю картину происходящего. Так как не один VPN у меня мог аффектить сетевую конфигурацию — так и оказалось, все вместе поучаствовали. Ну и благодаря тому что я туда пошел, я увидел что Amnezia использует под капотом, как оказалось присловутый WireGuard. А оттуда я уже выяснил все остальные изложенные в статье подробности.
Ну и кстати я считаю это своим даром и проклятьем, вместо того что бы довольствоваться поверхностным уровнем "не работает из-за VPN, значит буду его ковырять", я погрузился глубже и ниразу не пожалел.
Видимо именно из-за отсутствия знаний, вы выбрали неправильный путь и начали ходить по граблям, при этом не получив каких либо нужных знаний и потратив свое время на фиг знает что.
Ещё раз, "если что-то не получается" - rtfm.
Коротко: ваша ситуация не стоила написания этого поста, ну или поста о том "как не зная сетевой части современных OS долго и упорно ходить по граблям"
Ну так чисто для справки, писать маршрут к сети 192.168.1.0/24 ( условно) через какой либо gw имея адрес на интерфейсе в той же сети просто бессмысленно)
Давайте на секунду предположим, что вы правы по всем описанным пунктам.
у меня полностью отсутсвуют знания.
Если так, зачем мне об этом говорить, это как-то кому-то с чем-то поможет?
Коротко: ваша ситуация не стоила написания этого поста,
Если так, тот же вопрос?
Ну так чисто для справки, писать маршрут к сети 192.168.1.0/24 ( условно) через какой либо gw имея адрес на интерфейсе в той же сети просто бессмысленно)
Почему бы в конструктивной форме не описать более развернуто вашу мысль?
Я хочу вам дать фидбек чуть отойдя от темы, с такими навыками коммуникаций — работать будет тяжело даже разработчиком/системным администратором и тд. Это путь к фзаимной фрустрации. Вы и себе портите настроение и другим людям.
Ок, сейчас без обид и пр.
1. вы не понимаете модель OSI и по этой причине начали troubleshooting не с того уровня OSI.
2. не имеет смысла " предполагать что я прав" - см. п.1
3. Ваша попытка(пост) а-ля troubleshooting`а не поможет никому и ни в чем, а только запутает и даст превратное представление.
4. потому что это азы ip маршрутизации, на хабре куча статей есть, зачем периливать из пустого в порожние ? )
Оставьте кесарю кесарево - вы не сетевик, вы пограммист/сисадмин.
Сетевики поржали и закрыли пост(ну парочка отписалась)
Ваш пост о том как не надо делать, а не о том как надо.
Что-бы не засорять каметы не весь чем - в личку.
Давайте по существу. Вполне возможно, что вы абсолютно правы. Что конкретно дает вам основание полагать что я не правильную понимаю модель OSI? Вы писали про то, что "надо было читать манул о VPN", это действительно так, но мне было интересно рассмотреть мою проблему не со стороны VPN-продукта который мне создает проблему, а с точки зрения как раз сетевой конфигурации моей ОС — а именно что с ней происходит в результате эксплуатации данного VPN-продукта.
Итогом моих действий является результат, при котором работает и VPN, и ZeroTier, и подключение по SSH с включеным/выключенным VPN. Но главная ценность которая была получена — понимание, как и почему эти продукты препятствуют ожидаемому поведению.
Сомневаюсь что если бы открыл манул по использованию Amnezia я бы увидел там инфу о том, что нужно сделать если: у меня 2 конкурирующих wifi адаптера + ZeroTier. Вряд ли там будут шаги дебага по причинам из-за которых не работает SSH подключением в моей wifi сети.
Я вижу 2 вещи которые у вас есть:
Вероятно знание модели OSI, раз вы взялись критиковать меня в этой области
Свободное время что бы писать комменты на 20% состоящие из технической аналитики и на 80% из неконструктивных оценочных суждений.
Было бы на много эффективнее, если бы все это собрали в 1 детализированный комментарий, в котором разобрали бы все мои ошибки и заполнили пробелы в OSI которых не хватает в данной ситуации, а если есть где-то исчерпывающее объснение — просто сослались на готовый источник.
Я искренне не понимаю смысла и вашей мотивации. Допустим я вижу человека который делает что-то, по моему мнению, не правильно. Я могу написать комментарий о том что он дурак и "надо было читать мануал", а могу сказать, "вот здесь и здесь, вы не правы, вот эта и эта инфа дает понимание почему". Неужели неочевидно какой будет результат у первого и второго подхода.
При возникновении сетевых проблем, наилучшим сценарием обнаружения причин и дальнейшее их исправление - следование модели osi
1ый уровень, а вообще линк есть ? (есть)
2ой, ip адрес есть (есть), в arp mac адреса локальной сети есть ?
3ий ping?, traceroute? - и сразу все становится понятно (wg перенаправляет весь трафик в свои интерфейсы)
Далее включаем мозг, читаем документацию и решаем проблему.
А насчет вашей любви к windows — не согласен категорически.
Я не говорил о своей любви к windows, я начинал на компьютерах ещё без монитора :) Я основывал своё мнение на Вашей фразе:
В linux мы бы выполнили:
В коментариях уже написали, что и в windows можно увидеть с какого интерфейса пакеты пошли.
Если живете на windows, то используйте родные инструменты, сейчас это powershell.
Для тех VPN клиентов, что писались по человечески есть командлеты:
Vpn-ConnectionRoute например
Я не говорил о своей любви к windows, я начинал на компьютерах ещё без монитора :)
А у меня... У меня дед в гараже первый копьютер спаял!
Ладно не будем ссориться, каждый из нас в чем-то прав и не прав.
Если вы хотите что бы я признал что windows замечательная ОС, а у меня поверхносные знания. Я признаю, поймали за руку)
Зашел в профиль вижу что вы C# разраб.
К сожалению я тоже там был, в 2014 я разрабтаывал на C# — слаба богу ASP.net мертв, я когда работал в рф финтехе насмотрелся на такие страшные последствия людоедской деятельности корпорации microsoft - что врагу не пожелаешь работать с этим.
Андерс Хейлсберг — один из немногих адекватных людей из майкфрософт, он действительно сделал хорошие продукты, в том числе C#, TypeScript и VSCode — на сколько мне известно он приложил ко всему этому руку.
Но сама корпорация с безбашенной жаждой наживы перечеркнула весь его вклад и закопала в землю. Кстати рекомендую к пропспорту на досуге документальный фильм "корпорация", просто для общего развития (это не совсем по теме)
Я не знаю используемый Вами впн, но по тексту статьи понял, что это именно в нëм дело. Подозреваю, что если бы использовался openvpn, там всë легко бы настроилось, возможно даже со стороны сервера (он может отдавать команды клиенту насчет маршрутов).
Интересные штуки про суммирование метрик, не слышал ранее. Про виндовую маршрутизацию конечно только ленивый не ругался, но как бы вроде никто и не юзает еë для таких вещей.
Кстати, про ssh/sshd - эту часть похоже ИИ помогл написать. На самом деле, в разных линуксах могут быть разные имена - и ssh, и sshd, и это всë одна и та же служба. Кроме того, в некоторых можно управлять ей по этим двум именам - какое больше нравится. Прописано прямо в systemd юните. Да, и в современных (не всех) дистрибах служба вообще не запущена, а порт слушает сам systemd, службу sshd запускает по факту подключения на указанный порт (связь через сокет systemd).
Мне приходилось использовать несколько VPN туннелей одновременно на windows. Помогал powershell. Командлеты работают с именами VPN соединений.
Для одновременного использования нескольких VPN и направления трафика в нужный туннель необходимо использовать две основные команды: Set-VpnConnection и Add-VpnConnectionRoute. Сначала нужно включить раздельное туннелирование, чтобы избежать конфликтов шлюзов, а затем привязать маршруты для конкретных подсетей к нужным профилям VPN
А зачем пытаться отправить пакет во внутреннюю сеть через роутер?))
Как это тяжело читать...Такое ощущение, что походу просто автор сам не разобрался среди кучи интерфейсов, которые сам наплодил
"Будет полезно начинающим сисадминам и DevOps-инженерам, которые хотят понять маршрутизацию"
Я вроде уже не начинающий, но особо так и не понял, что хотел донести автор.
Неверная постановка вопроса даёт неверные решения.
Если не работает ssh при включённом vpn, то следовало настроить корректно сам vpn. Просто не используйте AllowedIPs = 0.0.0.0/0, если нужно трафик пустить только на один vps.

Как я пытался подключиться по SSH к ноутбуку в соседней комнате — и провалился в кроличью нору Windows-маршрутизации