Прошу совета.
Есть такая задача. У меня локальная сеть 192.168.0.0/24. Есть роутер он же шлюз в интернет - 192,168,0,1.
Есть в сети комп с Debian 12. На нем интерфейсы enp3s0 (192.168.0.10) и подключение к vpn tun0 (10.8.0.2 со шлюзом 10,8,0,1). На нем же развернул dnsmasq.
У клиентов в качестве шлюза и днс указываю 192,168,0,10 .
Необходимо траффик до некоторых хостов заворачивать на vpn. Хосты прописываю в ipset.
Вот написал скрипт. Идея такая: Маркирую определенные пакеты (для определенных хостов) приходящие на интерфейс enp3s0; Потом заворачиваю только маркированные пакеты в tun0, остальные отправляю на шлюз 192,168,0,1. Но так нечего не работает. И не пойму почему. Очень прошу помощи и совета.
Код скрипта. Так ничего не работает:
Код: Выделить всё
#!/bin/bash
# Настройки
VPN_GATE="10.8.0.1"
VPN_IFACE="tun0"
LOCAL_GW="192.168.0.1"
IPSET_NAME="vpn_sites"
# Создание ipset для хранения IP-адресов
ipset create $IPSET_NAME hash:ip
ipset add $IPSET_NAME (xx.xx.xx.xx тут мой хост)
# Настройка маркировки пакетов для трафика через VPN
iptables -t mangle -N VPN_MANGLE
iptables -t mangle -A VPN_MANGLE -m set --match-set $IPSET_NAME dst -j MARK --set-mark 1
iptables -t mangle -A VPN_MANGLE -j RETURN
# Применение маркировки к входящему трафику
iptables -t mangle -A PREROUTING -j VPN_MANGLE
# Настройка маршрутизации на основе меток
ip rule add fwmark 1 table 500
ip route add default via $VPN_GATE table 500
ip route flush cache
# Остановка маршрутизации для остального трафика
ip route add default via $LOCAL_GW
# Установка правил на iptables для принятия и маршрутизации трафика
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m mark --mark 1 -j ACCEPT
# Разрешить локальный трафик
iptables -A INPUT -i $VPN_IFACE -j ACCEPT
iptables -A INPUT -i enp3s0 -j ACCEPT
iptables -A OUTPUT -o $VPN_IFACE -j ACCEPT
iptables -t nat -A POSTROUTING -o $VPN_IFACE -m mark --mark 1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
то весь траффик уходит на tun0.
Вот мой выводы ip route:
Код: Выделить всё
ip route
0.0.0.0/1 via 10.8.0.1 dev tun0
default via 192.168.0.1 dev enp3s0 onlink
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
xx.xx.xx.xx (адрес моего белого впн сервера) via 192.168.0.1 dev enp3s0
128.0.0.0/1 via 10.8.0.1 dev tun0
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-f8fe3b6cfc9a proto kernel scope link src 172.18.0.1
172.20.0.0/16 dev br-b9d7b22bfcfb proto kernel scope link src 172.20.0.1 linkdown
192.168.0.0/24 dev enp3s0 proto kernel scope link src 192.168.0.10
ip rule
0: from all lookup local
32765: from all fwmark 0x1 lookup 500
32766: from all lookup main
32767: from all lookup default
ip route show table 500
default via 10.8.0.1 dev tun0
Очень нужная помощь. Хотя бы подсказкой. Спасибо большое за внимание.