Здравствуйте!Помогите, пожалуйста, уже сил нет.
Ни как не пойму что я делаю не так.Задача: пропускать пакеты, помеченные как 10 через провайдера tel.
Конфиг iptables:
###
NET_LOCAL="192.168.9.0/24" # локальная сеть.$i -t mangle -A PREROUTING -s 192.168.9.37 -d ! $NET_LOCAL -j MARK --set-mark 10 # Метим все пакеты, идущие с локального ПК 192.168.9.37
$i -t nat -A POSTROUTING -m mark --mark 10 -j MASQUERADE # Маскарадим все пакеты, которые имеют метку 10
$i -t nat -A POSTROUTING -s 192.168.9.0/24 -j MASQUERADE
$i -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
### КонецКонфиг iproute2:
###
ip route add default via 81.231.7.211 dev eth2 table tel
ip route add 127.0.0.0/8 dev lo table tel # Loopback 1ip route add default via 143.12.217.142 dev eth1 table centel
ip route add 127.0.0.0/8 dev lo table centel # Loopback 2# Устанавливаем шлюз по умолчанию (143.12.217.142 - centel, 81.231.7.211 - tel)
ip route add default via 143.12.217.142 # centel gateway as default GW# Устанавливаем правила для внешних IP, пускаем "себя" через нужные шлюзы:
ip ru add from 143.12.217.143 table centel
ip ru add from 81.231.7.212 table telip ru add fwmark 10 table tel # Пускаем пакеты с меткой 10 через tel
#### Конец-------------
В общем, как только я добавляю правило в iproute2, Интернет на машине 192.168.9.37 перестает работать.
traceroute с этой машины показывает, что пакеты доходят до шлюза нужного провайдера и дальше не идут.Помогите, пожалуйста, решить проблему.
Такое чувство, что после fwmark перестает работать маскарадинг.
В общем, решил проблему.Нужно было отключить rp_filter на всех интерфейсах:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter