Задача: Нужно чтобы icmp echo-request пакеты уходили по второму линку
iptables -t mangle -A PREROUITNG -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p icmp --icmp-type echo-request -o eth1 -j SNAT 130.130.130.130
echo 10 mytable >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table mytable
ip route add default via 130.130.130.131 table mytable (второй канал)В итоге iptraf показывает на внешнем интерфейсе что icmp-request послан и icmp-reply принят, но машине которая за натом этот echo-reply не приходит. Тобишь ядро не делает connection tracking. Почему ?
1. Правильней будет так:ip rule add fwmark 1 table mytable
ip route add 130.130.130.128/29 dev eth1 src 130.130.130.130 table mytable
ip route add default via 130.130.130.131 table mytable2. В FORWARD ответы разрешены?
>1. Правильней будет так:
>
>ip rule add fwmark 1 table mytable
>ip route add 130.130.130.128/29 dev eth1 src 130.130.130.130 table mytable
>ip route add default via 130.130.130.131 table mytable
>
>2. В FORWARD ответы разрешены?В форвард все ACCEPT, тоже самое делаю с tcp траффиком работает, прочитал мануал по иптаблес: ядро расматривает echo-request как состояние NEW а echo-reply как ESTABLISHED
ip route add 130.130.130.128/29 dev eth1 src 130.130.130.130 table mytable - что делает это правило ?
http://gazette.linux.ru.net/rus/articles/lartc/x348.htmlДостаточно было написать хотя бы так:
ip route add default via 130.130.130.131 dev eth1 table mytable
а так ОС не будет знать, где находится 130.130.130.131 и будет искать маршрут еще в таблице main.
Вообщем вопрос остается открытым, как завернуть icmp echo-request на другой канал
Странно, почему tcp работает, а icmp - нет. Если в FORWARD все разрешено, то connection tracking не должен влиять. Покажите все-таки правила.
iptables -nvL
iptables -nvL -t nat
iptables -nvL -t mangle