Здравствуйте, у меня следующий вопрос.
Даны следующие исходные данные (все согласно многочисленным мануалам, форумам и т.д.)
1) 2 канала (шлюза) в инет (ppp0 и ppp1)
2) локальная сеть (eth1)
3) ppp0 шлюз по умолчанию
4) маркирую пакеты (p2p-траффика и pop,smtp)
..._iptables...
#p2p
$IPTABLES -t mangle -A PREROUTING -j CONNMARK --restore-mark
$IPTABLES -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT
$IPTABLES -t mangle -A PREROUTING -m ipp2p --ipp2p -j MARK --set-mark 0x1
$IPTABLES -t mangle -A PREROUTING -m mark --mark 0x1 -j CONNMARK --save-mark
#mail
$IPTABLES -t mangle -A PREROUTING -p tcp -m multiport --dports 25,110 -j MARK --set-mark 0x2
5) делаю переброс их с ppp0 на ppp1
..._iproute...
$RULE add fwmark 0x1 priority 99 table ppp1 #p2p
$RULE add fwmark 0x2 priority 100 table ppp1 #mail$RULE add from $INET_IP_2 priority 101 table ppp1
$RULE add from $INET_IP priority 102 table ppp0
$ROUTE add default via $INET_GW dev $INET_DEV src $INET_IP table ppp0
$ROUTE add default via $INET_GW_2 dev $INET_DEV_2 src $INET_IP_2 table ppp1
$ROUTE flush cache
6)Поднят NAT в iptables
$IPTABLES -t nat -A POSTROUTING -o $INET_DEV -j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -o $INET_DEV_2 -j SNAT --to-source $INET_IP_2
ПРОБЛЕМА: Пакеты почты проходят без проблем на второй канал, а p2p не хотят, хотя в таблицу пакеты попадают и, САМОЕ ИНТЕРЕСНОЕ, программа mtorrent перестает качать вообще.
Объясните пожалуйста порядок прохождения пакета и его возврата в случае использования клиентом в локальной сети (за NAT) p2p сетей (bittorrent например).
Я понимаю так в моем случае сначала цепочка (mangle)PREROUTING(маркируем пакеты)->FORWARD(фильтруем разрешенные пакеты, остальные отбрасываем)->(iproute направляет пакеты в шлюз в зависимости от маркировки)->(nat)POSTROUTING (маскируем пакеты)
НО: может после маркировки пакет попадает в локальный процесс и идет соотвествено по другим цепочкам (по моему чушь, но всякое бывает :))