LINUX.ORG.RU
ФорумAdmin

2 интерфейса, iptables & ip route


0

1

В системе есть 2 интерфейса. Пытаюсь настроить iptables & ip route так, чтобы основной трафик (от локальных приложений) ходил через один интерфейс, а трафик некого класса (пусть пока ICMP) — через другой с помощью этого скрипта:

IF_INET1="interface 1"
IP_INET1="ip address 1"
IF_INET2="interface 2"		# default

# iptables clean
iptables -F
iptables -F -t nat
iptables -F -t raw
iptables -F -t mangle
iptables -F -t filter
iptables -X

# create ip route table T1 (if it's not created yet)
RT_TABLES=/etc/iproute2/rt_tables
if ! cat $RT_TABLES | grep '101 T1' 1>/dev/null 2>&1; then
	echo 101 T1 >> $RT_TABLES
fi

# ip route clean
ip route flush table T1
while ip rule list | grep 'lookup T1' 1>/dev/null 2>&1; do
	ip rule del table T1
done

# iptables
iptables -t mangle -A OUTPUT -p icmp -j MARK --set-mark 10
iptables -t nat -A POSTROUTING -o $IF_INET1 -j SNAT --to-source $IP_INET1

# ip route
ip route add default dev $IF_INET1 table T1
ip rule add fwmark 10 table T1
ip route add default dev $IF_INET2
ip route flush cache

Запускаю пинг. Пинги не идут. Сниффер показывает нормальный обмен пинг-запросами и пинг-ответами. Пинг-ответы не доходят до локальных приложений, они дропаются между таблицами mangle и nat в PREROUTING. Возможно SNAT не хочет нормально работать, но почему? Или проблема в чём-то ещё?

Во первых, у тебя неполная таблица маршрутов T1, должно быть две записи

ip route add $NET_GW/$NETMASK dev $NET_DEV src $DEV_IP table T1

ip route add default via $NET_GW table T1

Во вторых, должно быть правило такого вида

ip rule add from $DEV_IP table T1

иначе пакеты будут рубиться rp_filter'ом (reverse path filter).

В третих, так вообще для локальных соединений работать не будет: нельзя метить локально сгенерированные пакеты в OUTPUT и потом их роутить через fwmark.

anonymous ()
Ответ на: комментарий от anonymous

1,2. не помогло
3. а как можно? как тогда вообще это реализовать?

Mirraz ()

Отключите совсем rp_filter на интерфейсе «interface 1».

Лучше показывайте результат работы скрипта (ip rule; ip route; iptables-save...), чем скрипт, а то не понятно, что у там ещё может быть понаписано, допустим, политики iptables.

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.