1

У меня есть небольшая программа, которая должна делать разные вещи с выбором пакетов, основываясь на различных правилах iptable. Эти пакеты MARK эд следующим образом:

iptables -t mangle -d 10.10.0.0/16 -j MARK --set-mark 4
iptables -t mangle -d 10.11.0.0/24 -j MARK --set-mark 5
iptables -t mangle -d 10.0.0.1     -j MARK --set-mark 1

У меня также есть устройство Tun с именем maintun , на котором процесс пользовательского пространства выполняет некоторые операции ввода-вывода.

Как мне обеспечить, чтобы затронутые пакеты отправлялись в / через maintun?

1 ответ1

3

Вы используете политику маршрутизации.

Сначала вы пометите несколько пакетов,

 iptables -A PREROUTING -t mangle -d 10.0.0.1 -j MARK --set-mark 1

затем вы создаете новую таблицу маршрутизации, называете ее TunRoutTable:

 echo 201 TunRoutTable >> /etc/iproute2/rt_tables

затем вы говорите своему компьютеру использовать таблицу TunRoutTable для пакетов, помеченных 1:

 ip rule add fwmark 1 table TunRoutTable

и теперь вы предоставляете шлюз по умолчанию для новой таблицы маршрутизации:

 ip route add default via XXX.YYY.WWW.ZZZ dev tun0 table TunRoutTable

где XXX.YY.WWW.ZZZ - это IP-адрес (в обычной четырехточечной нотации) вашего шлюза на интерфейсе Tun0.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .