LINUX.ORG.RU

amneziawg на роутере с openwrt

 , , , ,


0

2

Приветствую. Более года юзаю настроенный amneziawg шлюз на домашнем пк (linux, естественно, с установленным модулем ядра), все остальные девайсы в локальной сети используюет его как шлюз интернета (настроил dhcp сервер выдавать адрес данного пк как gate). За год никогда не было никаких проблем, всё как часы.

Но на днях решил помочь товарищу - настроить и передать ему роутер, который будет сам amneziawg шлюзом, а не другой хост в локальной сети. У меня два роутера - один routerich с их модифицированной openwrt, второй - другой производитель прошитый чистой openwrt. Настроил по этой инструкции. Некоторое количество часов все работает норм, но далее amneziawg шлюз на роутерах умирает и инет отваливается. Помогает reset и новая настройка.

На десктопе я бы, наверное, в этом разобрался, но на роутере всё обмазано гуем, который черт знает куда кладет свои конфиги и как в точности работает. А netfilter на роутере - вообще сказка, я однажды дампнул правила и пытался разобраться, не вышло).

Кто-нибудь с этим страдал? Идеи? Ну не могу же я вот такое дерьмо товарищу передать, придется дать ему какой-нибудь ноут с нормальным линуксом. Но минус тут в том, что ещё и надо править настройки роутера, чтобы dhcpd выдавал шлюзом данный ноут, подсеть с правильным адресом сети, статический адрес на ноуте. Но в общем мне админить сеть у товарища как-то вообще не хочется, зачем ему от меня зависеть, хочу дать ему роутер и забыть

PS: когда захожу на роутер через ssh и делаю ping {сервер_в_европе_ip} - он успешно пингуется, ping 1.1.1.1 - нет



Последнее исправление: kvpfs_2 (всего исправлений: 4)
Ответ на: комментарий от firkax

При чем здесь РКН? У меня в моих тестах роутер перестает работать должным образом, на моих руках, я перенастраиваю всё обратно - роутер больше не шлюз wg, шлюз мой десктоп - всё работает.

amneziawg не прикидывается впн’ом, она выглядит как просто поток данных на мой сервер. Ну а какие там данные гонять - дело моё, протокол мой, чего хочу, то и делаю. Во всяком случае пока это так.

kvpfs_2
() автор топика
Последнее исправление: kvpfs_2 (всего исправлений: 1)

А ещё может кто в курсе - можно ли с openwrt роутера сделать чистый, консольный линукс? Это больно? Без всего это петушиного гуя и его конфигов. Ну вот правда, мне гораздо проще было бы всунуть модуль ядра дополнительный (ну если это возможно), и выполнить несколько тривиальных $ ip … команд, чем разбираться во всем этом говне, которым добротно обмазано несколько простых действий, которые я делаю на десктопе.

Желая сделать прости для домохозяек, openwrt сделали каким-то непрозначным говном, которое хз как отлаживать и разбираться в нем.

Пока у меня ощущение, что проще взять простенький ширпотребный роутер, и старенький ноут с авито за 5-6К и накатить туда линукс, чем ковырять роутер, когда что-то идет не так. Первый раз захотел сделать с роутером что-то полезное для себя, а он на такой тривиальщине жидко обделался. Ну и нафиг он мне такой продвинутый с openwrt?

kvpfs_2
() автор топика
Ответ на: комментарий от vitruss

Как же я до этого сам не догадался… Очевидно, что вся эта хрень, в роутере, которая надстройкой над чистым ванильным линуксом, на вершине которой гуйня, после каждого reboot’a производит вагон настроек, а может и в процессе работы. Ну как бы это всё конфликтует с наивными попытками пойти в консоль и написать там какой-нибудь стартовый скрипт. Я однажды пытался настроить амнезию на роутере подобным наивным способом, взял то ли модуль ядра под нужную архитектуру, то ли ещё как, выполнил команды. Ну в общем в итоге я уперся в то, что пакеты между интерфейсами не форвардятся (естественно, что нужные действия для этого я делал). Начал разбираться с netfilter правилами роутера, а там черт ногу сломит. В итоге я пошёл и настроил десктоп за 10 мин.

Я же говорю о почти чистом линуксе на роутере, где я делаю свою портянку команд и цепляю её в автозагрузку. Наверняка это возможно, но нужен какой-то гайд, набивать свои шишки и тратить кучу времени на это я не хочу, наверняка там куча нюансов

kvpfs_2
() автор топика
Ответ на: комментарий от kneedeep

Я сейчас прошивку обновил, наблюдаю. Меня больше всего в тупик ставит то, что ошибка переживает перезагрузку роутера, это очень странно. У меня это случалось дважды, оба раза это происходило тогда, когда отключал от девайс питание. Ещё написал в поддержку routerich, если ещё раз случиться, то предложу выслать им девайс, наверное им должно быть это интересно, да и проще разобраться

kvpfs_2
() автор топика
Ответ на: комментарий от kvpfs_2

Так проблема на ванильной openwrt или на сборке от роутерича? Или на обеих? Ну и в логах что-нибудь появляется в момент отвала?

kneedeep
()
Последнее исправление: kneedeep (всего исправлений: 1)
Ответ на: комментарий от kvpfs_2

Я же говорю о почти чистом линуксе на роутере, где я делаю свою портянку команд и цепляю её в автозагрузку. Наверняка это возможно, но нужен какой-то гайд, набивать свои шишки и тратить кучу времени на это я не хочу, наверняка там куча нюансов

смотри файлики в /etc/config, читай про UCI (угадай, почему гуй openwrt называется LUCI)

Shadow ★★★★★
()
Ответ на: комментарий от Lrrr

Купите уже себе нормальные кинетики, там все есть из коробки. А чего нет, то можно поставить из entware.

А потом поразитесь черезжопной настройке ip фильтра. Не, я тоже при выборе кинетик vs openwrt за кинетик, но только потому, что стабильный софт (или работает, или не работает, глючного накопления какой-то ошибки как у топикстартера там нет). А вот извращений вприсядку в нём тоже полно.

Shadow ★★★★★
()
Ответ на: комментарий от Lrrr

ну, у меня тоже кинетик, но они, во-первых, оверпрайснуты, а во-вторых, entware — это тоже те ещё пляски с бубном. и амнезии версии 1.5+ (а другие сейчас уже неинтересны) в нём из коробки до сих пор нет (может, в какой-то 5.x прошивке и появится), а если вкорячить отдельным экзешником — готовься к куче глюков, ndm очень не любит появления новых интерфейсов и работать с ними не умеет. то маршрут отпадёт, то файрволл. приходится обмазываться кучей скриптов для контроля.

anonymous
()
Ответ на: комментарий от anonymous

Что ещё за амнезия 1.5? Создал подключение штатными средствами, прописал для него нужные ASC параметры, и все работает.

Ну или не работает, потому что РКН все это прекрасно видит и банит 😂

Lrrr ★★★★★
()
Ответ на: комментарий от kneedeep

На обоих. В момент отвала происходило отключение питания, какие там логи? После перезагрузки логи не смотрел, да вообще меня больше удивляет, что ошибка остаётся после ребута, как это вообще так? Ведь девайс должен коныигурироваться на старте в валидное состояние.

Конкретно к роутеричу особых вопросов нет, раз аналогичное с роутером другого бренда и чистой опенврт, просто с ними есть коннект и они в состоянии разобраться и пофиксить это быть может не только для своих девайсов, а вообще для всех (видимо нужно фиксить опенврт)

kvpfs_2
() автор топика
Ответ на: комментарий от kvpfs_2

В момент отвала происходило отключение питания

Хм, а интерфейс амнезии после ребута пробовал рестартнуть? Может, она пытается подключиться раньше, чем стартует сеть или днсмаск. Если эндпоинт прописан доменом, а днсмаск ещё не стартанул, то амнезия не может разрулить адрес. Как вариант.

kneedeep
()
Ответ на: комментарий от kvpfs_2

Я не понимаю что мешает поставить последним пунктом в автозагрузку свою портянку.

Если бы ты сделал ВСЕ нужные действия, то пакеты бы ходили между интерфейсами (ведь у других они ходят)…

Я согласен что openwrt отличается от обычного линукса, но альтернатив как-то не видно.

vitruss ★★★★★
()
Ответ на: комментарий от vitruss

что мешает поставить последним пунктом в автозагрузку свою портянку

Проблемы поставить нет, проблема чтобы она работала. Давай конкретно о том, что я не осилил. Есть скрипт для обычного линукс, он настраивает wireguard интерфейс, маршруты необходимые, и разрешает из других портов пакетам форвардиться в wg интерфейс:

vps_ip=.../32
inet_dev=enp4s0f0
inet_ip=192.168.1.100/24
inet_gate=192.168.1.1
wg_ip=192.168.10.2/24
wg_server_ip=192.168.10.1

ip link set ${inet_dev} up  &&  ip address add ${inet_ip} dev ${inet_dev}

ip link add dev wg0 type amneziawg
ip address add dev wg0 ${wg_ip}
awg setconf wg0 /etc/wireguard/wg0.conf 
ip link set up dev wg0

ip route delete default
ip route add default via ${wg_server_ip} dev wg0
ip route add ${vps_ip} via ${inet_gate} dev ${inet_dev}

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

Как на роутере выполнить аналогичную последовательность команд? Я там делал всё - создавал интерфейс, настраивал маршруты, но пакеты упорно не хотели ходить между интерфейсами. Подозреваю, что дело в правилах netfilter, но там портянка дрысни, которую я не осилил.

kvpfs_2
() автор топика

Обновил прошивку на routerich, настроил амнезию. Проблема воспроизводится. Действия для воспроизведения: роутер работает, доступ в инет имеется, выключаю питание роутера в первый раз, включаю, доступ в инет есть, выключаю питание во второй раз, включаю, доступа в инет нет, пакеты в awg интерфейс не поступают (Rx == 0). Интерфейс становится мертвым, начнет работать посел его пересоздания. Когда роутер в сбойнутом состоянии, то заходя по ssh на него, не пингуется второй конец впн’a (192.168.10.1) и большой интернет (1.1.1.1, например), пинг до сервера проходит (109.209…, например)

ядерный_лог, syslog после включения в сбойнутом состоянии. Если кто-то что-то посоветует дельного глядя на логи, то будет супер

PS: такая петрушка как на старой амнезии, так и на новой (1.5)

kvpfs_2
() автор топика
Последнее исправление: kvpfs_2 (всего исправлений: 5)
Ответ на: комментарий от Lrrr

Что ещё за амнезия 1.5

вот как раз для того, чтобы не банили (причём им ещё с год назад на хабре писали, что их «мусорные» пакеты тупо будут фильтровать, так и вышло). параметры asc для него добавились новые, которых пока в кинетике нет. потому и приходится ставить отдельный экзешник.

anonymous
()
Ответ на: комментарий от NyXzOr

Я имею в виду то, что это все обмазано правилами netfilter’a, которые мешают. Самое правильное - снести все это говно, которым обмазана минимальная система на роутере, и настраивать под себя из консоли обычными $ ip… и смежным. Не знаю, может стоит разобраться раз и бед больше не знать с этой гуйней для домохозяек

kvpfs_2
() автор топика
Ответ на: комментарий от kvpfs_2

syslog

У меня чистая прошивка от OpenWRT (ещё и ubootmod) на таком роутере. А у вас, видимо, от поставщика. Много мусора.

Почему DHCP ругается на одинаковые имена? У вас два таких роутера?

NyXzOr ★★★★★
()
Ответ на: комментарий от kvpfs_2

С амнезией всё просто, как и с wireguard: либо ставишь галочку роутить AllowedIPs, либо не ставишь и роутишь отдельные адреса чем-то другим. Например, PBRом.

У тебя ж там 0.0.0.0/0 в AllowedIPs?

NyXzOr ★★★★★
()
Ответ на: комментарий от NyXzOr

Мы говорим про разное. Я говорю о попытке настроить роутер не из гуя, а из консоли. Вот что я однажды пытался сделать. Произвожу действия как на десктопе, а оно мне болт, а не форвардинг между интерфейсами. Но на десктопе у меня получается, значит умею. А на роутере что-то мешает, и я думаю, что это правила netfilter’a которые есть там изначально (чтобы все вот эти настройки фаервола работали из менюшечек гуястых). Если ты настраивал только из менюшки, то у тебя такого опыта просто нет

У тебя ж там 0.0.0.0/0 в AllowedIPs?

да

Например, PBRом

И какие плюсы по сравнению с обычной таблицей маршрутизации (та что ip route)? С точки зрения обычного пользователя? Маршруты на основе ip можно прописать в ip route. Роутинг на основе протокола? Это нужно? Например поможет ли PBR выделить трафик какого-нибудь «OKKO» и пустить его мимо WG? Я сомневаюсь, что у них там протокол уникальный, а ip адреса всяко разные

kvpfs_2
() автор топика
Ответ на: комментарий от Lrrr

Я юзаю и то и то другое, entware в разы понятнее чем openwrt, а за гуй к openwrt нужно вообще морду пощупать, хотя может они пьяные были когда это лепили.

Кстати в кинетеке в самой ndms куча клиентов есть и wg.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от kvpfs_2

Произвожу действия как на десктопе, а оно мне болт, а не форвардинг между интерфейсами. Но на десктопе у меня получается, значит умею.

В OWRT uci, а uci имеет свой синтаксис. Тогда уж в консоли проще конфиги править, или таки чрез веб настрайивать, илт всё-таки изучить uci.

Ololo_Trololo ★★
()
Ответ на: комментарий от mx__

Я юзаю и то и то другое, entware в разы понятнее чем openwrt, а за гуй к openwrt нужно вообще морду пощупать, хотя может они пьяные были когда это лепили.

Скажу тебе как вендузойду, после winbox любой интерфейс у роутера выглядит туповато. А у кянетиков интерфейс вообще для домохозяек.

Ololo_Trololo ★★
()
Ответ на: комментарий от kvpfs_2

А что это за дистр у вас такой?

Я с вг имею дело только через гуй или только через systemctl.

Как на роутере выполнить аналогичную последовательность команд? Я там делал всё - создавал интерфейс, настраивал маршруты, но пакеты упорно не хотели ходить между интерфейсами.

Можете нарисовать то что там делали на раутере в таком же виде? Если что то inet_gate там это же устройство …

mx__ ★★★★★
()
Ответ на: комментарий от mx__

Это shell скрипт, обычные команды. Такие же можно выполнять на роутере. А все эти спец тулзы на дистрах - я не люблю. Всегда создаю шелл скрипты и вешаю в автозагрузку

#адрес сервера, с которым создается впн сеть
vps_ip=.../32
#интерфейс, смотрит в локалку, в ней есть шлюз инета
inet_dev=enp4s0f0
#адрес локального интерфейса
inet_ip=192.168.1.100/24
#шлюз инет в локалке
inet_gate=192.168.1.1
#локальный адрес в wg сети
wg_ip=192.168.10.2/24
#адрес сервера в wg сети
wg_server_ip=192.168.10.1

#поднимает интерфейс и присваиваем адрес
ip link set ${inet_dev} up  &&  ip address add ${inet_ip} dev ${inet_dev}

#создаем и конфигурируем wg интерфейс
ip link add dev wg0 type amneziawg
ip address add dev wg0 ${wg_ip}
awg setconf wg0 /etc/wireguard/wg0.conf 
ip link set up dev wg0

#создаем дефолтный маршрут через wg,
#пакеты на сервер пускаем через реальный инет шлюз,
#иначе пакеты ходили бы по круги 
ip route delete default
ip route add default via ${wg_server_ip} dev wg0
ip route add ${vps_ip} via ${inet_gate} dev ${inet_dev}

#форвардинг с NAT'ом
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

из этого я не могу сделать echo "1" > /proc/sys/net/ipv4/ip_forward на роутере. Там дефолтно в netfilter правилах помойка, я их не осилил. Возможно стоит снести всё и пробовать с чистого листа.

kvpfs_2
() автор топика
Последнее исправление: kvpfs_2 (всего исправлений: 1)
Ответ на: комментарий от kvpfs_2

Наверное я не понятно написал. Что это за команды и что они делают я и так знаю. Я проверил ваши и они вроде нормальные.

Теперь я хочу видеть что именно вы вводили на раутере, так как там цифирь будет другая.

Могли напутать в раутинге.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от Ololo_Trololo

Ребята!!! Я имею в виду, что ты вот ставишь туда единицу (ок, логично, что она там дефолтно), но пакеты между интерфейсами все равно не идут (между созданным wg, lan, wan), там nftables’ом все очень жирно обмазано, он не даёт.

kvpfs_2
() автор топика
Ответ на: комментарий от kvpfs_2

(ок, логично, что она там дефолтно), но пакеты между интерфейсами все равно не идут (между созданным wg, lan, wan),

По вашей логике lan wan тоже не работало бы.

mx__ ★★★★★
()

По кругу ходим. Вот вы мне реально поможете, если подскажите nftable конфиг, который делает это:

iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

и не мешает данным ходить между интерфейсам. Я сначала все правила снесу, а NAT добавлю, может заработает.

kvpfs_2
() автор топика
Последнее исправление: kvpfs_2 (всего исправлений: 1)

Мне тут ответили в РР сообществе. В общем, похоже на то, что если вы думаете, что ваш openwrt не такой, то я вас разочарую - и у вас отваливаются интерфейсы

Такая тема на оврт (именно на оврт, а не на форке РР) есть. При нештатном выключении отваливается доступ в инет и наверное что-то ещё, но какой смысл искать что там ещё отвалилось, если тут целого интернета лишили!
Причина, предполагаемая, в том, что остаются фантомные службы в статусе "воркинг_хард" (ведь каждая служба, вернее её процесс, это типа файл).
Соответственно то, что при запуске чекает "А не запущена ли я уже?" приходит к выходу, что запущена и не запускается.

Систему в таком состоянии излечивает обычный штатный ребут. Вот только вешать ребут на пропадание интернета...
Возможно стоит попробовать service network restart при возникновении проблемы. Вам это несложно. :)

//-----------

Спс за наводку, это уже что-то. Ведь "сервис нетворк рестарт" надо сделать руками, я правильно понимаю? У меня юзкейс иной - роутер хочу поставиь и забыть условной домохозяйке, никуда по ssh или в вебинтерфейс она зайти не сможет, все что может - вкл/выкл вилку питания в непонятной ситуации. Как-то можно в данном случае придумать, чтобы это пофиксить? Ну там скрипт в автозагрузке, который выполняется раньше всех и сносит pid файлы. Вообще для меня удивительно, что опенврт не умеет в такой ситуации поступать как-то умнее. Это маршрутизатор, отключение эл-ва вещь обычная, а у него интерфейсы со службами отваливаются...

//-----------

В первый раз - да.
Если волшебным образом всё заработает, то запихать эту команду в Интернет-детектор и/или в автозагрузку /etc/rc.local.
Только перед exit 0. :)
kvpfs_2
() автор топика
Ответ на: комментарий от kvpfs_2

Соответственно то, что при запуске чекает «А не запущена ли я уже?» приходит к выходу, что запущена и не запускается.

Каким образом? Все pid файлы хранятся в tmpfs, их в любом случае не может остаться после ребута или потери питания.

kneedeep
()
Ответ на: комментарий от kvpfs_2

Вы слишком глубоко лезете. Вам дали firewall4 в OpenWRT и зоны, чтобы не лезть ни в nft, ни в iptables (которого нет, начиная то ли с 22, то ли с 23 версии)

https://openwrt.org/docs/guide-user/firewall/firewall_configuration

NyXzOr ★★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 1)
Ответ на: комментарий от kvpfs_2

По кругу ходим. Вот вы мне реально поможете, если подскажите nftable конфиг, который делает это:

iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE

https://openwrt.org/docs/guide-user/firewall/fw3_configurations/fw3_nat

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от kvpfs_2

Такие же можно выполнять на роутере

Можно. Но не стоит. Там есть штатные средства для роутинга и создания интерфейсов. Вы б ещё на микротике их выполняли. Там же тоже linux.

NyXzOr ★★★★★
()
Ответ на: комментарий от NyXzOr

Ты обмазываешься каким-то высокоуровневым говном, которое не нужно совсем. Посмотри на мой скрипт с шелл командами, он очень прост и понятен, зачем тебе обмазывать это все чем-то? Теряешь понимание и возможность чинить, играешься в какие-то абстракции, так оно ещё и не работает. Я весь тред говорю: «интерфейс отлетает», а ты: «зоны, гуй, менюшки, здорово, вкусно»

kvpfs_2
() автор топика
Ответ на: комментарий от kvpfs_2

PBR не только роутинг, но и маркировка траффика.

Роутинг на основе протокола?

нет, не только. На основе доменного имени. Или порта. Иногда нужно, да.

поможет ли PBR выделить трафик какого-нибудь «OKKO» и пустить его мимо WG?

так что да, поможет. Только обычно наоборот делают. Пускают в wg то, что нужно.


и это ещё изучите https://openwrt.org/docs/guide-user/services/vpn/wireguard/client

uci set network.wgserver.route_allowed_ips="1"

C этой строчкой нужно смотреть, что поставить в зависимости как роутить в VPN.

NyXzOr ★★★★★
()
Ответ на: комментарий от kvpfs_2

так оно ещё и не работает.

У меня как раз работает отлично. А у вас вот с вашим скриптом не очень работает.

Вы все нюансы той среды, где его запускаете, учли?

PS

Ты обмазываешься каким-то высокоуровневым говном

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

NyXzOr ★★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 1)