Хочу, чтобы UDP пакеты из локальной сети натились на сервере через сетевой интерфейс out1. Локальная сеть имеет адрес $LIP. Интерфейс out1 имеет реальный ip $RIP1. За интерфейсом out1 есть шлюз $GIP1 и это не шлюз по умолчанию. Шлюз по умолчанию имеет адрес $GIP0 и доступен через интерфейс out0, адрес интерфейса $RIP0. Делаю так: 1.iptables -t mangle -A PREROUTING -s $LIP -p udp -j MARK --set-mark 0x1 2.iptables -t nat -A POSTROUTING -s $LIP -p udp -j SNAT --to-source $RIP1 3.iptables -t mangle -A OUTPUT -s $RIP1 -j MARK --set-mark 0x1 4.echo 0 >/proc/sys/net/ipv4/conf/out1/rp_filter 5.ip route add default via $GIP1 table 1 6.ip rule add fwmark 0x1 lookup 1 После этого udp пакеты совсем никуда из сервера не уходят. Если п.1 отменить, пакеты появляются на интерфейсе out0 от адреса $RIP1. То есть SNAT работает.
На сервере работает squid и он в зависимости от запрошенного контента, выбирает себе выходной IP. Чтобы пакеты перенаправлялись в другой интерфейс добавлен п.3. Пакеты от sauid-а ходят правильно, через нужные интерфейсы и с нужными адресами. То есть маршрутизация по условию тоже работает. Почему UDP совсем никуда не уходят? Что надо сделать чтобы работала маршрутизация для UDP из локальной сети?