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