baddyt Posted July 29, 2023 Share Posted July 29, 2023 Добрый день. Какие образом можно реализовать маршрутизацию трафика от конкретного клиента только в конкретный тоннель, как на энтерпрайз устройствах? То есть необходимо, чтобы трафик устройства 192.168.1.10 (условно) всегда направлялся в тоннель wireguard, а трафик устройства 192.168.1.11 (условно) всегда направлялся в тоннель ipsec Quote Link to comment Share on other sites More sharing options...
vasek00 Posted July 30, 2023 Share Posted July 30, 2023 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 ... Ваш вопрос для темы развития - так как по моему в ПО для этого уже все имеется. 1 Quote Link to comment Share on other sites More sharing options...
Monstr86 Posted August 2, 2023 Share Posted August 2, 2023 В 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 ... Ваш вопрос для темы развития - так как по моему в ПО для этого уже все имеется. А зачем так сложно? разве это не будет работать просто с профилями как вы и описали, в нужный профиль добавляем зарегистрированного клиента и все, весь трафик идет через него от определенного клиента. Quote Link to comment Share on other sites More sharing options...
vasek00 Posted August 2, 2023 Share Posted August 2, 2023 (edited) 29 минут назад, Monstr86 сказал: А зачем так сложно? разве это не будет работать просто с профилями как вы и описали, в нужный профиль добавляем зарегистрированного клиента и все, весь трафик идет через него от определенного клиента. В вашем вопросе есть вводная - весь трафик идет через него В описанном случае выше клиент один 192.168.1.100 но он хочет : 1. для приложения ААААААА выход через канал - например инет1 2. остальные приложения пустить через канал - например инет2 все это на одном клиенте Попробуйте удаленного клиента который подключен к роутеру по VPN каналу - добавьте его в нужный профиль. Edited August 2, 2023 by vasek00 Quote Link to comment Share on other sites More sharing options...
Monstr86 Posted August 2, 2023 Share Posted August 2, 2023 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 вот Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.