Jump to content

Recommended Posts

Posted

Добрый день. Какие образом можно реализовать маршрутизацию трафика от конкретного клиента только в  конкретный тоннель, как на энтерпрайз устройствах? То есть необходимо, чтобы трафик устройства 192.168.1.10 (условно) всегда направлялся в тоннель wireguard, а трафик устройства 192.168.1.11 (условно) всегда направлялся в тоннель ipsec

Posted
12 часа назад, baddyt сказал:

Добрый день. Какие образом можно реализовать маршрутизацию трафика от конкретного клиента только в  конкретный тоннель, как на энтерпрайз устройствах? То есть необходимо, чтобы трафик устройства 192.168.1.10 (условно) всегда направлялся в тоннель wireguard, а трафик устройства 192.168.1.11 (условно) всегда направлялся в тоннель ipsec

Поищите посты на данном форуме

Далее необходимы чуток познания в установке Entware + написания скрипта для автом.работы.

 

На пальцах - на роутере создаются профили (в нужный профиль включен нужный канал) -> для каждого профиля создается таблица маршрутизации -> необходимо поместить данного клиента ОН ИМЕЕТ IP в нужную таблицу маршрутизации. Первая часть все делает прошивка, вторая поиск нужной table через WEB-cli (команда "show ip policy" параметры "description": "WG", "mark": "ffffd00", "table4": 42), третья поместить данного клиента в table 42.

Маленькая ремарка - маркировка пакетов для данного профиля создается только тогда когда будет подключен клиент, но можно и все сделать самому написав эти правила маркировки.

Тут на форуме много примеров для использования table маршрутизации.

 

******

Так например пример - на клиенте локальной сети Windows есть приложение например торрент клиент (это приложение, хотя можно и любое другое, Windows настройках оно определяется как имя запуска файла) которое нужно завернуть в нужный нам канал (выхода в интернет) отличный от канала для самого клиента/ Ниже пример когда клиент весь в профиль 0xffffd00 а приложение в профиль 0xffffd01 или можно оставить клиента в основном профиле а приложение в один единственный профиль. Приложение может быть любым например бразур A по одному каналу, а браузер B по другому.

1. Настройки Windows для маркировки пакетов данного приложения (есть в интернете с полным описанием что и как это сделать)

2. Скрипт для роутера будет выглядеть как пример

Скрытый текст
/opt/etc/ndm/netfilter.d -> 100-fwmarks.sh

#!/bin/sh

[ "$table" != "mangle" ] && exit 0

if [ -z "$(iptables-save | grep 'dscp')" ]; then
 iptables -t mangle -I _NDM_HOTSPOT_PRERT -i br0 -s 192.168.1.20/32 -j RETURN
 iptables -t mangle -I _NDM_HOTSPOT_PRERT -i br0 -s 192.168.1.20/32 -j CONNMARK --save-mark 
 iptables -t mangle -I _NDM_HOTSPOT_PRERT -i br0 -s 192.168.1.20/32 -m dscp --dscp 63 -j MARK --set-mark 0xffffd01
 iptables -t mangle -I _NDM_HOTSPOT_PRERT -i br0 -s 192.168.1.20/32 -j MARK --set-mark 0xffffd00
fi
exit 0


Chain _NDM_HOTSPOT_PRERT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 1899  295K MARK       all  --  br0    *       192.168.1.20         0.0.0.0/0            MARK set 0xffffd00
  316 42283 MARK       all  --  br0    *       192.168.1.20         0.0.0.0/0            DSCP match 0x3f MARK set 0xffffd01
 1914  297K CONNMARK   all  --  br0    *       192.168.1.20         0.0.0.0/0            CONNMARK save
 1918  298K RETURN     all  --  br0    *       192.168.1.20         0.0.0.0/0

~ # lsmod | grep dscp
xt_dscp                 1953  1
~ # 

где

-s 192.168.1.20/32 = источник, клиент локальной сети

-m dscp --dscp 63 = пакеты от приложения Windows клиента

--set-mark 0xffffd01 = профиль созданный в ПО роутера и в котором канал выхода в интернет например А

--set-mark 0xffffd00 = профиль созданный в ПО роутера и в котором канал выхода в интернет например B

NDM_HOTSPOT_PRERT = цепочка в которой будет размещены данные правила

В итоге маркированные пакеты будут уходить через нужные table по нужным каналам.

Скрытый текст
show ip policy 


"Policy0": {
            "description": "Cloud",
            "mark": "ffffd00",
            "table4": 42
...
       },
        "Policy1": {
            "description": "In-2",
            "mark": "ffffd01",
            "table4": 43
...
       },
        "Policy2": {
            "description": "Tor",
            "mark": "ffffd02",
            "table4": 44
...

 

 

 

Ваш вопрос для темы развития - так как по моему в ПО для этого уже все имеется.

 

  • Thanks 1
Posted
В 30.07.2023 в 10:10, vasek00 сказал:

Поищите посты на данном форуме

Далее необходимы чуток познания в установке Entware + написания скрипта для автом.работы.

 

На пальцах - на роутере создаются профили (в нужный профиль включен нужный канал) -> для каждого профиля создается таблица маршрутизации -> необходимо поместить данного клиента ОН ИМЕЕТ IP в нужную таблицу маршрутизации. Первая часть все делает прошивка, вторая поиск нужной table через WEB-cli (команда "show ip policy" параметры "description": "WG", "mark": "ffffd00", "table4": 42), третья поместить данного клиента в table 42.

Маленькая ремарка - маркировка пакетов для данного профиля создается только тогда когда будет подключен клиент, но можно и все сделать самому написав эти правила маркировки.

Тут на форуме много примеров для использования table маршрутизации.

 

******

Так например пример - на клиенте локальной сети Windows есть приложение например торрент клиент (это приложение, хотя можно и любое другое, Windows настройках оно определяется как имя запуска файла) которое нужно завернуть в нужный нам канал (выхода в интернет) отличный от канала для самого клиента/ Ниже пример когда клиент весь в профиль 0xffffd00 а приложение в профиль 0xffffd01 или можно оставить клиента в основном профиле а приложение в один единственный профиль. Приложение может быть любым например бразур A по одному каналу, а браузер B по другому.

1. Настройки Windows для маркировки пакетов данного приложения (есть в интернете с полным описанием что и как это сделать)

2. Скрипт для роутера будет выглядеть как пример

  Показать содержимое
/opt/etc/ndm/netfilter.d -> 100-fwmarks.sh

#!/bin/sh

[ "$table" != "mangle" ] && exit 0

if [ -z "$(iptables-save | grep 'dscp')" ]; then
 iptables -t mangle -I _NDM_HOTSPOT_PRERT -i br0 -s 192.168.1.20/32 -j RETURN
 iptables -t mangle -I _NDM_HOTSPOT_PRERT -i br0 -s 192.168.1.20/32 -j CONNMARK --save-mark 
 iptables -t mangle -I _NDM_HOTSPOT_PRERT -i br0 -s 192.168.1.20/32 -m dscp --dscp 63 -j MARK --set-mark 0xffffd01
 iptables -t mangle -I _NDM_HOTSPOT_PRERT -i br0 -s 192.168.1.20/32 -j MARK --set-mark 0xffffd00
fi
exit 0


Chain _NDM_HOTSPOT_PRERT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 1899  295K MARK       all  --  br0    *       192.168.1.20         0.0.0.0/0            MARK set 0xffffd00
  316 42283 MARK       all  --  br0    *       192.168.1.20         0.0.0.0/0            DSCP match 0x3f MARK set 0xffffd01
 1914  297K CONNMARK   all  --  br0    *       192.168.1.20         0.0.0.0/0            CONNMARK save
 1918  298K RETURN     all  --  br0    *       192.168.1.20         0.0.0.0/0

~ # lsmod | grep dscp
xt_dscp                 1953  1
~ # 

где

-s 192.168.1.20/32 = источник, клиент локальной сети

-m dscp --dscp 63 = пакеты от приложения Windows клиента

--set-mark 0xffffd01 = профиль созданный в ПО роутера и в котором канал выхода в интернет например А

--set-mark 0xffffd00 = профиль созданный в ПО роутера и в котором канал выхода в интернет например B

NDM_HOTSPOT_PRERT = цепочка в которой будет размещены данные правила

В итоге маркированные пакеты будут уходить через нужные table по нужным каналам.

  Показать содержимое
show ip policy 


"Policy0": {
            "description": "Cloud",
            "mark": "ffffd00",
            "table4": 42
...
       },
        "Policy1": {
            "description": "In-2",
            "mark": "ffffd01",
            "table4": 43
...
       },
        "Policy2": {
            "description": "Tor",
            "mark": "ffffd02",
            "table4": 44
...

 

 

 

Ваш вопрос для темы развития - так как по моему в ПО для этого уже все имеется.

 

А зачем так сложно? разве это не будет работать просто с профилями как вы и описали, в нужный профиль добавляем зарегистрированного клиента и все, весь трафик идет через него от определенного клиента.

Posted (edited)
29 минут назад, Monstr86 сказал:

А зачем так сложно? разве это не будет работать просто с профилями как вы и описали, в нужный профиль добавляем зарегистрированного клиента и все, весь трафик идет через него от определенного клиента.

В вашем вопросе есть вводная - весь трафик идет через него

В описанном случае выше клиент один 192.168.1.100 но он хочет :

1. для приложения ААААААА выход через канал - например инет1

2. остальные приложения пустить через канал - например инет2

все это на одном клиенте

 

Попробуйте удаленного клиента который подключен к роутеру по VPN каналу - добавьте его в нужный профиль.

Edited by vasek00
Posted
10 минут назад, vasek00 сказал:

В вашем вопросе есть вводная - весь трафик идет через него

В описанном случае выше клиент один 192.168.1.100 но он хочет :

1. для приложения ААААААА выход через канал - например инет1

2. остальные приложения пустить через канал - например инет2

все это на одном клиенте

 

Попробуйте удаленного клиента который подключен к роутеру по VPN каналу - добавьте его в нужный профиль.

Да нет же, почитайте Топик стартера :) там четко написано про два разных устройства.

В 29.07.2023 в 21:01, baddyt сказал:

Добрый день. Какие образом можно реализовать маршрутизацию трафика от конкретного клиента только в  конкретный тоннель, как на энтерпрайз устройствах? То есть необходимо, чтобы трафик устройства 192.168.1.10 (условно) всегда направлялся в тоннель wireguard, а трафик устройства 192.168.1.11 (условно) всегда направлялся в тоннель ipsec

вот

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...

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.