Jump to content

Маршрутизация от клиента в тоннель


Recommended Posts

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

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

 

 

 

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

 

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

Link to comment
Share on other sites

29 минут назад, Monstr86 сказал:

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

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

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

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

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

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

 

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

Edited by vasek00
Link to comment
Share on other sites

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

вот

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