Wi-CAT LLC

Wireless Comprehensive Advanced Technology. Build your network now.

Wi-CAT LLC
Навигация Форума
Вы должны войти, чтобы создавать сообщения и темы.

Wireguard настройка (решено - инструкция)

на Wive-NG-HQ  поднят vpn сервер(скрин1). Клиент (на zyxel  keenetic lite самый первый) успешно подключается. Сеть на Wive-NG-HQ 192.168.1.0 255.255.255.0. Сеть на zyxel  keenetic lite  192.168.2.0 255.255.255.0. На keenetic прописал маршрут  и хосты в 192.168.1.0 успешно пингуются. Пинг же из 192.168.1.0 в 192.168.2.0 не проходит. В таблице маршрутизации обнаружил маршрут (скрин2.JPG.желтым). Но при попытке пингануть 172.16.200.3 - ничего(скрин3.JPG). Как такое может быть?

Соответственно и любой хост в сети  192.168.2.0 255.255.255.0 недоступен. Как доступиться к сети?

Не знаю, пригодится ли информация: внешний IP Wive-NG-HQ динамический белый. Внешний IP zyxel  keenetic lite похоже спрятан за проксей провайдера.

Загруженные файлы:
  • Вам нужно войти, чтобы просматривать прикрепленные файлы..
  1. ip route -n с консоли покажите, похоже в таблице роутов UI не уичтывается кейз VPN сервера (не помню делали или нет) потому там пометка LAN.
  2. почему кинетик не отвечает на пинг со стооны серверя я не в курсе, может у них тупо icmp щапрещён

Пинг же из 192.168.1.0 в 192.168.2.0 не проходит

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

Мягко сказать это вопросы понимания функционирования маршрутизации и умения использования диагностических инструментов Linux.

На текущий момент Wive ничего неизвестно о подсети кинетика и она тупо незнает куда ей пакеты и через что пересылать.

В обратную же сторону вовсе выполняется NAT(маскарад) и для Wive кинетик выглядит как просто один хост который вполне успешно ходит через туннель куда хочет.

Дефолтная схема именно такая, пустить удалённых клиентов в домашнюю сеть или инет через домашнюю сеть. Т.е. с NAT`ом и всеми атрибутами.

Что бы объединить 2 локальных сегмента без NAT через туннель нужно вырубить NAT на стороне сервера клиента (кинетика, там он всяко тоже по дефолту выполняется ибо l2tp/pptp клиент по дефолту используется в РФ на доступе у провов) и описать с обоих сторон всю маршрутизацию вручную. Для этого придётся ессно разобраться как оная работает вообще в принципе.

[Wive-NG-HQ:/home]# ip route -n
Command "-n" is unknown, try "ip route help".
[Wive-NG-HQ:/home]# ip route
default via 178.89.64.1 dev eth3  metric 50
default dev eth3  scope link  metric 1000
95.56.237.24 via 178.89.64.1 dev eth3  metric 50
127.0.0.0/8 dev lo  scope link
172.16.200.3 dev ppp_l2tp1  proto kernel  scope link  src 172.16.200.1
178.89.64.0/21 dev eth3  proto kernel  scope link  src 178.89.67.240
178.89.64.1 dev eth3  metric 1000
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1
212.154.163.162 via 178.89.64.1 dev eth3  metric 50
224.0.0.0/4 dev eth3  scope link
239.0.0.0/8 dev br0  scope link

Тьфу да. Полночь либо route -n либо ip route просто. =)

Как сам видите маршрута в 192.168.2.0/24 тут нет а что бы добиться того чего хотите должен быть через интерфейс ppp_l2tp1 в данном случае.

При этом на обратной стороне не должно быть ната и должен быть обратный маршрут в 192.168.1.0/24

И т.д. и т.п.

Вопрос тут не исчерпытвается какую галку ткнуть или что прописать. Тем более что о том как и что конфигуриться на кинетиках мне неизвестно тем более на древних с v1 фирмварью.

Направление дал, читайте, разбирайтесь. Как уже сказано выше это не столько к вопросам конкретного ПО, сколько к вопросам маршрутизации в принципе.

Могу перенести в ветку вопросов сообществу. Может кто-то вызовется помочь. В рамках ТП вопрос черезчур общий мало относящийся вообще к Wive.

А что бы дать step by step рекомедации для просто повторения до кучи требует знать что там и как на этом самом кинетике. Увы, я не в курсе.

Завтра смогу поработать с кинетиком.

Цитата: sfstudio от 09/12/2020, 00:07

Могу перенести в ветку вопросов сообществу. Может кто-то вызовется помочь. В рамках ТП вопрос черезчур общий мало относящийся вообще к Wive.

переносите

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

Если вы желаете реализовать такую схему, то эти знания априори должны быть в голове.

Ок. Перенёс.

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

Схема возможна не единственная на самом деле.

Спасибо. Буду читать. Меня смутило, что с роутера нет пинга на 172,16,200,3... я предполагал, что раз с кинетика(и с хостов его подсети) пингуются хосты сети сервера, то этого достаточно. Я действительно новичок.  Надо, получается, посмотреть настройки кинетика.

Еще, прописал маршрут (ниже на скрине)

а между тем

[Wive-NG-HQ:/home]# ip route
default via 95.57.80.1 dev eth3  metric 50
default dev eth3  scope link  metric 1000
95.56.237.24 via 95.57.80.1 dev eth3  metric 50
95.57.80.0/20 dev eth3  proto kernel  scope link  src 95.57.92.178
95.57.80.1 dev eth3  metric 1000
127.0.0.0/8 dev lo  scope link
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1
212.154.163.162 via 95.57.80.1 dev eth3  metric 50
224.0.0.0/4 dev eth3  scope link
239.0.0.0/8 dev br0  scope link
[Wive-NG-HQ:/home]#

 

сохранить и перезагрузить выполнил

Загруженные файлы:
  • Вам нужно войти, чтобы просматривать прикрепленные файлы..

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

Просто добавить маршрут в обратку тем более /32 маской не выйдет. И не забывайте что обратный маршрут идёт в обратную же сторону т.е. следующий после vpn сервера gw это кинетик, а не VPN интерфейс сервера.

Более того, роуты для vpn сервера добавляются в момент соединения клиента. Это не правила нетфильтра, они не могут быть добавлены до того как интерфейс будет поднят.

В общем разбирайтесь. Это вопросы из области администрирования сетей и общего понимания всего этого дела. Может найдётся кто-то со старым кинетиком и подскажет как там icmp разрешить, нат вырубить и маршрутизацию без NAT описать.

Со стороны Wive останется правильно прописать маршрут.

Решил продолжить в этой теме.

Настроил Wireguard на kenetic ultra (сервер) и wive-ng-hq (клиент) пинг идет обе стороны.

На ugoos поднят torserver, угос в сети кенетика. тв(192.168.3.4) из сети wive-ng-hq прекрасно работает с torserver.

На keenetic  настроено согласно инструкции с сайта кенетика, а настройки на клиенте ниже в скринах.

Собственно проблема: не могу настроить роутинг в интернет для устройства с  Ip 192.168.3.4 через vpn (кенетик), при том, что все остальные устройства с сети клиента должны ходить  в интернет через wive-ng-hq.

[Wive-NG-HQ:~]# echo 200 isp2 >> /etc/iproute2/rt_tables
[Wive-NG-HQ:~]# ip rule add from 192.168.3.4 table isp2
Error: argument "isp2" is wrong: invalid table ID
[Wive-NG-HQ:~]# ip rule add from 192.168.3.4 table 200
RTNETLINK answers: Operation not supported

Уперся в это сообщение: RTNETLINK answers: Operation not supported!

Загруженные файлы:
  • Вам нужно войти, чтобы просматривать прикрепленные файлы..

Кто вам сказал что advancrd routing (множественные таблицв маршрутизации) в ядре собраны? В 3.2.15 (ближе к ночеру) добавлю поддрежку множественных таблиц. 2021г пора =)

А вот тему нужно было создать в разделе решений сообщества отдельную по WG а не в кучу всё сваливать.

 

С вас в отдельной теме описальник подъёма WG для остальных желающих в виде короткой инструкции. ;)

Да. Полиси роутинг скорее всего не будет работать при включенных оффлоадах. Но надо будет проверить. Попробуете, отпишитесь. У меня нет возможности проверить это дело, стэнд занят другими задачами длительными.

С вас в отдельной теме описальник подъёма WG для остальных желающих в виде короткой инструкции. ;)

Да не вопрос. Тогда, поскольку я далеко не сетевик, попрошу проверить на безопасность правил и пр. По факту все нарыл в интернете и пробовал что заработает. потом, я настраивал wive как клиента. надо будет настроить в качестве сервера. постараюсь сегодня отработать.

 

Залито в обновления. Пробуйте.

Сетевики тоже не с молоком матери знания получали. Особенно когда я начинал ;) Сейчас инет доступен в любой момент можно погуглить.

Главное когда всё заработает таки разобраться как это таки работает и почему работает. =) Ну в смысле не оставаться на уровне копипаст решений.

приложил свои наброски. Вордовский файл не прикрепляется, поэтому вот

Настройка Wireguard на Keenetic Ultra и Wive-NG-HQ.

Поскольку просили короткую инструкцию, то я, большей частью, буду вставлять скрины и код, чтоб не вам пришлось набирать его.

Для установки/настройки я использовал putty, чего и вам советую.

  1. Настройка Keenetic выполнялась по этой инструкции https://help.keenetic.com/hc/ru/articles/360010592379

https://help.keenetic.com/hc/ru/articles/360012075879-Настройка-WireGuard-VPN-между-двумя-роутерами-Keenetic

  1. Настройка Wive. Как описано https://wi-cat.ru/forums/topic/vpn-gre-wireguard-openvpn-2-6-4-i-starshe/ можно настроить VPN не используя Entware. У меня не стартовал Wireguard при перезагрузкие роутера. Я не разбирался, да и потом, когда я увидел эту статью, то у меня уже был установленVPN на Entware. Установку Entware выполнял по этой инструкции https://wi-cat.ru/wive-ng/chto-mozhet-usb/.

К сути. По пути/opt/etc/wireguard/ создаем файлы

wg0.conf с содержимым

[Interface]

PrivateKey = сюда копировал приватный ключ, получение которого опишу в следующем пункте.

ListenPort = 37001- выбираете какой вам угодно. Не нужно использовать стандартные порты(21,22,25 и т .п)

[Peer]

#WG-S

PublicKey = сюда копировал публичный ключ, сформированный на keenetic.

AllowedIPs = 10.1.0.0/24, 192.168.1.0/24, 0.0.0.0/0 Здесь проставляем сети, с которыми клиент будет работать . 10.1.0.0/24- сеть VPN, 192.168.1.0 – сеть сервера VPN. Если не указать эти сети, то при обращении к ним выходит ошибка, если не ошибаюсь, 161. 0.0.0.0/0 – для выхода клиента VPN через сервер VPN в интернет.

Endpoint = *.keenetic.link:37001 здесь указываем внешний Ip сервера, если он белый, или *.keenetic.link

PersistentKeepalive = 10 – через сколько секунд проверяется соединение. Планирую, по окончании настроек установит 10-30 секунд.

Получение ключей. Здесь все просто. Отрабатываем команду

[Wive-NG-HQ:/opt/etc/wireguard]# wg genkey | tee server_private.key | wg pubkey

| tee server_public.key

[Wive-NG-HQ:/opt/etc/wireguard]#

И получаем ключи для сервера.

И команду wg genkey | tee client_private.key | wg pubkey | tee client_public.key для получения клиентских ключей. После получения ключей копируем приватный в файл конфигурации на wive.  А только что полученный публичный в keenetic. С ключами Keenetica поступаем аналогичным образом. Приватный оставляем на keenetic, публичный копируем на wive.

Продолжим создавать необходимые файлы.

wg-up

#!/bin/sh

ip link add dev wg0 type wireguard

wg setconf wg0 /opt/etc/wireguard/wg0.conf

ip address add dev wg0 10.1.0.3/24 –ip нашего туннеля на стороне wive

ip link set up dev wg0

ifconfig wg0 mtu 1420

ifconfig wg0 txqueuelen 1000

(взял отсюда взял отсюда https://losst.ru/ustanovka-wireguard-v-ubuntu#Шаг_2_Установка_WireGuard)

sysctl net.ipv4.ip_forward = 1 

sysctl net.ipv6.conf.all.forwarding = 1
sysctl net.ipv4.conf.all.rp_filter = 1
sysctl net.ipv4.conf.default.proxy_arp = 0
sysctl net.ipv4.conf.default.send_redirects = 1
sysctl net.ipv4.conf.all.send_redirects = 0

cp -pu /opt/etc/wireguard/wg.sh /opt/etc/ndm/netfilter.d/wg.sh для обмена по сети

iptables -C FORWARD -o wg0 -j ACCEPT 2>/dev/null || iptables -I FORWARD -o wg0

iptables -C FORWARD -i wg0 -j ACCEPT 2>/dev/null || iptables -I FORWARD -i wg0

iptables -C OUTPUT -o wg0 -j ACCEPT 2>/dev/null || iptables -A OUTPUT -o wg0 -j

iptables -t nat -C POSTROUTING -o wg0 -j MASQUERADE 2>/dev/null || iptables -t

iptables -C INPUT -i wg0 -j ACCEPT 2>/dev/null || iptables -I INPUT -i wg0 -j A

iptables -t nat -C PREROUTING -p udp --dport 37001 -j DNAT --to-destination 192

 

Следующий файл.

wg.sh

#!/bin/sh

[ "$type" == "ip6tables" ] && exit 0

if [ "$table" == "filter" ]; then

iptables -C FORWARD -o wg0 -j ACCEPT 2>/dev/null || iptables -I FORWARD -o wg0

iptables -C FORWARD -i wg0 -j ACCEPT 2>/dev/null || iptables -I FORWARD -i wg0

iptables -C OUTPUT -o wg0 -j ACCEPT 2>/dev/null || iptables -A OUTPUT -o wg0

iptables -C INPUT -i wg0 -j ACCEPT 2>/dev/null || iptables -I INPUT -i wg0 -j A

fi

 

if [ "$table" == "nat" ]; then

iptables -t nat -C POSTROUTING -o wg0 -j MASQUERADE 2>/dev/null || iptables -t

iptables -t nat -C PREROUTING -p udp --dport 37001 -j DNC1;5CAT --to-destinatio

fi

 

и последний файл в папке

wg-down

#!/bin/sh

route del -net 192.168.1.0/24 wg0

ip link del dev wg0 2>/dev/null

rm /opt/etc/ndm/netfilter.d/wg.sh

iptables -D FORWARD -o wg0 -j ACCEPT

iptables -D FORWARD -i wg0 -j ACCEPT

iptables -D OUTPUT -o wg0 -j ACCEPT

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

iptables -D INPUT -i wg0 -j ACCEPT

iptables -t nat -D PREROUTING -p udp --dport 37001 -j DNAT --to-destination 192.168.1.1:37001

 

создаем папку /opt/etc/ndm/

 

и последнее. В /opt/etc/init.d/ создаем S01wireguard

#!/bin/sh

PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/u

# if lsmod | grep wireguard >>

# modprobe wireguard parametr=wg0.conf

modprobe wireguard

# /opt/etc/wireguard/wg-up

case "$1" in

       start)

               logger "Starting WireGuard service."

               /opt/etc/wireguard/wg-up

       ;;

       stop)

               /opt/etc/wireguard/wg-down

       ;;

       restart)

               logger "Restarting WireGuard service."

               /opt/etc/wireguard/wg-down

               sleep 2

               /opt/etc/wireguard/wg-up

       ;;

       *)

       echo "Usage: $0 {start|stop|restart}"

 

Командой /opt/etc/init.d/S1openvpn start стартуем vpn и если не вышли ошибки, то пингом проверяем видимость/доступность  хостов.

 

Загруженные файлы:
  • Вам нужно войти, чтобы просматривать прикрепленные файлы..
Цитата: sfstudio от 07/03/2021, 14:10

Залито в обновления. Пробуйте.

 

Не вижу обновлений

Видимо что-то вы наподнимали с туннелями что сломало обновления.

Цитата: sfstudio от 07/03/2021, 15:32

Видимо что-то вы наподнимали с туннелями что сломало обновления.

все нормально. пришло обновление

то что доктор прописал!!! Спасибо!

дописал 
[Wive-NG-HQ:~]# echo 200 newtable >>/etc/iproute2/rt_tables
[Wive-NG-HQ:~]# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
200 newtable
[Wive-NG-HQ:~]# ip route add default via 10.1.0.1 table 200
[Wive-NG-HQ:~]# ip rule add from 192.168.3.4 table 200

 

C:\Windows\System32>tracert 8.8.8.8

Трассировка маршрута к dns.google [8.8.8.8]
с максимальным числом прыжков 30:

1 <1 мс <1 мс <1 мс Wive-NG-HQ.lo [192.168.3.1]
2 4 ms 4 ms 4 ms 10.1.0.1
3 6 ms 5 ms 5 ms 82.200.242.206
4 22 ms 22 ms 23 ms

 

Облегчённая инструкция с учётом недавно появившейся базовой поддержки сервера(по запросу из спортлото).

  1. Подключаемся к маршрутизатору по SSH(в поиске куча информации как это делать). Это можно сделать даже через Chrome(расширение Secure Shell). Ну или приложение вроде PuTTY. По умолчанию адрес 192.168.1.1 порт 22. Логин и пароль такие же, как в веб-интерфейсе. Пароль при вводе может не отображаться.
  2. Внимание! Если изменение настроек не требуется - переходите сразу к пункту включения сервера. Доступные для настройки параметры и способы их изменения:

Порт сервера(по умолчанию - 51820):

nvram_set wireguard_port 51820

Внутренний адрес и маска сервера(по умолчанию - 10.10.10.1/24):

nvram_set wireguard_netadress 10.10.10.1/24

Допустимые адреса клиентов - значение "AllowedIPs"(по умолчанию - 10.10.10.2/32):

nvram_set wireguard_clientadress 10.10.10.2/32
  • Если есть необходимость изменить другие опции, то файл /etc/wg0.conf править бесполезно, т.к. он генерируется автоматически. В такой ситуации нужно править файлы /etc/init.d/wireguard и /etc/rc.d/W39wireguard. Для этого запускаем текстовый редактор vi:
vi /etc/rc.d/W39wireguard

Нажимаем букву i (после нажатия она отобразится в левом нижнем углу). После чего стрелками переходим к фрагменту:

printf "
[Interface]
PrivateKey = ${wireguard_prikey}
ListenPort = ${wireguard_port}

[Peer]
PublicKey = ${wireguard_pubkey}
AllowedIPs = ${wireguard_clientadress}
PersistentKeepalive = 10
" > /etc/wg0.conf

И вносим правки между кавычек. После внесения изменений жмём по очереди - ESC, двоеточие, W, Q и Enter. Также правим и второй файл. После правок выполняем для сохранения:

fs save
  • Если Вы делали изменения в этих двух файлах, то учтите, что при сбросе или обновлении ПО изменения в файлах будут стёрты. Чтобы заново не вносить их через SSH, их можно оформить в RWFS-пакет. Для этого нужно выполнить:
tar c -j /etc/init.d/wireguard /etc/rc.d/W39wireguard > /tmp/web/rwfs.tar.bz2

После чего его можно будет забрать по ссылке http://192.168.1.1/rwfs.tar.bz2 предварительно авторизовавшись в веб-интерфейсе. При необходимости адрес/порт заменить на свои. Теперь после каждого обновления ПО можно идти в Администрирование - Управление - Загрузка RW-FS (не путать со следующим пунктом!) и загружать свой пакет.

  • Включаем сервер(для выключения укажите ноль):
nvram_set wireguard_enabled 1
  • И перезагружаем маршрутизатор.
  • Ключи сервера и клиента можно посмотреть командами:
cat /pss/wg_server_private_key
cat /pss/wg_server_public_key
cat /pss/wg_client_private_key
cat /pss/wg_client_public_key

Также их можно забрать в виде файлов способом, аналогичным описанному выше, но командой:

tar c -j /pss/wg_server_private_key /pss/wg_server_public_key /pss/wg_client_private_key /pss/wg_client_public_key > /tmp/web/rwfs.tar.bz2

Ещё более упрощённый вариант, с учётом поддержки в веб-интерфейсе.

  1. Выставляем ключи. [ Сервисы - Сервер VPN - Сервер WireGuard ] - Включаем и жмём "Применить". Затем "Сгенерировать" и выше "Сохранить". Если нужно изменить ключи, то полученный архив открываем(не распаковывая) архиватором(я использовал 7-Zip), внутри открываем ещё один и прямо в нём открываем нужный файл и заменяем ключ. После изменения файлов архиватор должен 1-2 раза предложить обновить архив. Архив с обновлёнными ключами загружаем через веб-интерфейс в поле "Загрузить ключи из файла". Счётчик применения может застревать на нуле, так что можно просто обновить страницу.
  2. Настраиваем.

    Адрес клиента - Допустимые внутренние адреса клиентов(значение "AllowedIPs"). Можно указать адрес одного клиента вроде 10.10.10.2/32 или целую подсеть разрешённых адресов(например 10.10.10.0/24).
    Сетевой адрес - внутренний адрес сервера. Должен быть из той же подсети, что и адреса клиента. Например 10.10.10.1/24.
    Порт - собственно, порт сервера.
    Жмём "Применить".

  3. Для подключения к серверу в клиенте необходимо указать настоящий внешний адрес сервера, его порт, личный ключ клиента из файла wg_client_private_key, публичный ключ сервера из файла wg_server_public_key, внутренний IP-адрес клиента и какие адреса будут ходить через туннель(0.0.0.0/0 чтобы шёл весь трафик).

Вроде особых проблем не возникло с настройкой. Всё работает. Но возникла странная ситуация. Все ресурсы работают в домашней сети (подключаюсь с работы), но в вебморду роутера зайти не могу. Смог зайти только когда включил в удаленном управлении "управление через HTTP" LAN & WAN, что меня немного в плане безопасности не устраивает. Настройки сервера wireguard стоят по умолчанию. 

Скорее всего достаточно будет в настройках транзитных правил фаервола разрешить ходить в сторону локального IP роутера через wg0. Ессно при поднятом туннеле по локальному адресу и обращаться. Ну и убедиться что на клиенте есть роут в LAN подсеть роутера.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: