Jump to content

Клиент и сервер WireGuard на keenetic одновременно


Recommended Posts

Добрый день!

1. На моем keenetic viva 1910 есть рабочий VPN туннель WireGuard до сервера в Германии, прописаны некоторые маршруты что бы определённый трафик шел через этот туннель. Мой кинетик выступает клиентом в данном случае. 

2. Теперь мне нужно поднять WG сервер на этом же кинетике, подключить к нему несколько смартфонов, и заставить весь их трафик идти через туннель WG из первого пункта, без доступа к домашней сети.

Сервер я создал, сделал тестовый пир, соединение успешно, обмены килобайтами пошли, но после подключения на смартфоне есть доступ только к домашней сети, а в интернет доступа нет. А хотелось в точности наоборот)

немного сведений о настройках:

в интерфейсе сервера WG - DNSы я указал (8.8.8.8, 1.1.1.1)

в настройках пира на сервере WG в разрешённых подсетях я указал 0.0.0.0/0

в интерфейсе клиента WG на смартфоне DNSы я указал (8.8.8.8, 1.1.1.1)

в настройках пира клиента WG на смартфоне в разрешённых подсетях я указал 0.0.0.0/0

в Web Cli кинетика следующие команды я выполнил:
interface Wireguard0 security-level private
ip nat Wireguard0
system configuration save

выполнились корректно и без ошибок.

Для пущей надежности в межсетевом экране кинетика, для интерфейса WG сервера я разрешил все TCP любых портов и назначений.

Что я делаю не так? Или такая схема невозможна?

PS перед этим экспериментом я сначала настроил IKEv2 vpn сервер, подключился с мобилки, и получил примерно то, что хотел: интернет есть, маршрутизация работает, все ок. Но мне хочется настроить именно WG сервер, потому что он умеет удобно настраиваться на мобилках по QR коду, а не вручную.

 

 

 

 

 

Link to comment
Share on other sites

11 час назад, nikomx сказал:

1. На моем keenetic viva 1910 есть рабочий VPN туннель WireGuard до сервера в Германии, прописаны некоторые маршруты что бы определённый трафик шел через этот туннель. Мой кинетик выступает клиентом в данном случае. 

2. Теперь мне нужно поднять WG сервер на этом же кинетике, подключить к нему несколько смартфонов, и заставить весь их трафик идти через туннель WG из первого пункта, без доступа к домашней сети.

в Web Cli кинетика следующие команды я выполнил:
interface Wireguard0 security-level private
ip nat Wireguard0
system configuration save

Что я делаю не так? Или такая схема невозможна?

Где в нескольких местах уже описывал вариант как удаленного клиента завернуть в VPN канал для выхода в интернет. Опишу еще раз может что-то вам подойдет, вариант на базе профилей так как не хорошо когда все в основном профиле, легко запутаться.

1. На роутере есть поднят WARP (у вас WireGuard до сервера в Германии), можно в место WARP заменить на WireGuard до сервера в Нидерландах роли не играет.

2. Создан профиль WARP и в нем только один канал WG активен (ремарка для данного профиля маркировка пакетов будет только тогда и тогда когда появиться живой клиент в данном профиле, т.е. не помещен в него через WEB а когда сработает arp на нем и он будет добавлен в таблицу arp, но нам маркировка не нужна а нужна таблица для данного профиля а она будет создана table)

3. Так как белый адрес на роутер то поднят сервер WG (хотя так же описывал когда и серый и поднят SSTP сервер и подключается клиент) роли не играет.

4. На клиенте смартофоне поднят WG или для SSTP Max (привязка user к IP)

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

- по умолчанию для данного клиента будет маршрутизация через основной прояфиль (т.е. default маршрут для данного профиля согласно приоритетам и галкам на нужных интерфейсах на странице WEB)

- для созданного профиля будет созданна своя таблица маршрутизации и в которой будет свой deafult на нужный интерфейс, в данном случае это п.2

6. Теперь осталось завернуть данного клиента смартфон п.4 в данную таблицу маршрутизации.

- по умолчанию в ПО роутера первый профиль получает номер table 42, следующий 43, следующий 44 и т.д.

- в данном случае WARP профиль имеет table 42

- поместить смартфон в нужную table 42

Клиент удаленно подключился по WG к роутеру 
10.16.130.6 dev nwg3  scope link 

Для него пока существует профиль по умолчанию основной
~ # ip ro
default dev ppp0  scope link 
...10.16.130.0/24 dev nwg3  proto kernel  scope link  src 10.16.130.101 
10.16.130.6 dev nwg3  scope link 
...
т.е. выход для него через провайдера ppp0, легко проверяеться speedtest - адрес будет стоять от интерфеса ppp0

Сменим ему выход на наш профиль WARP в котором 
~ # ip ro show table 42
default dev nwg0  scope link
...

выполнив команду 
ip rule add from 10.16.130.6 table 42
выход для него теперь через профиль WARP, легко проверяеться speedtest - адрес будет стоять от интерфеса ppp0

При отключение данного клиента и заново подключение все так же работает.

В настоящее время одну единственную команду приходиться вводить через Entware - "ip rule add"

Скрытый текст
Сервер WG на роутере и два клиента на нем 

access-list _WEBADMIN_Wireguard3
    permit ip 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0
    permit description WG
    auto-delete

interface Wireguard3
    description WG
    security-level private
    ip address 10.16.130.101 255.255.255.0 - сервер WG
    ip mtu 1324
    ip access-group _WEBADMIN_Wireguard3 in
    ip global 6553
    ip tcp adjust-mss pmtu
    wireguard listen-port хххх
    wireguard peer Z8c......DMdnbTY= !AAA
        endpoint 10.16.130.6:хххх
        keepalive-interval 30
        allow-ips 10.16.130.6 255.255.255.255 - клиент 
        allow-ips 192.168.130.0 255.255.255.0 - сеть роутера
        allow-ips 0.0.0.0 0.0.0.0 - все
    !
    wireguard peer y09.....gQjHJMCA= !TTT
        endpoint 10.16.130.18:xxxx
        keepalive-interval 30
        allow-ips 10.16.130.0 255.255.255.0
        allow-ips 192.168.130.0 255.255.255.0
        allow-ips 0.0.0.0 0.0.0.0
    !
    up

isolate-private

Сам WARP
interface Wireguard0
    description Cloud-warp
    security-level public
...

access-list _WEBADMIN_Wireguard0
    permit udp 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0
    permit description Warp-UDP
    permit tcp 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0
    permit description Warp-TCP

 

 

Link to comment
Share on other sites

14 часа назад, nikomx сказал:

Добрый день!

1. На моем keenetic viva 1910 есть рабочий VPN туннель WireGuard до сервера в Германии, прописаны некоторые маршруты что бы определённый трафик шел через этот туннель. Мой кинетик выступает клиентом в данном случае. 

2. Теперь мне нужно поднять WG сервер на этом же кинетике, подключить к нему несколько смартфонов, и заставить весь их трафик идти через туннель WG из первого пункта, без доступа к домашней сети.

Сервер я создал, сделал тестовый пир, соединение успешно, обмены килобайтами пошли, но после подключения на смартфоне есть доступ только к домашней сети, а в интернет доступа нет. А хотелось в точности наоборот)

немного сведений о настройках:

в интерфейсе сервера WG - DNSы я указал (8.8.8.8, 1.1.1.1)

в настройках пира на сервере WG в разрешённых подсетях я указал 0.0.0.0/0

в интерфейсе клиента WG на смартфоне DNSы я указал (8.8.8.8, 1.1.1.1)

в настройках пира клиента WG на смартфоне в разрешённых подсетях я указал 0.0.0.0/0

в Web Cli кинетика следующие команды я выполнил:
interface Wireguard0 security-level private
ip nat Wireguard0
system configuration save

выполнились корректно и без ошибок.

Для пущей надежности в межсетевом экране кинетика, для интерфейса WG сервера я разрешил все TCP любых портов и назначений.

Что я делаю не так? Или такая схема невозможна?

PS перед этим экспериментом я сначала настроил IKEv2 vpn сервер, подключился с мобилки, и получил примерно то, что хотел: интернет есть, маршрутизация работает, все ок. Но мне хочется настроить именно WG сервер, потому что он умеет удобно настраиваться на мобилках по QR коду, а не вручную.

 

 

 

 

 

Скорее всего не на том интерфейсе ip nat прописан. 

Link to comment
Share on other sites

2 минуты назад, Denis P сказал:

Скорее всего не на том интерфейсе ip nat прописан. 

На том, перед тем как прописать, я это проверил через команду show interface.

Но спасибо за версию)

Link to comment
Share on other sites

2 часа назад, vasek00 сказал:

Где в нескольких местах уже описывал вариант как удаленного клиента завернуть в VPN канал для выхода в интернет. Опишу еще раз может что-то вам подойдет, вариант на базе профилей так как не хорошо когда все в основном профиле, легко запутаться.

1. На роутере есть поднят WARP (у вас WireGuard до сервера в Германии), можно в место WARP заменить на WireGuard до сервера в Нидерландах роли не играет.

2. Создан профиль WARP и в нем только один канал WG активен (ремарка для данного профиля маркировка пакетов будет только тогда и тогда когда появиться живой клиент в данном профиле, т.е. не помещен в него через WEB а когда сработает arp на нем и он будет добавлен в таблицу arp, но нам маркировка не нужна а нужна таблица для данного профиля а она будет создана table)

3. Так как белый адрес на роутер то поднят сервер WG (хотя так же описывал когда и серый и поднят SSTP сервер и подключается клиент) роли не играет.

4. На клиенте смартофоне поднят WG или для SSTP Max (привязка user к IP)

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

- по умолчанию для данного клиента будет маршрутизация через основной прояфиль (т.е. default маршрут для данного профиля согласно приоритетам и галкам на нужных интерфейсах на странице WEB)

- для созданного профиля будет созданна своя таблица маршрутизации и в которой будет свой deafult на нужный интерфейс, в данном случае это п.2

6. Теперь осталось завернуть данного клиента смартфон п.4 в данную таблицу маршрутизации.

- по умолчанию в ПО роутера первый профиль получает номер table 42, следующий 43, следующий 44 и т.д.

- в данном случае WARP профиль имеет table 42

- поместить смартфон в нужную table 42

Клиент удаленно подключился по WG к роутеру 
10.16.130.6 dev nwg3  scope link 

Для него пока существует профиль по умолчанию основной
~ # ip ro
default dev ppp0  scope link 
...10.16.130.0/24 dev nwg3  proto kernel  scope link  src 10.16.130.101 
10.16.130.6 dev nwg3  scope link 
...
т.е. выход для него через провайдера ppp0, легко проверяеться speedtest - адрес будет стоять от интерфеса ppp0

Сменим ему выход на наш профиль WARP в котором 
~ # ip ro show table 42
default dev nwg0  scope link
...

выполнив команду 
ip rule add from 10.16.130.6 table 42
выход для него теперь через профиль WARP, легко проверяеться speedtest - адрес будет стоять от интерфеса ppp0

При отключение данного клиента и заново подключение все так же работает.

В настоящее время одну единственную команду приходиться вводить через Entware - "ip rule add"

  Показать содержимое
Сервер WG на роутере и два клиента на нем 

access-list _WEBADMIN_Wireguard3
    permit ip 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0
    permit description WG
    auto-delete

interface Wireguard3
    description WG
    security-level private
    ip address 10.16.130.101 255.255.255.0 - сервер WG
    ip mtu 1324
    ip access-group _WEBADMIN_Wireguard3 in
    ip global 6553
    ip tcp adjust-mss pmtu
    wireguard listen-port хххх
    wireguard peer Z8c......DMdnbTY= !AAA
        endpoint 10.16.130.6:хххх
        keepalive-interval 30
        allow-ips 10.16.130.6 255.255.255.255 - клиент 
        allow-ips 192.168.130.0 255.255.255.0 - сеть роутера
        allow-ips 0.0.0.0 0.0.0.0 - все
    !
    wireguard peer y09.....gQjHJMCA= !TTT
        endpoint 10.16.130.18:xxxx
        keepalive-interval 30
        allow-ips 10.16.130.0 255.255.255.0
        allow-ips 192.168.130.0 255.255.255.0
        allow-ips 0.0.0.0 0.0.0.0
    !
    up

isolate-private

Сам WARP
interface Wireguard0
    description Cloud-warp
    security-level public
...

access-list _WEBADMIN_Wireguard0
    permit udp 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0
    permit description Warp-UDP
    permit tcp 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0
    permit description Warp-TCP

 

 

Я, к сожалению, почти ничего не понял из вышесказанного. Тяжелый слог для меня.

Link to comment
Share on other sites

24 минуты назад, nikomx сказал:

На том, перед тем как прописать, я это проверил через команду show interface.

Но спасибо за версию)

может это как-то поможет? 

        "Wireguard0": {
            "id": "Wireguard0",
            "index": 0,
            "interface-name": "Wireguard0",
            "type": "Wireguard",
            "description": "WG-S",
            "traits": [
                "Ip",
                "Wireguard"
            ],
            "link": "down",
            "connected": "no",
            "state": "up",
            "mtu": 1280,
            "tx-queue-length": 50,
            "address": "172.16.82.1",
            "mask": "255.255.255.255",
            "uptime": 246,
            "global": false,
            "security-level": "private",
            "wireguard": {
                "public-key": "4iYxjfTD.............Kbd0o=",
                "listen-port": *****,
                "status": "up",
                "peer": [
                    {
                        "public-key": "Cge4g9L.............iuk3AgI=",
                        "local": "10.195.30.225",
                        "local-port": *****,
                        "via": "Wireguard2",
                        "remote": "172.16.82.7",
                        "remote-port": 0,
                        "rxbytes": 39704,
                        "txbytes": 2556,
                        "last-handshake": 210,
                        "online": false
                    }
                ]
            }
        },
        "Wireguard2": {
            "id": "Wireguard2",
            "index": 2,
            "interface-name": "Wireguard2",
            "type": "Wireguard",
            "description": "WARP",
            "traits": [
                "Ip",
                "Wireguard"
            ],
            "link": "up",
            "connected": "yes",
            "state": "up",
            "mtu": 1324,
            "tx-queue-length": 50,
            "address": "10.195.30.225",
            "mask": "255.192.0.0",
            "uptime": 2135,
            "global": true,
            "defaultgw": false,
            "priority": 32766,
            "security-level": "public",
            "wireguard": {
                "public-key": "n+wrnC............IwYRiA=",
                "listen-port": 4****,
                "status": "up",
                "peer": [
                    {
                        "public-key": "dG0Ss......../gNk8=",
                        "local": "8*.***.***.**2",
                        "local-port": 4****,
                        "via": "PPPoE0",
                        "remote": "1**.***.***.**0",
                        "remote-port": 6****,
                        "rxbytes": 17159964,
                        "txbytes": 604356,
                        "last-handshake": 120,
                        "online": true
                    }
                ]
            }
        }
    },
    "prompt": "(config)"
}

Link to comment
Share on other sites

1 час назад, nikomx сказал:

Я, к сожалению, почти ничего не понял из вышесказанного. Тяжелый слог для меня.

Хорошо можно проще.

1. Wireguard клиент уже настроен и работает.

2. Wireguard сервер для удаленных клиентов поднят (нужен белый IP если нет то например SSTP) настроен и работает.

3. Создать профиль и поместить в него канал п.1

4. Прописать одну команду для клиента из п.2

ip rule add from IP table ПРОФИЛЯ

 

Edited by vasek00
Link to comment
Share on other sites

8 минут назад, vasek00 сказал:

Хорошо можно проще.

1. Wireguard клиент уже настроен и работает.

2. Wireguard сервер для удаленных клиентов поднят (нужен белый IP если нет то например SSTP)

3. Создать профиль и поместить в него канал п.1

4. Прописать одну команду для клиента из п.2

 

1. Да, клиента настроен и работает давно, к нему вопросов нет. Настройки интерфейса есть выше. Он называется WARP

2. Настроен, но судя по всему как-то не правильно. Я подключаюсь со смартфона, но почему-то пинги до ip сервера WG со смартфона то идут, то не идут. И в любом случае кроме пингов никуда доступа нет, ни к домашней сети ни в интернет. Провайдера у меня два, оба с белыми ip.

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

4. О какой еще команде идет речь? Её можно прописать из WEB Cli интерфейса? Можете пожалуйста поподробнее этот пункт объяснить, буду очень благодарен )

Link to comment
Share on other sites

21 минуту назад, nikomx сказал:

4. О какой еще команде идет речь? Её можно прописать из WEB Cli интерфейса? Можете пожалуйста поподробнее этот пункт объяснить, буду очень благодарен )

Пуск-выполнить-cmd-telnet 192.168.1.1-admin/pass

ip rule add from IP table name profile
Link to comment
Share on other sites

1 час назад, nikomx сказал:

2. Настроен, но судя по всему как-то не правильно. Я подключаюсь со смартфона, но почему-то пинги до ip сервера WG со смартфона то идут, то не идут. И в любом случае кроме пингов никуда доступа нет, ни к домашней сети ни в интернет. Провайдера у меня два, оба с белыми ip.

В настройках есть поле разрешенные подсети. По конфигу они например выглядят так

allow-ips 10.16.130.6 255.255.255.255 - клиент 
allow-ips 192.168.130.0 255.255.255.0 - сеть роутера
allow-ips 0.0.0.0 0.0.0.0 - все

Возьмите в базе знаний любую статью про Wireguard настройку и про значение данных полей - allow-ips

1 час назад, nikomx сказал:

4. О какой еще команде идет речь? Её можно прописать из WEB Cli интерфейса?

Об одной единственной команде которую нужна для всего этого ее в WEB cli не прописать. Об этом было сказано в моем самом первом посту

В настоящее время одну единственную команду приходиться вводить через Entware - "ip rule add"

Выход из этого самый простой у вас KN1910 на нем легко ставится Entware во внутреннюю память пример с KN1910 ниже

Скрытый текст
KeeneticOS version 4.00.A.4.0-0, copyright (c) 2010-2023 Keenetic Ltd.

Login: admin
Password: ********

THIS SOFTWARE IS A SUBJECT OF KEENETIC LIMITED END-USER LICENCE AGREEMENT. BY USING IT YOU AGREE ON TERMS AND CONDITIONS HEREOF. FOR MORE INFORMATION PLEASE
CHECK https://keenetic.com/legal

(config)> exec sh


BusyBox v1.33.1 (2021-08-22 06:41:01 UTC) built-in shell (ash)

/ # df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                19712     19712         0 100% /
tmpfs                    62320         0     62320   0% /dev
tmpfs                    62320       240     62080   0% /tmp
/dev/ubi0_0              56540     33644     19972  63% /storage
/dev/ubi0_0              56540     33644     19972  63% /opt
/ # 

Как видно выше Entware (/opt) занимает всего то 33644 или 33МB (с учетом того что мне необходимо). После установки Entware тут на форуме описано как его установить, добавить/выполнить потом

opkg install ip-bridge ip-full

После чего нужную выполнить ОДНУ ЕДИНСТВЕННУЮ

ip rule add from IP_Клиента table profile_номер_table

где IP_Клиента - это берется из настроек Wireguard сервера для данного клиента, а profile_номер_teble это номер таблицы для вашего профиля (как его найти написано было ранее, без всяких команд)

Цитата

- по умолчанию в ПО роутера первый профиль получает номер table 42, следующий 43, следующий 44 и т.д.

 

Edited by vasek00
Link to comment
Share on other sites

2 часа назад, vasek00 сказал:

Об одной единственной команде которую нужна для всего этого ее в WEB cli не прописать. Об этом было сказано в моем самом первом посту

В настоящее время одну единственную команду приходиться вводить через Entware - "ip rule add"

Выход из этого самый простой у вас KN1910 на нем легко ставится Entware во внутреннюю память пример с KN1910 ниже

Спасибо Вам большое за терпение и отзывчивость. Простите мое скудоумие в данном вопросе.

У меня все получилось, работает! 

Осталось немного дошлифовать все до идеала.
Проверив, я выяснил, что у меня всего 2 таблицы, 42 и 43 на роутере. 43 как раз с нужным шлюзом, и я прописал маршрут в 43 таблицу, но так же в неё попали почему-то маршруты созданные ранее через web интерфейс, в том числе и openVPN маршруты до моей работы, не хотелось бы что бы они работали для клиентов WG сервера.
Поэтому, подскажите еще, пожалуйста, какой командой можно создать пустую таблицу маршрутизации и прописать основной шлюз в ней nwg2? (что бы затем в неё добавить маршрут для клиентов WG сервера)
Ну и следовательно как удалить прописанный ранее маршрут в 43 таблицу?

Link to comment
Share on other sites

2 часа назад, nikomx сказал:

Спасибо Вам большое за терпение и отзывчивость. Простите мое скудоумие в данном вопросе.

У меня все получилось, работает! 

Осталось немного дошлифовать все до идеала.
Проверив, я выяснил, что у меня всего 2 таблицы, 42 и 43 на роутере. 43 как раз с нужным шлюзом, и я прописал маршрут в 43 таблицу, но так же в неё попали почему-то маршруты созданные ранее через web интерфейс, в том числе и openVPN маршруты до моей работы, не хотелось бы что бы они работали для клиентов WG сервера.
Поэтому, подскажите еще, пожалуйста, какой командой можно создать пустую таблицу маршрутизации и прописать основной шлюз в ней nwg2? (что бы затем в неё добавить маршрут для клиентов WG сервера)
Ну и следовательно как удалить прописанный ранее маршрут в 43 таблицу?

Удалить ранее прописанный в table просто поставить del в место aďd. Я не в курсе что и как и где вы  создавали. По пробуйте дошлифовать так как вам надо, может пересмотрев все настройки заново.

В описанном методе она таблица создается и контролируется ПО роутера, если хотите создавать сами и контролировать ее то тут на форуме куча примеров достаточно в поиске поискать по "ip rule add"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...